mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 19:54:40 +02:00
@@ -16,5 +16,6 @@ include IDE/OPENSTM32/include.am
|
|||||||
include IDE/VS-ARM/include.am
|
include IDE/VS-ARM/include.am
|
||||||
include IDE/GCC-ARM/include.am
|
include IDE/GCC-ARM/include.am
|
||||||
include IDE/CSBENCH/include.am
|
include IDE/CSBENCH/include.am
|
||||||
|
include IDE/mynewt/include.am
|
||||||
|
|
||||||
EXTRA_DIST+= IDE/IAR-EWARM IDE/MDK-ARM IDE/MDK5-ARM IDE/MYSQL IDE/LPCXPRESSO IDE/HEXIWEAR
|
EXTRA_DIST+= IDE/IAR-EWARM IDE/MDK-ARM IDE/MDK5-ARM IDE/MYSQL IDE/LPCXPRESSO IDE/HEXIWEAR
|
||||||
|
71
IDE/mynewt/README.md
Normal file
71
IDE/mynewt/README.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
Apache Mynewt Port
|
||||||
|
=============
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This port is for Apache Mynewt available [here](https://mynewt.apache.org/).
|
||||||
|
|
||||||
|
It provides follows mynewt packages.
|
||||||
|
|
||||||
|
- crypto/wolfssl
|
||||||
|
- wolfssl library
|
||||||
|
- apps/wolfcrypttest
|
||||||
|
- wolfcrypt unit test application
|
||||||
|
|
||||||
|
## How to setup
|
||||||
|
|
||||||
|
### delopy wolfssl source to mynewt project
|
||||||
|
Specify the path of the mynewt project and execute `wolfssl/IDE/mynewt/setup.sh`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./IDE/mynewt/setup.sh /path/to/myproject_path
|
||||||
|
```
|
||||||
|
|
||||||
|
This script will deploy wolfssl's mynewt package described in the Overview to the mynewt project.
|
||||||
|
|
||||||
|
## Customization
|
||||||
|
### logging
|
||||||
|
|
||||||
|
To enable logging, please append `-DDEBUG_WOLFSSL` to `crypto.wolfssl.pkg.yml`(or `/path/to/myproject_path/crypto/wolfssl/pkg.yml`) in `pkg.cflags:` and inject dependency of mynewt log modules.
|
||||||
|
|
||||||
|
mynewt/crypto.wolfssl.pkg.yml
|
||||||
|
```yaml
|
||||||
|
pkg.req_apis:
|
||||||
|
...
|
||||||
|
- log
|
||||||
|
- stats
|
||||||
|
- console
|
||||||
|
pkg.cflags: -DWOLFSSL_APACHE_MYNEWT ... -DDEBUG_WOLFSSL
|
||||||
|
```
|
||||||
|
|
||||||
|
Please add `wolfSSL_Debugging_ON()` to application code.
|
||||||
|
|
||||||
|
When it executes application, display tty device for output display devices.
|
||||||
|
please confirm with the `cat /dev/ttysXXX` command or `kermit` or `screen`.
|
||||||
|
|
||||||
|
## example setting example applications to targets
|
||||||
|
|
||||||
|
This section eplains how to set wolfssl example application to target device.
|
||||||
|
|
||||||
|
Please execute follows commands at only once.
|
||||||
|
|
||||||
|
create wolfcrypttest_sim that is simulator device for unit test of wolfcrypt.
|
||||||
|
|
||||||
|
```
|
||||||
|
cd /path/to/myproject_path
|
||||||
|
newt target create wolfcrypttest_sim
|
||||||
|
newt target set wolfcrypttest_sim app=apps/wolfcrypttest
|
||||||
|
newt target set wolfcrypttest_sim bsp=@apache-mynewt-core/hw/bsp/native
|
||||||
|
newt target set wolfcrypttest_sim build_profile=debug
|
||||||
|
```
|
||||||
|
|
||||||
|
## build & test
|
||||||
|
|
||||||
|
build and execute wolfcrypttest_sim
|
||||||
|
|
||||||
|
```
|
||||||
|
newt clean wolfcrypttest_sim
|
||||||
|
newt build wolfcrypttest_sim
|
||||||
|
./bin/targets/wolfcrypttest_sim/app/apps/wolfcrypttest/wolfcrypttest.elf
|
||||||
|
```
|
||||||
|
|
31
IDE/mynewt/apps.wolfcrypttest.pkg.yml
Normal file
31
IDE/mynewt/apps.wolfcrypttest.pkg.yml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Copyright (C) 2018 wolfSSL Inc.
|
||||||
|
#
|
||||||
|
# This file is part of wolfSSL.
|
||||||
|
#
|
||||||
|
# wolfSSL is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# wolfSSL is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||||
|
#
|
||||||
|
|
||||||
|
pkg.name: "apps/wolfcrypttest"
|
||||||
|
pkg.type: app
|
||||||
|
pkg.description: "wolfCrypt Test Application"
|
||||||
|
pkg.author: "wolfSSL <info@wolfssl.com>"
|
||||||
|
pkg.homepage: "https://www.wolfssl.com"
|
||||||
|
pkg.keywords:
|
||||||
|
pkg.deps:
|
||||||
|
- crypto/wolfssl
|
||||||
|
- "@apache-mynewt-core/kernel/os"
|
||||||
|
- "@apache-mynewt-core/sys/console/full"
|
||||||
|
|
||||||
|
pkg.cflags: -DWOLFSSL_APACHE_MYNEWT -Icrypto/wolfssl/src -Wno-error -DNO_FILESYSTEM -DWOLFSSL_IGNORE_FILE_WARN
|
30
IDE/mynewt/crypto.wolfssl.pkg.yml
Normal file
30
IDE/mynewt/crypto.wolfssl.pkg.yml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Copyright (C) 2018 wolfSSL Inc.
|
||||||
|
#
|
||||||
|
# This file is part of wolfSSL.
|
||||||
|
#
|
||||||
|
# wolfSSL is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# wolfSSL is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||||
|
#
|
||||||
|
|
||||||
|
pkg.name: "crypto/wolfssl"
|
||||||
|
pkg.description: "wolfSSL Embedded SSL/TLS Library"
|
||||||
|
pkg.author: "wolfSSL<info@wolfssl.com>"
|
||||||
|
pkg.homepage: "https://www.wolfssl.com"
|
||||||
|
pkg.keywords:
|
||||||
|
|
||||||
|
pkg.deps:
|
||||||
|
- "@apache-mynewt-core/net/ip/mn_socket"
|
||||||
|
|
||||||
|
|
||||||
|
pkg.cflags: -DWOLFSSL_APACHE_MYNEWT -DNO_FILESYSTEM -Wno-error -DHAVE_TLS_EXTENSIONS -DHAVE_SUPPORTED_CURVES # -DDEBUG_WOLFSSL -DWOLFSSL_IGNORE_FILE_WARN
|
5
IDE/mynewt/crypto.wolfssl.syscfg.yml
Normal file
5
IDE/mynewt/crypto.wolfssl.syscfg.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
syscfg.defs:
|
||||||
|
WOLFSSL_MNSOCK_MEM_BUF_COUNT:
|
||||||
|
value: 10
|
||||||
|
WOLFSSL_MNSOCK_MEM_BUF_SIZE:
|
||||||
|
value: 2048
|
10
IDE/mynewt/include.am
Normal file
10
IDE/mynewt/include.am
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# vim:ft=automake
|
||||||
|
# included from Top Level Makefile.am
|
||||||
|
# All paths should be given relative to the root
|
||||||
|
|
||||||
|
EXTRA_DIST+= IDE/mynewt/README.md
|
||||||
|
EXTRA_DIST+= IDE/mynewt/apps.wolfcrypttest.pkg.yml
|
||||||
|
EXTRA_DIST+= IDE/mynewt/crypto.wolfssl.pkg.yml
|
||||||
|
EXTRA_DIST+= IDE/mynewt/crypto.wolfssl.syscfg.yml
|
||||||
|
EXTRA_DIST+= IDE/mynewt/setup.sh
|
||||||
|
|
73
IDE/mynewt/setup.sh
Executable file
73
IDE/mynewt/setup.sh
Executable file
@@ -0,0 +1,73 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# this scrypt deploy wolfssl and wolfcrypto source code to mynewt project
|
||||||
|
# run as bash "mynewt project root directory path"
|
||||||
|
|
||||||
|
SCRIPTDIR=`dirname $0`
|
||||||
|
SCRIPTDIR=`cd $SCRIPTDIR && pwd -P`
|
||||||
|
WOLFSSL_MYNEWTDIR=${SCRIPTDIR}
|
||||||
|
WOLFSSL_MYNEWTDIR=`cd $WOLFSSL_MYNEWTDIR && pwd -P`
|
||||||
|
BASEDIR=${SCRIPTDIR}/../..
|
||||||
|
BASEDIR=`cd ${BASEDIR} && pwd -P`
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "Usage: $0 'mynewt project root directory path'" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
MYNEWT_PROJECT=$1
|
||||||
|
|
||||||
|
if [ ! -d $MYNEWT_PROJECT ] || [ ! -f $MYNEWT_PROJECT/project.yml ]; then
|
||||||
|
echo "target directory is not mynewt project.: $MYNEWT_PROJECT"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create wolfssl pkgs to mynewt project
|
||||||
|
pushd $MYNEWT_PROJECT > /dev/null
|
||||||
|
echo "create crypto/wolfssl pkg"
|
||||||
|
/bin/rm -rf crypto/wolfssl
|
||||||
|
newt pkg new crypto/wolfssl
|
||||||
|
/bin/rm -rf crypto/wolfssl/include
|
||||||
|
/bin/mkdir -p crypto/wolfssl/include
|
||||||
|
/bin/rm -rf crypto/wolfssl/src
|
||||||
|
/bin/mkdir -p crypto/wolfssl/src
|
||||||
|
|
||||||
|
echo "create apps/wolfcrypttest pkg"
|
||||||
|
/bin/rm -rf apps/wolfcrypttest
|
||||||
|
newt pkg new -t app apps/wolfcrypttest
|
||||||
|
/bin/rm -rf apps/wolfcrypttest/include
|
||||||
|
/bin/rm -rf apps/wolfcrypttest/src
|
||||||
|
/bin/mkdir -p apps/wolfcrypttest/src
|
||||||
|
|
||||||
|
popd > /dev/null # $MYNEWT_PROJECT
|
||||||
|
|
||||||
|
# deploy source files and pkg
|
||||||
|
pushd $BASEDIR > /dev/null
|
||||||
|
|
||||||
|
# deploy to crypto/wolfssl
|
||||||
|
echo "deploy wolfssl sources to crypto/wolfssl"
|
||||||
|
/bin/cp $WOLFSSL_MYNEWTDIR/crypto.wolfssl.pkg.yml $MYNEWT_PROJECT/crypto/wolfssl/pkg.yml
|
||||||
|
/bin/cp $WOLFSSL_MYNEWTDIR/crypto.wolfssl.syscfg.yml $MYNEWT_PROJECT/crypto/wolfssl/syscfg.yml
|
||||||
|
|
||||||
|
/bin/mkdir -p $MYNEWT_PROJECT/crypto/wolfssl/src/src
|
||||||
|
/bin/cp ./src/*.c $MYNEWT_PROJECT/crypto/wolfssl/src/src
|
||||||
|
|
||||||
|
/bin/mkdir -p $MYNEWT_PROJECT/crypto/wolfssl/src/wolfcrypt/src
|
||||||
|
/bin/cp ./wolfcrypt/src/*.asm $MYNEWT_PROJECT/crypto/wolfssl/src/wolfcrypt/src
|
||||||
|
/bin/cp ./wolfcrypt/src/*.c $MYNEWT_PROJECT/crypto/wolfssl/src/wolfcrypt/src
|
||||||
|
/bin/mkdir -p $MYNEWT_PROJECT/crypto/wolfssl/src/wolfcrypt/src/port/mynewt
|
||||||
|
/bin/cp ./wolfcrypt/src/port/mynewt/* $MYNEWT_PROJECT/crypto/wolfssl/src/wolfcrypt/src/port/mynewt
|
||||||
|
|
||||||
|
/bin/mkdir -p $MYNEWT_PROJECT/crypto/wolfssl/include/wolfssl
|
||||||
|
/bin/cp -r wolfssl/* $MYNEWT_PROJECT/crypto/wolfssl/include/wolfssl/
|
||||||
|
|
||||||
|
# deploy to apps/wolfcrypttest
|
||||||
|
echo "deploy unit test sources to apps/wolfcrypttest"
|
||||||
|
/bin/cp $WOLFSSL_MYNEWTDIR/apps.wolfcrypttest.pkg.yml $MYNEWT_PROJECT/apps/wolfcrypttest/pkg.yml
|
||||||
|
|
||||||
|
/bin/mkdir -p $MYNEWT_PROJECT/apps/wolfcrypttest/include/wolfcrypt/test
|
||||||
|
/bin/cp -r wolfcrypt/test/test.h $MYNEWT_PROJECT/apps/wolfcrypttest/include/wolfcrypt/test/
|
||||||
|
|
||||||
|
/bin/mkdir -p $MYNEWT_PROJECT/apps/wolfcrypttest/src
|
||||||
|
/bin/cp wolfcrypt/test/test.c $MYNEWT_PROJECT/apps/wolfcrypttest/src/main.c
|
||||||
|
|
||||||
|
popd > /dev/null # $BASEDIR
|
@@ -1416,6 +1416,9 @@ int InitSSL_Ctx(WOLFSSL_CTX* ctx, WOLFSSL_METHOD* method, void* heap)
|
|||||||
#ifdef HAVE_NETX
|
#ifdef HAVE_NETX
|
||||||
ctx->CBIORecv = NetX_Receive;
|
ctx->CBIORecv = NetX_Receive;
|
||||||
ctx->CBIOSend = NetX_Send;
|
ctx->CBIOSend = NetX_Send;
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP)
|
||||||
|
ctx->CBIORecv = Mynewt_Receive;
|
||||||
|
ctx->CBIOSend = Mynewt_Send;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_NTRU
|
#ifdef HAVE_NTRU
|
||||||
@@ -4540,6 +4543,13 @@ int InitSSL(WOLFSSL* ssl, WOLFSSL_CTX* ctx, int writeDup)
|
|||||||
#ifdef HAVE_NETX
|
#ifdef HAVE_NETX
|
||||||
ssl->IOCB_ReadCtx = &ssl->nxCtx; /* default NetX IO ctx, same for read */
|
ssl->IOCB_ReadCtx = &ssl->nxCtx; /* default NetX IO ctx, same for read */
|
||||||
ssl->IOCB_WriteCtx = &ssl->nxCtx; /* and write */
|
ssl->IOCB_WriteCtx = &ssl->nxCtx; /* and write */
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP)
|
||||||
|
ssl->mnCtx = mynewt_ctx_new();
|
||||||
|
if(!ssl->mnCtx) {
|
||||||
|
return MEMORY_E;
|
||||||
|
}
|
||||||
|
ssl->IOCB_ReadCtx = ssl->mnCtx; /* default Mynewt IO ctx, same for read */
|
||||||
|
ssl->IOCB_WriteCtx = ssl->mnCtx; /* and write */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* initialize states */
|
/* initialize states */
|
||||||
@@ -5125,6 +5135,12 @@ void SSL_ResourceFree(WOLFSSL* ssl)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif /* HAVE_TLS_EXTENSIONS */
|
#endif /* HAVE_TLS_EXTENSIONS */
|
||||||
|
#if defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP)
|
||||||
|
if (ssl->mnCtx) {
|
||||||
|
mynewt_ctx_clear(ssl->mnCtx);
|
||||||
|
ssl->mnCtx = NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#ifdef HAVE_NETX
|
#ifdef HAVE_NETX
|
||||||
if (ssl->nxCtx.nxPacket)
|
if (ssl->nxCtx.nxPacket)
|
||||||
nx_packet_release(ssl->nxCtx.nxPacket);
|
nx_packet_release(ssl->nxCtx.nxPacket);
|
||||||
@@ -6132,6 +6148,17 @@ ProtocolVersion MakeDTLSv1_2(void)
|
|||||||
/* returns number of 10ms ticks, so 100 ticks/sec */
|
/* returns number of 10ms ticks, so 100 ticks/sec */
|
||||||
return NU_Retrieve_Clock() / NU_TICKS_PER_SECOND;
|
return NU_Retrieve_Clock() / NU_TICKS_PER_SECOND;
|
||||||
}
|
}
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
|
||||||
|
#include "os/os_time.h"
|
||||||
|
word32 LowResTimer(void)
|
||||||
|
{
|
||||||
|
word32 now;
|
||||||
|
struct os_timeval tv;
|
||||||
|
os_gettimeofday(&tv, NULL);
|
||||||
|
now = (word32)tv.tv_sec;
|
||||||
|
return now;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/* Posix style time */
|
/* Posix style time */
|
||||||
|
210
src/wolfio.c
210
src/wolfio.c
@@ -1852,4 +1852,214 @@ int MicriumGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
|
|||||||
|
|
||||||
#endif /* MICRIUM */
|
#endif /* MICRIUM */
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP)
|
||||||
|
|
||||||
|
#include <os/os_error.h>
|
||||||
|
#include <os/os_mbuf.h>
|
||||||
|
#include <os/os_mempool.h>
|
||||||
|
|
||||||
|
#define MB_NAME "wolfssl_mb"
|
||||||
|
|
||||||
|
typedef struct Mynewt_Ctx {
|
||||||
|
struct mn_socket *mnSocket; /* send/recv socket handler */
|
||||||
|
struct mn_sockaddr_in mnSockAddrIn; /* socket address */
|
||||||
|
struct os_mbuf *mnPacket; /* incoming packet handle
|
||||||
|
for short reads */
|
||||||
|
int reading; /* reading flag */
|
||||||
|
|
||||||
|
/* private */
|
||||||
|
void *mnMemBuffer; /* memory buffer for mempool */
|
||||||
|
struct os_mempool mnMempool; /* mempool */
|
||||||
|
struct os_mbuf_pool mnMbufpool; /* mbuf pool */
|
||||||
|
} Mynewt_Ctx;
|
||||||
|
|
||||||
|
void mynewt_ctx_clear(void *ctx) {
|
||||||
|
Mynewt_Ctx *mynewt_ctx = (Mynewt_Ctx*)ctx;
|
||||||
|
if(!mynewt_ctx) return;
|
||||||
|
|
||||||
|
if(mynewt_ctx->mnPacket) {
|
||||||
|
os_mbuf_free_chain(mynewt_ctx->mnPacket);
|
||||||
|
mynewt_ctx->mnPacket = NULL;
|
||||||
|
}
|
||||||
|
os_mempool_clear(&mynewt_ctx->mnMempool);
|
||||||
|
XFREE(mynewt_ctx->mnMemBuffer, 0, 0);
|
||||||
|
XFREE(mynewt_ctx, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return Mynewt_Ctx instance */
|
||||||
|
void* mynewt_ctx_new() {
|
||||||
|
int rc = 0;
|
||||||
|
Mynewt_Ctx *mynewt_ctx = NULL;
|
||||||
|
int mem_buf_count = MYNEWT_VAL(WOLFSSL_MNSOCK_MEM_BUF_COUNT);;
|
||||||
|
int mem_buf_size = MYNEWT_VAL(WOLFSSL_MNSOCK_MEM_BUF_SIZE);
|
||||||
|
int mempool_bytes = OS_MEMPOOL_BYTES(mem_buf_count, mem_buf_size);
|
||||||
|
|
||||||
|
mynewt_ctx = (Mynewt_Ctx *)XMALLOC(sizeof(struct Mynewt_Ctx),
|
||||||
|
NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
if(!mynewt_ctx) return NULL;
|
||||||
|
|
||||||
|
XMEMSET(mynewt_ctx, 0, sizeof(Mynewt_Ctx));
|
||||||
|
mynewt_ctx->mnMemBuffer = XMALLOC(mempool_bytes, 0, 0);
|
||||||
|
if(!mynewt_ctx->mnMemBuffer) {
|
||||||
|
mynewt_ctx_clear((void*)mynewt_ctx);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = os_mempool_init(&mynewt_ctx->mnMempool,
|
||||||
|
mem_buf_count, mem_buf_size,
|
||||||
|
mynewt_ctx->mnMemBuffer, MB_NAME);
|
||||||
|
if(rc != 0) {
|
||||||
|
mynewt_ctx_clear((void*)mynewt_ctx);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
rc = os_mbuf_pool_init(&mynewt_ctx->mnMbufpool, &mynewt_ctx->mnMempool,
|
||||||
|
mem_buf_count, mem_buf_size);
|
||||||
|
if(rc != 0) {
|
||||||
|
mynewt_ctx_clear((void*)mynewt_ctx);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mynewt_ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mynewt_sock_writable(void *arg, int err);
|
||||||
|
static void mynewt_sock_readable(void *arg, int err);
|
||||||
|
static const union mn_socket_cb mynewt_sock_cbs = {
|
||||||
|
.socket.writable = mynewt_sock_writable,
|
||||||
|
.socket.readable = mynewt_sock_readable,
|
||||||
|
};
|
||||||
|
static void mynewt_sock_writable(void *arg, int err)
|
||||||
|
{
|
||||||
|
/* do nothing */
|
||||||
|
}
|
||||||
|
static void mynewt_sock_readable(void *arg, int err)
|
||||||
|
{
|
||||||
|
Mynewt_Ctx *mynewt_ctx = (Mynewt_Ctx *)arg;
|
||||||
|
if (err && mynewt_ctx->reading) {
|
||||||
|
mynewt_ctx->reading = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The Mynewt receive callback
|
||||||
|
* return : bytes read, or error
|
||||||
|
*/
|
||||||
|
int Mynewt_Receive(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
||||||
|
{
|
||||||
|
Mynewt_Ctx *mynewt_ctx = (Mynewt_Ctx*)ctx;
|
||||||
|
int rc = 0;
|
||||||
|
struct mn_sockaddr_in from;
|
||||||
|
struct os_mbuf *m;
|
||||||
|
int read_sz = 0;
|
||||||
|
uint16_t total;
|
||||||
|
|
||||||
|
if (mynewt_ctx == NULL || mynewt_ctx->mnSocket == NULL) {
|
||||||
|
WOLFSSL_MSG("Mynewt Recv NULL parameters");
|
||||||
|
return WOLFSSL_CBIO_ERR_GENERAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mynewt_ctx->mnPacket == NULL) {
|
||||||
|
mynewt_ctx->mnPacket = os_mbuf_get_pkthdr(&mynewt_ctx->mnMbufpool, 0);
|
||||||
|
if(mynewt_ctx->mnPacket == NULL) {
|
||||||
|
return MEMORY_E;
|
||||||
|
}
|
||||||
|
|
||||||
|
mynewt_ctx->reading = 1;
|
||||||
|
while(mynewt_ctx->reading && rc == 0) {
|
||||||
|
rc = mn_recvfrom(mynewt_ctx->mnSocket, &m, (struct mn_sockaddr *) &from);
|
||||||
|
if(rc == MN_ECONNABORTED) {
|
||||||
|
rc = 0;
|
||||||
|
mynewt_ctx->reading = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!(rc == 0 || rc == MN_EAGAIN)) {
|
||||||
|
WOLFSSL_MSG("Mynewt Recv receive error");
|
||||||
|
mynewt_ctx->reading = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(rc == 0) {
|
||||||
|
int len = OS_MBUF_PKTLEN(m);
|
||||||
|
if(len == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
rc = os_mbuf_appendfrom(mynewt_ctx->mnPacket, m, 0, len);
|
||||||
|
if(rc != 0) {
|
||||||
|
WOLFSSL_MSG("Mynewt Recv os_mbuf_appendfrom error");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
os_mbuf_free_chain(m);
|
||||||
|
m = NULL;
|
||||||
|
} else if(rc == MN_EAGAIN) {
|
||||||
|
/* continue to until reading all of packet data. */
|
||||||
|
rc = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(rc != 0) {
|
||||||
|
mynewt_ctx->reading = 0;
|
||||||
|
os_mbuf_free_chain(mynewt_ctx->mnPacket);
|
||||||
|
mynewt_ctx->mnPacket = NULL;
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mynewt_ctx->mnPacket) {
|
||||||
|
total = OS_MBUF_PKTLEN(mynewt_ctx->mnPacket);
|
||||||
|
read_sz = (total >= sz)? sz : total;
|
||||||
|
|
||||||
|
os_mbuf_copydata(mynewt_ctx->mnPacket, 0, read_sz, (void*)buf);
|
||||||
|
os_mbuf_adj(mynewt_ctx->mnPacket, read_sz);
|
||||||
|
|
||||||
|
if (read_sz == total) {
|
||||||
|
WOLFSSL_MSG("Mynewt Recv Drained packet");
|
||||||
|
os_mbuf_free_chain(mynewt_ctx->mnPacket);
|
||||||
|
mynewt_ctx->mnPacket = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return read_sz;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The Mynewt send callback
|
||||||
|
* return : bytes sent, or error
|
||||||
|
*/
|
||||||
|
int Mynewt_Send(WOLFSSL* ssl, char *buf, int sz, void *ctx)
|
||||||
|
{
|
||||||
|
Mynewt_Ctx *mynewt_ctx = (Mynewt_Ctx*)ctx;
|
||||||
|
int rc = 0;
|
||||||
|
struct os_mbuf *m = NULL;
|
||||||
|
int write_sz = 0;
|
||||||
|
m = os_msys_get_pkthdr(sz, 0);
|
||||||
|
if (!m) {
|
||||||
|
WOLFSSL_MSG("Mynewt Send os_msys_get_pkthdr error");
|
||||||
|
return WOLFSSL_CBIO_ERR_GENERAL;
|
||||||
|
}
|
||||||
|
rc = os_mbuf_copyinto(m, 0, buf, sz);
|
||||||
|
if (rc != 0) {
|
||||||
|
WOLFSSL_MSG("Mynewt Send os_mbuf_copyinto error");
|
||||||
|
os_mbuf_free_chain(m);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
rc = mn_sendto(mynewt_ctx->mnSocket, m, (struct mn_sockaddr *)&mynewt_ctx->mnSockAddrIn);
|
||||||
|
if(rc != 0) {
|
||||||
|
WOLFSSL_MSG("Mynewt Send mn_sendto error");
|
||||||
|
os_mbuf_free_chain(m);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
write_sz = sz;
|
||||||
|
return write_sz;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* like set_fd, but for default NetX context */
|
||||||
|
void wolfSSL_SetIO_Mynewt(WOLFSSL* ssl, struct mn_socket* mnSocket, struct mn_sockaddr_in* mnSockAddrIn)
|
||||||
|
{
|
||||||
|
if (ssl && ssl->mnCtx) {
|
||||||
|
Mynewt_Ctx *mynewt_ctx = (Mynewt_Ctx *)ssl->mnCtx;
|
||||||
|
mynewt_ctx->mnSocket = mnSocket;
|
||||||
|
memcpy(&mynewt_ctx->mnSockAddrIn, mnSockAddrIn, sizeof(struct mn_sockaddr_in));
|
||||||
|
mn_socket_set_cbs(mynewt_ctx->mnSocket, mnSocket, &mynewt_sock_cbs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP) */
|
||||||
|
|
||||||
#endif /* WOLFCRYPT_ONLY */
|
#endif /* WOLFCRYPT_ONLY */
|
||||||
|
@@ -117,6 +117,11 @@ static WC_INLINE double current_time(int reset)
|
|||||||
static wolfSSL_Logging_cb log_function = NULL;
|
static wolfSSL_Logging_cb log_function = NULL;
|
||||||
static int loggingEnabled = 0;
|
static int loggingEnabled = 0;
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
#include "log/log.h"
|
||||||
|
static struct log mynewt_log;
|
||||||
|
#endif /* WOLFSSL_APACHE_MYNEWT */
|
||||||
|
|
||||||
#endif /* DEBUG_WOLFSSL */
|
#endif /* DEBUG_WOLFSSL */
|
||||||
|
|
||||||
|
|
||||||
@@ -137,6 +142,9 @@ int wolfSSL_Debugging_ON(void)
|
|||||||
{
|
{
|
||||||
#ifdef DEBUG_WOLFSSL
|
#ifdef DEBUG_WOLFSSL
|
||||||
loggingEnabled = 1;
|
loggingEnabled = 1;
|
||||||
|
#if defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
log_register("wolfcrypt", &mynewt_log, &log_console_handler, NULL, LOG_SYSLEVEL);
|
||||||
|
#endif /* WOLFSSL_APACHE_MYNEWT */
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
return NOT_COMPILED_IN;
|
return NOT_COMPILED_IN;
|
||||||
@@ -237,6 +245,8 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
|
|||||||
#elif defined(MQX_USE_IO_OLD)
|
#elif defined(MQX_USE_IO_OLD)
|
||||||
fprintf(_mqxio_stderr, "%s\n", logMessage);
|
fprintf(_mqxio_stderr, "%s\n", logMessage);
|
||||||
|
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
LOG_DEBUG(&mynewt_log, LOG_MODULE_DEFAULT, "%s\n", logMessage);
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, "%s\n", logMessage);
|
fprintf(stderr, "%s\n", logMessage);
|
||||||
#endif
|
#endif
|
||||||
|
147
wolfcrypt/src/port/mynewt/mynewt_port.c
Normal file
147
wolfcrypt/src/port/mynewt/mynewt_port.c
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
/* mynewt_port.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2018 wolfSSL Inc.
|
||||||
|
*
|
||||||
|
* This file is part of wolfSSL.
|
||||||
|
*
|
||||||
|
* wolfSSL is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* wolfSSL is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
#ifndef NO_FILESYSTEM
|
||||||
|
#include "fs/fs.h"
|
||||||
|
#define FILE struct fs_file
|
||||||
|
|
||||||
|
FILE* mynewt_fopen(const char * restrict path, const char * restrict mode)
|
||||||
|
{
|
||||||
|
FILE *file;
|
||||||
|
uint8_t access_flags = 0;
|
||||||
|
const char *p = mode;
|
||||||
|
while(*p != '\0') {
|
||||||
|
switch(*p) {
|
||||||
|
case 'r':
|
||||||
|
{
|
||||||
|
access_flags |= FS_ACCESS_READ;
|
||||||
|
if(*(p+1) == '+') {
|
||||||
|
access_flags |= FS_ACCESS_WRITE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'w':
|
||||||
|
{
|
||||||
|
access_flags |= (FS_ACCESS_WRITE | FS_ACCESS_TRUNCATE);
|
||||||
|
if(*(p+1) == '+') {
|
||||||
|
access_flags |= FS_ACCESS_READ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'a':
|
||||||
|
{
|
||||||
|
access_flags |= (FS_ACCESS_WRITE | FS_ACCESS_APPEND);
|
||||||
|
if(*(p+1) == '+') {
|
||||||
|
access_flags |= FS_ACCESS_READ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open the file for reading. */
|
||||||
|
int rc = fs_open(path, access_flags, &file);
|
||||||
|
if (rc != 0) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mynewt_fseek(FILE *stream, long offset, int whence)
|
||||||
|
{
|
||||||
|
uint32_t fs_offset;
|
||||||
|
|
||||||
|
switch(whence) {
|
||||||
|
case 0: /* SEEK_SET */
|
||||||
|
{
|
||||||
|
fs_offset += offset;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: /* SEEK_CUR */
|
||||||
|
{
|
||||||
|
fs_offset = fs_getpos(stream);
|
||||||
|
fs_offset += offset;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: /* SEEK_END */
|
||||||
|
{
|
||||||
|
fs_filelen(stream, &fs_offset);
|
||||||
|
fs_offset += offset;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
fs_seek(stream, fs_offset);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
long mynewt_ftell(FILE *stream)
|
||||||
|
{
|
||||||
|
uint32_t fs_offset;
|
||||||
|
fs_filelen(stream, &fs_offset);
|
||||||
|
fs_seek(stream, fs_offset);
|
||||||
|
return (long)fs_offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mynewt_rewind(FILE *stream)
|
||||||
|
{
|
||||||
|
fs_seek(stream, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t mynewt_fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream)
|
||||||
|
{
|
||||||
|
size_t to_read = size * nitems;
|
||||||
|
uint32_t read_size;
|
||||||
|
int rc = fs_read(stream, to_read, ptr, &read_size);
|
||||||
|
if(rc != 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (size_t)read_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t mynewt_fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream)
|
||||||
|
{
|
||||||
|
size_t to_write = size * nitems;
|
||||||
|
size_t write_size;
|
||||||
|
int rc = fs_write(stream, ptr, to_write);
|
||||||
|
if(rc != 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return to_write;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mynewt_fclose(FILE *stream)
|
||||||
|
{
|
||||||
|
fs_close(stream);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* NO_FILESYSTEM*/
|
||||||
|
#endif /* if defined(WOLFSSL_APACHE_MYNEWT) */
|
@@ -1907,6 +1907,25 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "os/os_time.h"
|
||||||
|
int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
srand(os_time_get());
|
||||||
|
|
||||||
|
for (i = 0; i < sz; i++ ) {
|
||||||
|
output[i] = rand() % 256;
|
||||||
|
if ((i % 8) == 7) {
|
||||||
|
srand(os_time_get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#elif defined(CUSTOM_RAND_GENERATE_BLOCK)
|
#elif defined(CUSTOM_RAND_GENERATE_BLOCK)
|
||||||
/* #define CUSTOM_RAND_GENERATE_BLOCK myRngFunc
|
/* #define CUSTOM_RAND_GENERATE_BLOCK myRngFunc
|
||||||
* extern int myRngFunc(byte* output, word32 sz);
|
* extern int myRngFunc(byte* output, word32 sz);
|
||||||
|
@@ -1324,6 +1324,22 @@ time_t windows_time(time_t* timer)
|
|||||||
}
|
}
|
||||||
#endif /* _WIN32_WCE */
|
#endif /* _WIN32_WCE */
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
#include "os/os_time.h"
|
||||||
|
|
||||||
|
time_t mynewt_time(time_t* timer)
|
||||||
|
{
|
||||||
|
time_t now;
|
||||||
|
struct os_timeval tv;
|
||||||
|
os_gettimeofday(&tv, NULL);
|
||||||
|
now = (time_t)tv.tv_sec;
|
||||||
|
if(timer != NULL) {
|
||||||
|
*timer = now;
|
||||||
|
}
|
||||||
|
return now;
|
||||||
|
}
|
||||||
|
#endif /* WOLFSSL_APACHE_MYNEWT */
|
||||||
|
|
||||||
#if defined(WOLFSSL_GMTIME)
|
#if defined(WOLFSSL_GMTIME)
|
||||||
struct tm* gmtime(const time_t* timer)
|
struct tm* gmtime(const time_t* timer)
|
||||||
{
|
{
|
||||||
|
@@ -175,6 +175,15 @@
|
|||||||
#include "fsl_debug_console.h"
|
#include "fsl_debug_console.h"
|
||||||
#undef printf
|
#undef printf
|
||||||
#define printf PRINTF
|
#define printf PRINTF
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
#include <assert.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "sysinit/sysinit.h"
|
||||||
|
#include "os/os.h"
|
||||||
|
#ifdef ARCH_sim
|
||||||
|
#include "mcu/mcu_sim.h"
|
||||||
|
#endif
|
||||||
|
#include "os/os_time.h"
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -1008,6 +1017,22 @@ initDefaultName();
|
|||||||
int ret;
|
int ret;
|
||||||
func_args args;
|
func_args args;
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_APACHE_MYNEWT
|
||||||
|
#ifdef ARCH_sim
|
||||||
|
mcu_sim_parse_args(argc, argv);
|
||||||
|
#endif
|
||||||
|
sysinit();
|
||||||
|
|
||||||
|
/* set dummy wallclock time. */
|
||||||
|
struct os_timeval utctime;
|
||||||
|
struct os_timezone tz;
|
||||||
|
utctime.tv_sec = 1521725159; /* dummy time: 2018-03-22T13:25:59+00:00 */
|
||||||
|
utctime.tv_usec = 0;
|
||||||
|
tz.tz_minuteswest = 0;
|
||||||
|
tz.tz_dsttime = 0;
|
||||||
|
os_settimeofday(&utctime, &tz);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_WNR
|
#ifdef HAVE_WNR
|
||||||
if (wc_InitNetRandom(wnrConfigFile, NULL, 5000) != 0) {
|
if (wc_InitNetRandom(wnrConfigFile, NULL, 5000) != 0) {
|
||||||
err_sys("Whitewood netRandom global config failed", -1002);
|
err_sys("Whitewood netRandom global config failed", -1002);
|
||||||
|
@@ -161,6 +161,11 @@
|
|||||||
#include <rt.h>
|
#include <rt.h>
|
||||||
#elif defined(WOLFSSL_NUCLEUS_1_2)
|
#elif defined(WOLFSSL_NUCLEUS_1_2)
|
||||||
/* do nothing */
|
/* do nothing */
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
#if !defined(WOLFSSL_LWIP)
|
||||||
|
void mynewt_ctx_clear(void *ctx);
|
||||||
|
void* mynewt_ctx_new();
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#ifndef SINGLE_THREADED
|
#ifndef SINGLE_THREADED
|
||||||
#define WOLFSSL_PTHREADS
|
#define WOLFSSL_PTHREADS
|
||||||
@@ -3426,7 +3431,6 @@ typedef struct DtlsMsg {
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Handshake messages received from peer (plus change cipher */
|
/* Handshake messages received from peer (plus change cipher */
|
||||||
typedef struct MsgsReceived {
|
typedef struct MsgsReceived {
|
||||||
word16 got_hello_request:1;
|
word16 got_hello_request:1;
|
||||||
@@ -3763,6 +3767,9 @@ struct WOLFSSL {
|
|||||||
#ifdef HAVE_NETX
|
#ifdef HAVE_NETX
|
||||||
NetX_Ctx nxCtx; /* NetX IO Context */
|
NetX_Ctx nxCtx; /* NetX IO Context */
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP)
|
||||||
|
void* mnCtx; /* mynewt mn_socket IO Context */
|
||||||
|
#endif /* defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP) */
|
||||||
#ifdef SESSION_INDEX
|
#ifdef SESSION_INDEX
|
||||||
int sessionIndex; /* Session's location in the cache. */
|
int sessionIndex; /* Session's location in the cache. */
|
||||||
#endif
|
#endif
|
||||||
|
@@ -169,6 +169,9 @@
|
|||||||
/* Uncomment next line if building for Nucleus 1.2 */
|
/* Uncomment next line if building for Nucleus 1.2 */
|
||||||
/* #define WOLFSSL_NUCLEUS_1_2 */
|
/* #define WOLFSSL_NUCLEUS_1_2 */
|
||||||
|
|
||||||
|
/* Uncomment next line if building for using Apache mynewt */
|
||||||
|
/* #define WOLFSSL_APACHE_MYNEWT */
|
||||||
|
|
||||||
#include <wolfssl/wolfcrypt/visibility.h>
|
#include <wolfssl/wolfcrypt/visibility.h>
|
||||||
|
|
||||||
#ifdef WOLFSSL_USER_SETTINGS
|
#ifdef WOLFSSL_USER_SETTINGS
|
||||||
@@ -1239,6 +1242,41 @@ extern void uITRON4_free(void *p) ;
|
|||||||
#endif
|
#endif
|
||||||
#endif /*(WOLFSSL_XILINX_CRYPT)*/
|
#endif /*(WOLFSSL_XILINX_CRYPT)*/
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
#include "os/os_malloc.h"
|
||||||
|
#if !defined(WOLFSSL_LWIP)
|
||||||
|
#include <mn_socket/mn_socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(SIZEOF_LONG)
|
||||||
|
#define SIZEOF_LONG 4
|
||||||
|
#endif
|
||||||
|
#if !defined(SIZEOF_LONG_LONG)
|
||||||
|
#define SIZEOF_LONG_LONG 8
|
||||||
|
#endif
|
||||||
|
#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
||||||
|
#define BIG_ENDIAN_ORDER
|
||||||
|
#else
|
||||||
|
#undef BIG_ENDIAN_ORDER
|
||||||
|
#define LITTLE_ENDIAN_ORDER
|
||||||
|
#endif
|
||||||
|
#define NO_WRITEV
|
||||||
|
#define WOLFSSL_USER_IO
|
||||||
|
#define SINGLE_THREADED
|
||||||
|
#define NO_DEV_RANDOM
|
||||||
|
#define NO_DH
|
||||||
|
#define NO_WOLFSSL_DIR
|
||||||
|
#define NO_ERROR_STRINGS
|
||||||
|
#define HAVE_ECC
|
||||||
|
#define NO_SESSION_CACHE
|
||||||
|
#define NO_ERROR_STRINGS
|
||||||
|
#define XMALLOC_USER
|
||||||
|
#define XMALLOC(sz, heap, type) os_malloc(sz)
|
||||||
|
#define XREALLOC(p, sz, heap, type) os_realloc(p, sz)
|
||||||
|
#define XFREE(p, heap, type) os_free(p)
|
||||||
|
|
||||||
|
#endif /*(WOLFSSL_APACHE_MYNEWT)*/
|
||||||
|
|
||||||
#ifdef WOLFSSL_IMX6
|
#ifdef WOLFSSL_IMX6
|
||||||
#ifndef SIZEOF_LONG_LONG
|
#ifndef SIZEOF_LONG_LONG
|
||||||
#define SIZEOF_LONG_LONG 8
|
#define SIZEOF_LONG_LONG 8
|
||||||
|
@@ -102,6 +102,8 @@
|
|||||||
#define NU_DEBUG
|
#define NU_DEBUG
|
||||||
#include "plus/nucleus.h"
|
#include "plus/nucleus.h"
|
||||||
#include "nucleus.h"
|
#include "nucleus.h"
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
/* do nothing */
|
||||||
#else
|
#else
|
||||||
#ifndef SINGLE_THREADED
|
#ifndef SINGLE_THREADED
|
||||||
#define WOLFSSL_PTHREADS
|
#define WOLFSSL_PTHREADS
|
||||||
@@ -292,6 +294,20 @@ WOLFSSL_API int wolfCrypt_Cleanup(void);
|
|||||||
#define XFCLOSE fclose
|
#define XFCLOSE fclose
|
||||||
#define XSEEK_END PSEEK_END
|
#define XSEEK_END PSEEK_END
|
||||||
#define XBADFILE NULL
|
#define XBADFILE NULL
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
#include <fs/fs.h>
|
||||||
|
#define XFILE struct fs_file*
|
||||||
|
|
||||||
|
#define XFOPEN mynewt_fopen
|
||||||
|
#define XFSEEK mynewt_fseek
|
||||||
|
#define XFTELL mynewt_ftell
|
||||||
|
#define XREWIND mynewt_rewind
|
||||||
|
#define XFREAD mynewt_fread
|
||||||
|
#define XFWRITE mynewt_fwrite
|
||||||
|
#define XFCLOSE mynewt_fclose
|
||||||
|
#define XSEEK_END 2
|
||||||
|
#define XBADFILE NULL
|
||||||
|
#define XFGETS(b,s,f) -2 /* Not ported yet */
|
||||||
#else
|
#else
|
||||||
/* stdio, default case */
|
/* stdio, default case */
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -437,6 +453,12 @@ WOLFSSL_API int wolfCrypt_Cleanup(void);
|
|||||||
#define XTIME(t1) windows_time((t1))
|
#define XTIME(t1) windows_time((t1))
|
||||||
#define WOLFSSL_GMTIME
|
#define WOLFSSL_GMTIME
|
||||||
|
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
|
#include "os/os_time.h"
|
||||||
|
#define XTIME(t1) mynewt_time((t1))
|
||||||
|
#define WOLFSSL_GMTIME
|
||||||
|
#define USE_WOLF_TM
|
||||||
|
#define USE_WOLF_TIME_T
|
||||||
#else
|
#else
|
||||||
/* default */
|
/* default */
|
||||||
/* uses complete <time.h> facility */
|
/* uses complete <time.h> facility */
|
||||||
|
@@ -52,7 +52,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef USE_WINDOWS_API
|
#ifndef USE_WINDOWS_API
|
||||||
#ifdef WOLFSSL_LWIP
|
#if defined(WOLFSSL_LWIP) && !defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
/* lwIP needs to be configured to use sockets API in this mode */
|
/* lwIP needs to be configured to use sockets API in this mode */
|
||||||
/* LWIP_SOCKET 1 in lwip/opt.h or in build */
|
/* LWIP_SOCKET 1 in lwip/opt.h or in build */
|
||||||
#include "lwip/sockets.h"
|
#include "lwip/sockets.h"
|
||||||
@@ -107,6 +107,8 @@
|
|||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#elif defined(WOLFSSL_SGX)
|
#elif defined(WOLFSSL_SGX)
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#elif defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP)
|
||||||
|
#include <mn_socket/mn_socket.h>
|
||||||
#elif !defined(WOLFSSL_NO_SOCK)
|
#elif !defined(WOLFSSL_NO_SOCK)
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@@ -243,7 +245,7 @@
|
|||||||
int net_recv(int, void*, int, unsigned int);
|
int net_recv(int, void*, int, unsigned int);
|
||||||
#define SEND_FUNCTION net_send
|
#define SEND_FUNCTION net_send
|
||||||
#define RECV_FUNCTION net_recv
|
#define RECV_FUNCTION net_recv
|
||||||
#elif defined(WOLFSSL_LWIP)
|
#elif defined(WOLFSSL_LWIP) && !defined(WOLFSSL_APACHE_MYNEWT)
|
||||||
#define SEND_FUNCTION lwip_send
|
#define SEND_FUNCTION lwip_send
|
||||||
#define RECV_FUNCTION lwip_recv
|
#define RECV_FUNCTION lwip_recv
|
||||||
#elif defined(WOLFSSL_PICOTCP)
|
#elif defined(WOLFSSL_PICOTCP)
|
||||||
@@ -414,6 +416,13 @@ WOLFSSL_API void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags);
|
|||||||
WOLFSSL_LOCAL int MicriumSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx);
|
WOLFSSL_LOCAL int MicriumSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx);
|
||||||
#endif /* MICRIUM */
|
#endif /* MICRIUM */
|
||||||
|
|
||||||
|
#if defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP)
|
||||||
|
WOLFSSL_LOCAL int Mynewt_Receive(WOLFSSL *ssl, char *buf, int sz, void *ctx);
|
||||||
|
WOLFSSL_LOCAL int Mynewt_Send(WOLFSSL* ssl, char *buf, int sz, void *ctx);
|
||||||
|
WOLFSSL_API void wolfSSL_SetIO_Mynewt(WOLFSSL* ssl, struct mn_socket* mnSocket,
|
||||||
|
struct mn_sockaddr_in* mnSockAddrIn);
|
||||||
|
#endif /* defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP) */
|
||||||
|
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
typedef int (*CallbackGenCookie)(WOLFSSL* ssl, unsigned char* buf, int sz,
|
typedef int (*CallbackGenCookie)(WOLFSSL* ssl, unsigned char* buf, int sz,
|
||||||
void* ctx);
|
void* ctx);
|
||||||
|
Reference in New Issue
Block a user