From 0c2199084e4adc085c1054f82020b2904b126aa4 Mon Sep 17 00:00:00 2001 From: Jacob Barthelmeh Date: Thu, 31 May 2018 15:04:44 -0600 Subject: [PATCH 1/3] single threaded wolfcrypt only Nucleus port --- IDE/CSBENCH/.cproject | 182 ++++++++++++++++++++++++++++++++++++ IDE/CSBENCH/.project | 33 +++++++ IDE/CSBENCH/include.am | 8 ++ IDE/CSBENCH/user_settings.h | 22 +++++ IDE/include.am | 1 + wolfcrypt/src/random.c | 16 ++++ wolfcrypt/src/wc_port.c | 3 +- wolfssl/wolfcrypt/wc_port.h | 5 +- 8 files changed, 267 insertions(+), 3 deletions(-) create mode 100644 IDE/CSBENCH/.cproject create mode 100644 IDE/CSBENCH/.project create mode 100644 IDE/CSBENCH/include.am create mode 100644 IDE/CSBENCH/user_settings.h diff --git a/IDE/CSBENCH/.cproject b/IDE/CSBENCH/.cproject new file mode 100644 index 000000000..ee9bc012b --- /dev/null +++ b/IDE/CSBENCH/.cproject @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IDE/CSBENCH/.project b/IDE/CSBENCH/.project new file mode 100644 index 000000000..f3da8d955 --- /dev/null +++ b/IDE/CSBENCH/.project @@ -0,0 +1,33 @@ + + + wolfcrypt + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + src + 2 + PARENT-2-PROJECT_LOC../wolfcrypt + + + diff --git a/IDE/CSBENCH/include.am b/IDE/CSBENCH/include.am new file mode 100644 index 000000000..2f9241596 --- /dev/null +++ b/IDE/CSBENCH/include.am @@ -0,0 +1,8 @@ +# vim:ft=automake +# included from Top Level Makefile.am +# All paths should be given relative to the root + +EXTRA_DIST+= IDE/CSBENCH/.project +EXTRA_DIST+= IDE/CSBENCH/.cproject +EXTRA_DIST+= IDE/CSBENCH/user_settings.h + diff --git a/IDE/CSBENCH/user_settings.h b/IDE/CSBENCH/user_settings.h new file mode 100644 index 000000000..428d26df8 --- /dev/null +++ b/IDE/CSBENCH/user_settings.h @@ -0,0 +1,22 @@ +#ifndef WOLFSSL_CSBENCH_H +#define WOLFSSL_CSBENCH_H + +/* wolfSSL settings */ +#define WOLFCRYPT_ONLY +#define USE_FAST_MATH +#define TFM_TIMING_RESISTANT +#define WC_RSA_BLINDING + +#define SINGLE_THREADED +#define HAVE_AESGCM +#define NO_ASN_TIME + +#define HAVE_ECC +#define ECC_TIMING_RESISTANT +#define WOLFSSL_NUCLEUS + +/* wolfSSH settings */ +#define WOLFSSH_SFTP +//#define DEBUG_WOLFSSH + +#endif diff --git a/IDE/include.am b/IDE/include.am index ebea79b3c..84f49290f 100644 --- a/IDE/include.am +++ b/IDE/include.am @@ -13,5 +13,6 @@ include IDE/INTIME-RTOS/include.am include IDE/OPENSTM32/include.am include IDE/VS-ARM/include.am include IDE/GCC-ARM/include.am +include IDE/CSBENCH/include.am EXTRA_DIST+= IDE/IAR-EWARM IDE/MDK-ARM IDE/MDK5-ARM IDE/MYSQL IDE/LPCXPRESSO IDE/HEXIWEAR diff --git a/wolfcrypt/src/random.c b/wolfcrypt/src/random.c index 92234de52..4f6e5c951 100644 --- a/wolfcrypt/src/random.c +++ b/wolfcrypt/src/random.c @@ -1499,7 +1499,23 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) return 0; } +#elif defined(WOLFSSL_NUCLEUS) +#include "nucleus.h" +#include "kernel/plus_common.h" +int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) +{ + int i; + srand(NU_Get_Time_Stamp()); + for (i = 0; i < sz; i++ ) { + output[i] = rand() % 256; + if ((i % 8) == 7) { + srand(NU_Get_Time_Stamp()); + } + } + + return 0; +} #elif defined(WOLFSSL_VXWORKS) #include diff --git a/wolfcrypt/src/wc_port.c b/wolfcrypt/src/wc_port.c index 9b2868be0..ab1d1e73d 100644 --- a/wolfcrypt/src/wc_port.c +++ b/wolfcrypt/src/wc_port.c @@ -220,7 +220,8 @@ int wolfCrypt_Cleanup(void) return ret; } -#if !defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR) +#if !defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR) && \ + !defined(WOLFSSL_NUCLEUS) /* File Handling Helpers */ /* returns 0 if file found, -1 if no files or negative error */ diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index de4f8d9e5..7a9aaf055 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -291,7 +291,8 @@ WOLFSSL_API int wolfCrypt_Cleanup(void); #define XBADFILE NULL #define XFGETS fgets - #if !defined(USE_WINDOWS_API) && !defined(NO_WOLFSSL_DIR) + #if !defined(USE_WINDOWS_API) && !defined(NO_WOLFSSL_DIR)\ + && !defined(WOLFSSL_NUCLEUS) #include #include #include @@ -305,7 +306,7 @@ WOLFSSL_API int wolfCrypt_Cleanup(void); #define MAX_PATH 256 #endif -#if !defined(NO_WOLFSSL_DIR) +#if !defined(NO_WOLFSSL_DIR) && !defined(WOLFSSL_NUCLEUS) typedef struct ReadDirCtx { #ifdef USE_WINDOWS_API WIN32_FIND_DATAA FindFileData; From 1cc6042f01db1e4cc9756abf522c124cf8fb24f7 Mon Sep 17 00:00:00 2001 From: Jacob Barthelmeh Date: Thu, 31 May 2018 15:27:37 -0600 Subject: [PATCH 2/3] exlude unneeded files with Nucleus build --- IDE/CSBENCH/.cproject | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/IDE/CSBENCH/.cproject b/IDE/CSBENCH/.cproject index ee9bc012b..ce3f41cde 100644 --- a/IDE/CSBENCH/.cproject +++ b/IDE/CSBENCH/.cproject @@ -73,7 +73,7 @@ - + @@ -153,7 +153,7 @@ - + @@ -179,4 +179,5 @@ + From b90fa909ef82179f8b83196f386005f1950d48dc Mon Sep 17 00:00:00 2001 From: Jacob Barthelmeh Date: Fri, 15 Jun 2018 11:40:05 -0600 Subject: [PATCH 3/3] add warning for source of entropy --- wolfcrypt/src/random.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wolfcrypt/src/random.c b/wolfcrypt/src/random.c index 4f6e5c951..0a9bafbb7 100644 --- a/wolfcrypt/src/random.c +++ b/wolfcrypt/src/random.c @@ -1502,6 +1502,8 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) #elif defined(WOLFSSL_NUCLEUS) #include "nucleus.h" #include "kernel/plus_common.h" + +#warning "potential for not enough entropy, currently being used for testing" int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) { int i;