diff --git a/include/polarssl/entropy.h b/include/polarssl/entropy.h index ea27848d..e334c224 100644 --- a/include/polarssl/entropy.h +++ b/include/polarssl/entropy.h @@ -116,6 +116,13 @@ entropy_context; */ void entropy_init( entropy_context *ctx ); +/** + * \brief Free the data in the context + * + * \param ctx Entropy context to free + */ +void entropy_free( entropy_context *ctx ); + /** * \brief Adds an entropy source to poll * diff --git a/library/entropy.c b/library/entropy.c index 2352bcff..d43f9833 100644 --- a/library/entropy.c +++ b/library/entropy.c @@ -64,6 +64,11 @@ void entropy_init( entropy_context *ctx ) #endif /* POLARSSL_NO_DEFAULT_ENTROPY_SOURCES */ } +void entropy_free( entropy_context *ctx ) +{ + ((void) ctx); +} + int entropy_add_source( entropy_context *ctx, f_source_ptr f_source, void *p_source, size_t threshold ) diff --git a/programs/pkey/dh_client.c b/programs/pkey/dh_client.c index 4410eb6f..18027fa6 100644 --- a/programs/pkey/dh_client.c +++ b/programs/pkey/dh_client.c @@ -275,6 +275,7 @@ exit: net_close( server_fd ); rsa_free( &rsa ); dhm_free( &dhm ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/pkey/dh_genprime.c b/programs/pkey/dh_genprime.c index f773f1e4..2089fb63 100644 --- a/programs/pkey/dh_genprime.c +++ b/programs/pkey/dh_genprime.c @@ -143,6 +143,7 @@ int main( int argc, char *argv[] ) exit: mpi_free( &G ); mpi_free( &P ); mpi_free( &Q ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " Press Enter to exit this program.\n" ); diff --git a/programs/pkey/dh_server.c b/programs/pkey/dh_server.c index 584ff08d..d2b6cc48 100644 --- a/programs/pkey/dh_server.c +++ b/programs/pkey/dh_server.c @@ -276,6 +276,7 @@ exit: net_close( client_fd ); rsa_free( &rsa ); dhm_free( &dhm ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/pkey/ecdsa.c b/programs/pkey/ecdsa.c index efe67161..add74c6d 100644 --- a/programs/pkey/ecdsa.c +++ b/programs/pkey/ecdsa.c @@ -179,6 +179,7 @@ exit: ecdsa_free( &ctx_verify ); ecdsa_free( &ctx_sign ); + entropy_free( &entropy ); return( ret ); } diff --git a/programs/pkey/gen_key.c b/programs/pkey/gen_key.c index 3cf682b8..19f46a40 100644 --- a/programs/pkey/gen_key.c +++ b/programs/pkey/gen_key.c @@ -269,6 +269,7 @@ exit: } pk_free( &key ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/pkey/pk_decrypt.c b/programs/pkey/pk_decrypt.c index a6ae2810..bf3455df 100644 --- a/programs/pkey/pk_decrypt.c +++ b/programs/pkey/pk_decrypt.c @@ -136,6 +136,7 @@ int main( int argc, char *argv[] ) ret = 0; exit: + entropy_free( &entropy ); #if defined(POLARSSL_ERROR_C) polarssl_strerror( ret, (char *) buf, sizeof(buf) ); diff --git a/programs/pkey/pk_encrypt.c b/programs/pkey/pk_encrypt.c index aa202b00..149e7ddf 100644 --- a/programs/pkey/pk_encrypt.c +++ b/programs/pkey/pk_encrypt.c @@ -136,6 +136,7 @@ int main( int argc, char *argv[] ) printf( "\n . Done (created \"%s\")\n\n", "result-enc.txt" ); exit: + entropy_free( &entropy ); #if defined(POLARSSL_ERROR_C) polarssl_strerror( ret, (char *) buf, sizeof(buf) ); diff --git a/programs/pkey/pk_sign.c b/programs/pkey/pk_sign.c index 5a874b33..67ac0b41 100644 --- a/programs/pkey/pk_sign.c +++ b/programs/pkey/pk_sign.c @@ -149,6 +149,7 @@ int main( int argc, char *argv[] ) exit: pk_free( &pk ); + entropy_free( &entropy ); #if defined(POLARSSL_ERROR_C) polarssl_strerror( ret, (char *) buf, sizeof(buf) ); diff --git a/programs/pkey/rsa_decrypt.c b/programs/pkey/rsa_decrypt.c index 36ac8095..02d30c8e 100644 --- a/programs/pkey/rsa_decrypt.c +++ b/programs/pkey/rsa_decrypt.c @@ -160,6 +160,7 @@ int main( int argc, char *argv[] ) ret = 0; exit: + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/pkey/rsa_encrypt.c b/programs/pkey/rsa_encrypt.c index c444c1af..2ed27e23 100644 --- a/programs/pkey/rsa_encrypt.c +++ b/programs/pkey/rsa_encrypt.c @@ -148,6 +148,7 @@ int main( int argc, char *argv[] ) printf( "\n . Done (created \"%s\")\n\n", "result-enc.txt" ); exit: + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/pkey/rsa_genkey.c b/programs/pkey/rsa_genkey.c index f92c50b6..7711776e 100644 --- a/programs/pkey/rsa_genkey.c +++ b/programs/pkey/rsa_genkey.c @@ -150,6 +150,7 @@ exit: fclose( fpriv ); rsa_free( &rsa ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " Press Enter to exit this program.\n" ); diff --git a/programs/pkey/rsa_sign_pss.c b/programs/pkey/rsa_sign_pss.c index 06fc2e07..fecfcc26 100644 --- a/programs/pkey/rsa_sign_pss.c +++ b/programs/pkey/rsa_sign_pss.c @@ -156,6 +156,7 @@ int main( int argc, char *argv[] ) exit: pk_free( &pk ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/random/gen_entropy.c b/programs/random/gen_entropy.c index 38c104c9..e0cbe528 100644 --- a/programs/random/gen_entropy.c +++ b/programs/random/gen_entropy.c @@ -81,6 +81,7 @@ int main( int argc, char *argv[] ) cleanup: fclose( f ); + entropy_free( &entropy ); return( ret ); } diff --git a/programs/random/gen_random_ctr_drbg.c b/programs/random/gen_random_ctr_drbg.c index fcdc2eec..32b8521d 100644 --- a/programs/random/gen_random_ctr_drbg.c +++ b/programs/random/gen_random_ctr_drbg.c @@ -111,6 +111,7 @@ cleanup: printf("\n"); fclose( f ); + entropy_free( &entropy ); return( ret ); } diff --git a/programs/ssl/ssl_client1.c b/programs/ssl/ssl_client1.c index 2c6e7c86..efb210e4 100644 --- a/programs/ssl/ssl_client1.c +++ b/programs/ssl/ssl_client1.c @@ -277,6 +277,7 @@ exit: x509_crt_free( &cacert ); net_close( server_fd ); ssl_free( &ssl ); + entropy_free( &entropy ); memset( &ssl, 0, sizeof( ssl ) ); diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index f518d39f..2093d1a6 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -913,6 +913,7 @@ exit: #endif ssl_session_free( &saved_session ); ssl_free( &ssl ); + entropy_free( &entropy ); memset( &ssl, 0, sizeof( ssl ) ); diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c index 3d4c7d3b..02de364b 100644 --- a/programs/ssl/ssl_fork_server.c +++ b/programs/ssl/ssl_fork_server.c @@ -361,6 +361,7 @@ exit: x509_crt_free( &srvcert ); pk_free( &pkey ); ssl_free( &ssl ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " Press Enter to exit this program.\n" ); diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c index edee85db..70ba6221 100644 --- a/programs/ssl/ssl_mail_client.c +++ b/programs/ssl/ssl_mail_client.c @@ -791,6 +791,7 @@ exit: x509_crt_free( &cacert ); pk_free( &pkey ); ssl_free( &ssl ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/ssl/ssl_server.c b/programs/ssl/ssl_server.c index 2a528cb0..b4883aae 100644 --- a/programs/ssl/ssl_server.c +++ b/programs/ssl/ssl_server.c @@ -367,6 +367,7 @@ exit: #if defined(POLARSSL_SSL_CACHE_C) ssl_cache_free( &cache ); #endif + entropy_free( &entropy ); #if defined(_WIN32) printf( " Press Enter to exit this program.\n" ); diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 2d81e755..a6ff57fe 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -963,6 +963,7 @@ exit: #endif ssl_free( &ssl ); + entropy_free( &entropy ); #if defined(POLARSSL_SSL_CACHE_C) ssl_cache_free( &cache ); diff --git a/programs/test/o_p_test.c b/programs/test/o_p_test.c index bf54752c..0665098f 100644 --- a/programs/test/o_p_test.c +++ b/programs/test/o_p_test.c @@ -252,6 +252,7 @@ int main( int argc, char *argv[] ) printf( "String value (PolarSSL Private Encrypt, OpenSSL Public Decrypt): '%s'\n", o_priv_decrypted ); exit: + entropy_free( &entropy ); #ifdef WIN32 printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/test/ssl_test.c b/programs/test/ssl_test.c index 20907d8d..debdb073 100644 --- a/programs/test/ssl_test.c +++ b/programs/test/ssl_test.c @@ -401,6 +401,7 @@ exit: x509_crt_free( &srvcert ); pk_free( &pkey ); ssl_free( &ssl ); + entropy_free( &entropy ); net_close( client_fd ); return( ret ); diff --git a/programs/x509/cert_app.c b/programs/x509/cert_app.c index dedac942..c43e662a 100644 --- a/programs/x509/cert_app.c +++ b/programs/x509/cert_app.c @@ -449,6 +449,7 @@ exit: x509_crt_free( &cacert ); x509_crt_free( &clicert ); pk_free( &pkey ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/x509/cert_req.c b/programs/x509/cert_req.c index c6d7dff7..dc45f949 100644 --- a/programs/x509/cert_req.c +++ b/programs/x509/cert_req.c @@ -329,6 +329,7 @@ exit: x509write_csr_free( &req ); pk_free( &key ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/programs/x509/cert_write.c b/programs/x509/cert_write.c index ba00dc3d..94dfa1dd 100644 --- a/programs/x509/cert_write.c +++ b/programs/x509/cert_write.c @@ -650,6 +650,7 @@ exit: pk_free( &loaded_subject_key ); pk_free( &loaded_issuer_key ); mpi_free( &serial ); + entropy_free( &entropy ); #if defined(_WIN32) printf( " + Press Enter to exit this program.\n" ); diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function index dfd2c96a..9bc8a24b 100644 --- a/tests/suites/test_suite_rsa.function +++ b/tests/suites/test_suite_rsa.function @@ -528,6 +528,7 @@ void rsa_gen_key( int nrbits, int exponent, int result) } rsa_free( &ctx ); + entropy_free( &entropy ); } /* END_CASE */