Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/openssl/openssl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShane Lontis <shane.lontis@oracle.com>2020-07-26 10:26:43 +0300
committerShane Lontis <shane.lontis@oracle.com>2020-08-09 10:34:52 +0300
commit11eef7e766ad76158be8da497fba2bc048b02ca1 (patch)
tree5cbbe4eaa7bff9d40fa1cd1ce769b61d3a2b1811 /crypto/evp/evp_enc.c
parent831564543a706fbeff580789d02a3e2e85ae7f2a (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/evp/evp_enc.c')
-rw-r--r--crypto/evp/evp_enc.c17
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;
}