]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
evp: support modified gettable/settable ctx calls for RNGs
authorPauli <ppzgs1@gmail.com>
Mon, 22 Feb 2021 23:52:15 +0000 (09:52 +1000)
committerPauli <ppzgs1@gmail.com>
Fri, 26 Feb 2021 08:08:41 +0000 (18:08 +1000)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14240)

crypto/evp/evp_rand.c
include/openssl/evp.h
util/libcrypto.num

index b27f4e11a0bda9cefd2d7fcad62136f179b2dd27..bc8c24b3b550e5bb9b4ea37044560b989a1a2f31 100644 (file)
@@ -428,18 +428,42 @@ const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand)
 
 const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand)
 {
+    void *provctx;
+
     if (rand->gettable_ctx_params == NULL)
         return NULL;
-    return rand->gettable_ctx_params(
-               ossl_provider_ctx(EVP_RAND_provider(rand)));
+    provctx = ossl_provider_ctx(EVP_RAND_provider(rand));
+    return rand->gettable_ctx_params(NULL, provctx);
 }
 
 const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand)
 {
+    void *provctx;
+
     if (rand->settable_ctx_params == NULL)
         return NULL;
-    return rand->settable_ctx_params(
-               ossl_provider_ctx(EVP_RAND_provider(rand)));
+    provctx = ossl_provider_ctx(EVP_RAND_provider(rand));
+    return rand->settable_ctx_params(NULL, provctx);
+}
+
+const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx)
+{
+    void *provctx;
+
+    if (ctx->meth->gettable_ctx_params == NULL)
+        return NULL;
+    provctx = ossl_provider_ctx(EVP_RAND_provider(ctx->meth));
+    return ctx->meth->gettable_ctx_params(ctx->data, provctx);
+}
+
+const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx)
+{
+    void *provctx;
+
+    if (ctx->meth->settable_ctx_params == NULL)
+        return NULL;
+    provctx = ossl_provider_ctx(EVP_RAND_provider(ctx->meth));
+    return ctx->meth->settable_ctx_params(ctx->data, provctx);
 }
 
 void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx,
index 38cfefd10bbd8ac5a0745a1d3721654073e79e60..015cb9f158f53e7eae945d4ec53199bba2b9d8de 100644 (file)
@@ -1176,6 +1176,8 @@ int EVP_RAND_set_ctx_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]);
 const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand);
 const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand);
 const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand);
+const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx);
+const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx);
 
 void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx,
                               void (*fn)(EVP_RAND *rand, void *arg),
index 2f04e8115210b6b0a2734cdf0a1044c62ae2dd9b..3dd02fea275ec1b1469138cd99ed848071e7dbd1 100644 (file)
@@ -5302,5 +5302,7 @@ EVP_PKEY_fromdata_settable              ? 3_0_0   EXIST::FUNCTION:
 EVP_PKEY_param_check_quick              ?      3_0_0   EXIST::FUNCTION:
 EVP_PKEY_public_check_quick             ?      3_0_0   EXIST::FUNCTION:
 EVP_PKEY_CTX_is_a                       ?      3_0_0   EXIST::FUNCTION:
+EVP_RAND_CTX_gettable_params            ?      3_0_0   EXIST::FUNCTION:
+EVP_RAND_CTX_settable_params            ?      3_0_0   EXIST::FUNCTION:
 RAND_set_DRBG_type                      ?      3_0_0   EXIST::FUNCTION:
 RAND_set_seed_source_type               ?      3_0_0   EXIST::FUNCTION: