From: Pauli Date: Mon, 23 Sep 2024 04:45:41 +0000 (+1000) Subject: ctr-drbg: always use the DF for OpenSSL's DRBGs X-Git-Tag: openssl-3.5.0-alpha1~1084 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=260ecea0d4e46d63464636405f9925ef65d0747e;p=thirdparty%2Fopenssl.git ctr-drbg: always use the DF for OpenSSL's DRBGs Force the use of the derivation function when creating OpenSSL's internal DRBGs. FIPS mandates the use of a derivation function, so 3.4 cannot be validated as it stands which run counter to the indicator work that was included. Reviewed-by: Dmitry Belyavskiy Reviewed-by: Tom Cosgrove Reviewed-by: Hugo Landau (Merged from https://github.com/openssl/openssl/pull/25511) (cherry picked from commit 0ab796ef9674b378ac644ad8d477685619a2ff37) --- diff --git a/crypto/rand/rand_lib.c b/crypto/rand/rand_lib.c index 9e147f27bbe..54302901924 100644 --- a/crypto/rand/rand_lib.c +++ b/crypto/rand/rand_lib.c @@ -642,7 +642,7 @@ EVP_RAND_CTX *ossl_rand_get0_seed_noncreating(OSSL_LIB_CTX *ctx) static EVP_RAND_CTX *rand_new_drbg(OSSL_LIB_CTX *libctx, EVP_RAND_CTX *parent, unsigned int reseed_interval, - time_t reseed_time_interval, int use_df) + time_t reseed_time_interval) { EVP_RAND *rand; RAND_GLOBAL *dgbl = rand_get_global(libctx); @@ -650,6 +650,7 @@ static EVP_RAND_CTX *rand_new_drbg(OSSL_LIB_CTX *libctx, EVP_RAND_CTX *parent, OSSL_PARAM params[8], *p = params; const OSSL_PARAM *settables; char *name, *cipher; + int use_df = 1; if (dgbl == NULL) return NULL; @@ -763,7 +764,7 @@ EVP_RAND_CTX *RAND_get0_primary(OSSL_LIB_CTX *ctx) ERR_pop_to_mark(); } ret = rand_new_drbg(ctx, dgbl->seed, PRIMARY_RESEED_INTERVAL, - PRIMARY_RESEED_TIME_INTERVAL, 1); + PRIMARY_RESEED_TIME_INTERVAL); #endif /* @@ -808,7 +809,7 @@ EVP_RAND_CTX *RAND_get0_public(OSSL_LIB_CTX *ctx) && !ossl_init_thread_start(NULL, ctx, rand_delete_thread_state)) return NULL; rand = rand_new_drbg(ctx, primary, SECONDARY_RESEED_INTERVAL, - SECONDARY_RESEED_TIME_INTERVAL, 0); + SECONDARY_RESEED_TIME_INTERVAL); CRYPTO_THREAD_set_local(&dgbl->public, rand); } return rand; @@ -841,7 +842,7 @@ EVP_RAND_CTX *RAND_get0_private(OSSL_LIB_CTX *ctx) && !ossl_init_thread_start(NULL, ctx, rand_delete_thread_state)) return NULL; rand = rand_new_drbg(ctx, primary, SECONDARY_RESEED_INTERVAL, - SECONDARY_RESEED_TIME_INTERVAL, 0); + SECONDARY_RESEED_TIME_INTERVAL); CRYPTO_THREAD_set_local(&dgbl->private, rand); } return rand;