diff --git a/src/ssl.c b/src/ssl.c index 9f7e1306d..74cfb3d14 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -21564,6 +21564,27 @@ int wolfSSL_RAND_bytes(unsigned char* buf, int num) return ret; } +#define RAND_ENTROPY_SZ (256/16) +int wolfSSL_RAND_poll() +{ + WOLFSSL_ENTER("wolfSSL_RAND_poll"); + byte entropy[RAND_ENTROPY_SZ]; + int ret = 0; + + if (initGlobalRNG == 0){ + WOLFSSL_MSG("Global RNG no Init"); + return WOLFSSL_FAILURE; + } + ret = wc_GenerateSeed(&globalRNG.seed, entropy, RAND_ENTROPY_SZ); + if (ret != 0){ + WOLFSSL_MSG("Bad wc_RNG_GenerateBlock"); + ret = WOLFSSL_FAILURE; + }else + ret = WOLFSSL_SUCCESS; + + return ret; +} + WOLFSSL_BN_CTX* wolfSSL_BN_CTX_new(void) { static int ctx; /* wolfcrypt doesn't now need ctx */ diff --git a/tests/api.c b/tests/api.c index f9f6bff54..e9e99079a 100644 --- a/tests/api.c +++ b/tests/api.c @@ -17216,6 +17216,7 @@ static void test_wolfSSL_RAND(void) printf(testingFmt, "wolfSSL_RAND()"); RAND_seed(seed, sizeof(seed)); + AssertIntEQ(RAND_poll(), 1); RAND_cleanup(); AssertIntEQ(RAND_egd(NULL), -1); diff --git a/wolfssl/openssl/evp.h b/wolfssl/openssl/evp.h index 75b682dc1..f1d935fc6 100644 --- a/wolfssl/openssl/evp.h +++ b/wolfssl/openssl/evp.h @@ -564,6 +564,10 @@ typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX; WOLFSSL_API void printPKEY(WOLFSSL_EVP_PKEY *k); +WOLFSSL_API void wolfSSL_OPENSSL_add_all_algorithms_noconf(void); + +#define OPENSSL_add_all_algorithms_noconf wolfSSL_OPENSSL_add_all_algorithms_noconf + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/wolfssl/openssl/ssl.h b/wolfssl/openssl/ssl.h index 3fbbed639..c9e620faa 100644 --- a/wolfssl/openssl/ssl.h +++ b/wolfssl/openssl/ssl.h @@ -297,6 +297,7 @@ typedef WOLFSSL_X509_STORE_CTX X509_STORE_CTX; #define RAND_seed wolfSSL_RAND_seed #define RAND_cleanup wolfSSL_RAND_Cleanup #define RAND_add wolfSSL_RAND_add +#define RAND_poll wolfSSL_RAND_poll #define COMP_zlib wolfSSL_COMP_zlib #define COMP_rle wolfSSL_COMP_rle diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 968898585..eaca4c03b 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -837,6 +837,7 @@ WOLFSSL_API int wolfSSL_RAND_egd(const char*); WOLFSSL_API int wolfSSL_RAND_seed(const void*, int); WOLFSSL_API void wolfSSL_RAND_Cleanup(void); WOLFSSL_API void wolfSSL_RAND_add(const void*, int, double); +WOLFSSL_API int wolfSSL_RAND_poll(void); WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_zlib(void); WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_rle(void);