diff options
author | Shane Lontis <shane.lontis@oracle.com> | 2020-07-26 10:26:43 +0300 |
---|---|---|
committer | Shane Lontis <shane.lontis@oracle.com> | 2020-08-09 10:34:52 +0300 |
commit | 11eef7e766ad76158be8da497fba2bc048b02ca1 (patch) | |
tree | 5cbbe4eaa7bff9d40fa1cd1ce769b61d3a2b1811 /crypto | |
parent | 831564543a706fbeff580789d02a3e2e85ae7f2a (diff) |
Use libctx for EVP_CIPHER_CTX_rand_key() method.
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11884)
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/evp/evp_enc.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c index 2f00f9a13b..74d4afdac4 100644 --- a/crypto/evp/evp_enc.c +++ b/crypto/evp/evp_enc.c @@ -1180,6 +1180,20 @@ const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher) return NULL; } +#ifndef FIPS_MODULE +static OPENSSL_CTX *EVP_CIPHER_CTX_get_libctx(EVP_CIPHER_CTX *ctx) +{ + const EVP_CIPHER *cipher = ctx->cipher; + const OSSL_PROVIDER *prov; + + if (cipher == NULL) + return NULL; + + prov = EVP_CIPHER_provider(cipher); + return ossl_provider_library_context(prov); +} +#endif + int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key) { if (ctx->cipher->flags & EVP_CIPH_RAND_KEY) @@ -1190,9 +1204,10 @@ int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key) #else { int kl; + OPENSSL_CTX *libctx = EVP_CIPHER_CTX_get_libctx(ctx); kl = EVP_CIPHER_CTX_key_length(ctx); - if (kl <= 0 || RAND_priv_bytes(key, kl) <= 0) + if (kl <= 0 || RAND_priv_bytes_ex(libctx, key, kl) <= 0) return 0; return 1; } |