diff --git a/IDE/Renesas/cs+/Projects/common/user_settings.h b/IDE/Renesas/cs+/Projects/common/user_settings.h index 9e03cd375..a1507c808 100644 --- a/IDE/Renesas/cs+/Projects/common/user_settings.h +++ b/IDE/Renesas/cs+/Projects/common/user_settings.h @@ -41,8 +41,11 @@ #define HAVE_TLS_EXTENSIONS #define HAVE_SUPPORTED_CURVES -#define USER_TIME -#define XTIME time +/* #define USER_TIME */ +/* #define XTIME time */ +#define TIME_OVERRIDES +#define HAVE_TM_TYPE +#define HAVE_TIME_T_TYPE #define USE_WOLF_SUSECONDS_T #define USE_WOLF_TIMEVAL_T @@ -55,7 +58,8 @@ #define WC_RSA_BLINDING #define SINGLE_THREADED /* or define RTOS option */ -/* #define WOLFSSL_CMSIS_RTOS */ +/* #undef SINGLE_THREADED */ +/*#define WOLFSSL_CMSIS_RTOS */ /* #define NO_DH */ #define HAVE_AESGCM @@ -66,5 +70,42 @@ #define HAVE_ED25519 #define NO_OLD_SHA256_NAMES -#define NO_WOLFSSL_STUB -#define WOLFSSL_SHA384 \ No newline at end of file +/*#define NO_WOLFSSL_STUB*/ +#define WOLFSSL_SHA384 +#define HAVE_CRL + +/* Platform */ +#define RI600V4 + +/* Server Renegotiate */ +#define WOLFSSL_SERVER_RENEGOTIATION +#define HAVE_SERVER_RENEGOTIATION_INFO + +#if defined(TIME_OVERRIDES) && defined(HAVE_TM_TYPE) && defined(HAVE_TIME_T_TYPE) + /* #include "time_mng.h" */ + + #define time_t Time_t + #define WOLFSSL_GMTIME + #define XGTIME gmtime + #define XTIME user_time + + struct tm { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_yday; + }; +#endif + +#define HAVE_STUNNEL +#define KEEP_OUR_CERT + +#ifdef NO_ASN +#undef NO_ASN +#endif + +#define WOLFSSL_GETENV_RANDFILE "randfile" +#define WOLFSSL_GETENV_HOME "envhome" diff --git a/IDE/Renesas/cs+/Projects/common/wolfssl_dummy.c b/IDE/Renesas/cs+/Projects/common/wolfssl_dummy.c index 636d51266..ff3c29d1e 100644 --- a/IDE/Renesas/cs+/Projects/common/wolfssl_dummy.c +++ b/IDE/Renesas/cs+/Projects/common/wolfssl_dummy.c @@ -19,7 +19,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA */ -typedef unsigned long time_t; +#include "../common/user_settings.h" +#include "../../../../../wolfssl/wolfcrypt/types.h" + +//typedef unsigned long time_t; #define YEAR 2018 #define MON 5 @@ -39,3 +42,12 @@ int strncasecmp(const char *s1, const char * s2, unsigned int sz) return 1; return 0; } + +char* getenv(const char *env) +{ + if (XSTRNCMP(env, "RANDFILE", 9) == 0) + return WOLFSSL_GETENV_RANDFILE; + else if (XSTRNCMP(env, "HOME", 5) == 0) + return WOLFSSL_GETENV_HOME; + else return 0; +} \ No newline at end of file diff --git a/src/ssl.c b/src/ssl.c index fcbf7765d..69bcf2043 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -32193,12 +32193,11 @@ void wolfSSL_ERR_load_crypto_strings(void) return; } -#ifndef NO_WOLFSSL_STUB unsigned long wolfSSL_ERR_peek_last_error(void) { WOLFSSL_ENTER("wolfSSL_ERR_peek_last_error"); -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) +#if defined(OPENSSL_EXTRA) || defined(WOLFSSL_NGINX) { int ret; @@ -32214,7 +32213,7 @@ unsigned long wolfSSL_ERR_peek_last_error(void) return (unsigned long)(0 - NOT_COMPILED_IN); #endif } -#endif +/* Remove ifdef */ #ifndef NO_WOLFSSL_STUB int wolfSSL_FIPS_mode(void) @@ -34211,4 +34210,35 @@ int wolfSSL_i2c_ASN1_INTEGER(WOLFSSL_ASN1_INTEGER *a, unsigned char **pp) } #endif /* !NO_ASN */ -#endif /* OPENSSLEXTRA */ +#ifndef NO_CERT +int wolfSSL_X509_CA_num(WOLFSSL_X509_STORE* store) +{ + int i = 0; + int cnt_ret = 0; + Signer **table; + + WOLFSSL_ENTER("wolfSSL_X509_CA_num"); + if (store == NULL || store->cm == NULL){ + WOLFSSL_MSG("invalid parameter"); + return WOLFSSL_FAILURE; + } + + table = store->cm->caTable; + if (table){ + if (wc_LockMutex(&store->cm->caLock) == 0){ + for (i = 0; i < CA_TABLE_SIZE; i++) { + Signer* signer = table[i]; + while (signer) { + Signer* next = signer->next; + cnt_ret++; + signer = next; + } + } + wc_UnLockMutex(&store->cm->caLock); + } + } + + return cnt_ret; +} +#endif /* !NO_CERT */ +#endif /* OPENSSL_EXTRA */ diff --git a/tests/api.c b/tests/api.c index e209011a8..f28ac27ae 100644 --- a/tests/api.c +++ b/tests/api.c @@ -19700,15 +19700,11 @@ static void test_wolfSSL_ASN1_TIME_to_generalizedtime(void){ t->data[1] = ASN_UTC_TIME_SIZE; XMEMCPY(t->data + 2,"050727123456Z",ASN_UTC_TIME_SIZE); -<<<<<<< HEAD - AssertNotNull(gtime = wolfSSL_ASN1_TIME_to_generalizedtime(t, &out)); -======= tlen = wolfSSL_ASN1_TIME_get_length(t); AssertIntEQ(tlen, ASN_UTC_TIME_SIZE); wolfSSL_ASN1_TIME_get_data(t,data); AssertStrEQ((char*)data, "050727123456Z"); gtime = wolfSSL_ASN1_TIME_to_generalizedtime(t, &out); ->>>>>>> wolfSSL_ASN1_TIME_get_length() AssertIntEQ(gtime->data[0], ASN_GENERALIZED_TIME); AssertIntEQ(gtime->data[1], ASN_GENERALIZED_TIME_SIZE); AssertStrEQ((char*)gtime->data + 2, "20050727123456Z"); @@ -19721,16 +19717,12 @@ static void test_wolfSSL_ASN1_TIME_to_generalizedtime(void){ t->data[0] = ASN_GENERALIZED_TIME; t->data[1] = ASN_GENERALIZED_TIME_SIZE; XMEMCPY(t->data + 2,"20050727123456Z",ASN_GENERALIZED_TIME_SIZE); -<<<<<<< HEAD - AssertNotNull(gtime = wolfSSL_ASN1_TIME_to_generalizedtime(t, &out)); -======= tlen = wolfSSL_ASN1_TIME_get_length(t); AssertIntEQ(tlen, ASN_GENERALIZED_TIME_SIZE); wolfSSL_ASN1_TIME_get_data(t,data); AssertStrEQ((char*)data, "20050727123456Z"); gtime = wolfSSL_ASN1_TIME_to_generalizedtime(t, &out); ->>>>>>> wolfSSL_ASN1_TIME_get_length() AssertIntEQ(gtime->data[0], ASN_GENERALIZED_TIME); AssertIntEQ(gtime->data[1], ASN_GENERALIZED_TIME_SIZE); AssertStrEQ((char*)gtime->data + 2, "20050727123456Z"); @@ -19754,6 +19746,31 @@ static void test_wolfSSL_ASN1_TIME_to_generalizedtime(void){ #endif } +static void test_wolfSSL_X509_CA_num(void){ +#if defined(OPENSSL_EXTRA) && !defined(NO_CERT) + WOLFSSL_X509_STORE *store; + WOLFSSL_X509 *x509_1, *x509_2; + int ca_num = 0; + + printf(testingFmt, "wolfSSL_X509_CA_num()"); + + store = wolfSSL_X509_STORE_new(); + x509_1 = wolfSSL_X509_load_certificate_file(svrCertFile, WOLFSSL_FILETYPE_PEM); + wolfSSL_X509_STORE_add_cert(store, x509_1); + ca_num = wolfSSL_X509_CA_num(store); + AssertIntEQ(ca_num, 1); + + x509_2 = wolfSSL_X509_load_certificate_file(eccCertFile, WOLFSSL_FILETYPE_PEM); + wolfSSL_X509_STORE_add_cert(store, x509_2); + ca_num = wolfSSL_X509_CA_num(store); + AssertIntEQ(ca_num, 2); + + wolfSSL_X509_free(x509_1); + wolfSSL_X509_free(x509_2); + wolfSSL_X509_STORE_free(store); + printf(resultFmt, passed); +#endif +} static void test_wolfSSL_X509_check_ca(void){ #if defined(OPENSSL_EXTRA) && !defined(NO_RSA) WOLFSSL_X509 *x509; @@ -20989,24 +21006,26 @@ static void test_wolfSSL_X509_CRL(void) static void test_wolfSSL_i2c_ASN1_INTEGER(void) { -#ifdef OPENSSL_EXTRA +#if defined(OPENSSL_EXTRA) && !defined(NO_ASN) ASN1_INTEGER *a; unsigned char *pp,*tpp; int ret; + printf(testingFmt, "wolfSSL_i2c_ASN1_INTEGER"); + a = wolfSSL_ASN1_INTEGER_new(); /* 40 */ a->intData[0] = ASN_INTEGER; a->intData[1] = 1; a->intData[2] = 40; - ret = wolfSSL_i2c_ASN1_INTEGER(a, NULL); + ret = i2c_ASN1_INTEGER(a, NULL); AssertIntEQ(ret, 1); AssertNotNull(pp = (unsigned char*)XMALLOC(ret + 1, NULL, DYNAMIC_TYPE_TMP_BUFFER)); tpp = pp; XMEMSET(pp, 0, ret + 1); - wolfSSL_i2c_ASN1_INTEGER(a, &pp); + i2c_ASN1_INTEGER(a, &pp); pp--; AssertIntEQ(*pp, 40); XFREE(tpp, NULL, DYNAMIC_TYPE_TMP_BUFFER); @@ -21079,7 +21098,7 @@ static void test_wolfSSL_i2c_ASN1_INTEGER(void) wolfSSL_ASN1_INTEGER_free(a); printf(resultFmt, passed); -#endif /* OPENSSL_EXTRA */ +#endif /* OPENSSL_EXTRA && !NO_ASN */ } #ifndef NO_INLINE @@ -21262,6 +21281,7 @@ void ApiTest(void) test_wolfSSL_d2i_PrivateKeys_bio(); #endif /* OPENSSL_ALL || WOLFSSL_ASIO */ + test_wolfSSL_X509_CA_num(); /* test the no op functions for compatibility */ test_no_op_functions(); diff --git a/wolfssl/openssl/ssl.h b/wolfssl/openssl/ssl.h index d292d614c..99c5ff918 100644 --- a/wolfssl/openssl/ssl.h +++ b/wolfssl/openssl/ssl.h @@ -404,6 +404,7 @@ typedef WOLFSSL_X509_STORE_CTX X509_STORE_CTX; #define SSL_CTX_set_info_callback wolfSSL_CTX_set_info_callback #define SSL_CTX_set_alpn_protos wolfSSL_CTX_set_alpn_protos #define ERR_peek_error wolfSSL_ERR_peek_error +#define ERR_peek_last_error wolfSSL_ERR_peek_last_error #define ERR_peek_last_error_line wolfSSL_ERR_peek_last_error_line #define ERR_peek_errors_fp wolfSSL_ERR_peek_errors_fp #define ERR_GET_REASON wolfSSL_ERR_GET_REASON @@ -924,7 +925,6 @@ typedef WOLFSSL_ASN1_BIT_STRING ASN1_BIT_STRING; #define SSL_get0_session wolfSSL_SSL_get0_session #define X509_check_host wolfSSL_X509_check_host #define i2a_ASN1_INTEGER wolfSSL_i2a_ASN1_INTEGER -#define i2c_ASN1_INTEGER wolfSSL_i2c_ASN1_INTEGER #define ERR_peek_error_line_data wolfSSL_ERR_peek_error_line_data #define ERR_load_BIO_strings wolfSSL_ERR_load_BIO_strings #define SSL_CTX_set_tlsext_ticket_key_cb wolfSSL_CTX_set_tlsext_ticket_key_cb @@ -950,10 +950,13 @@ typedef WOLFSSL_ASN1_BIT_STRING ASN1_BIT_STRING; #endif /* WOLFSSL_NGINX || WOLFSSL_HAPROXY || WOLFSSL_MYSQL_COMPATIBLE || OPENSSL_ALL || HAVE_LIGHTY */ +#ifdef OPENSSL_EXTRA #define X509_STORE_CTX_set_time wolfSSL_X509_STORE_CTX_set_time #define SSL_CTX_add_client_CA wolfSSL_CTX_add_client_CA #define SSL_CTX_set_srp_password wolfSSL_CTX_set_srp_password #define SSL_CTX_set_srp_username wolfSSL_CTX_set_srp_username +#define OPENSSL_add_all_algorithms_noconf wolfSSL_OPENSSL_add_all_alogrithms_noconf +#define i2c_ASN1_INTEGER wolfSSL_i2c_ASN1_INTEGER #define ERR_NUM_ERRORS 16 #define EVP_PKEY_RSA 6 @@ -963,6 +966,11 @@ typedef WOLFSSL_ASN1_BIT_STRING ASN1_BIT_STRING; #define NID_pkcs9_emailAddress 48 #define OBJ_pkcs9_emailAddress 1L,2L,840L,113539L,1L,9L,1L +#define SSL_get_rbio wolfSSL_SSL_get_rbio +#define SSL_get_wbio wolfSSL_SSL_get_wbio +#define SSL_do_handshake wolfSSL_SSL_do_handshake +#endif /* OPENSSL_EXTRA */ + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index aa99560d4..ef5333ed9 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -2995,6 +2995,7 @@ WOLFSSL_API int wolfSSL_ASN1_TIME_get_data(WOLFSSL_ASN1_TIME *t, unsigned char * WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_to_generalizedtime(WOLFSSL_ASN1_TIME *t, WOLFSSL_ASN1_TIME **out); WOLFSSL_API int wolfSSL_i2c_ASN1_INTEGER(WOLFSSL_ASN1_INTEGER *a, unsigned char **pp); +WOLFSSL_API int wolfSSL_X509_CA_num(WOLFSSL_X509_STORE *store); #endif /* OPENSSL_EXTRA */ #ifdef HAVE_PK_CALLBACKS