From 2146211204991c3586df89d912bf77370f64fac0 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 13 Jan 2021 23:53:09 +0100 Subject: [PATCH] SSL test programs: enable the PSA test external RNG Currently, MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG is tested with a dummy insecure implementation of mbedtls_psa_external_get_random. This function needs to be explicitly enabled at runtime. This needs to happen when the PSA external RNG is used, which currently is the case in SSL test programs only when MBEDTLS_USE_PSA_CRYPTO is enabled. Signed-off-by: Gilles Peskine --- programs/ssl/ssl_client2.c | 3 +++ programs/ssl/ssl_server2.c | 3 +++ programs/ssl/ssl_test_lib.h | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index ff0a34986d..56df7dfe10 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -760,6 +760,9 @@ int main( int argc, char *argv[] ) ret = MBEDTLS_ERR_SSL_HW_ACCEL_FAILED; goto exit; } +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + mbedtls_test_enable_insecure_external_rng( ); +#endif #endif if( argc == 0 ) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index d95b1b7e31..da7f0a6ab5 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1412,6 +1412,9 @@ int main( int argc, char *argv[] ) ret = MBEDTLS_ERR_SSL_HW_ACCEL_FAILED; goto exit; } +#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + mbedtls_test_enable_insecure_external_rng( ); +#endif #endif #if !defined(_WIN32) diff --git a/programs/ssl/ssl_test_lib.h b/programs/ssl/ssl_test_lib.h index 2e91730556..99609daf96 100644 --- a/programs/ssl/ssl_test_lib.h +++ b/programs/ssl/ssl_test_lib.h @@ -189,6 +189,14 @@ void rng_free( rng_context_t *rng ); */ int rng_get( void *p_rng, unsigned char *output, size_t output_len ); +#if defined(MBEDTLS_USE_PSA_CRYPTO) && defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) +/* The test implementation of the PSA external RNG is insecure. When + * MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG is enabled, before using any PSA crypto + * function that makes use of an RNG, you must call + * mbedtls_test_enable_insecure_external_rng(). */ +#include +#endif + #if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK) int ca_callback( void *data, mbedtls_x509_crt const *child, mbedtls_x509_crt **candidates );