summaryrefslogtreecommitdiffstats
path: root/crypto/rand/rand_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/rand/rand_lib.c')
-rw-r--r--crypto/rand/rand_lib.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/crypto/rand/rand_lib.c b/crypto/rand/rand_lib.c
index c453d32261..50aa9226cb 100644
--- a/crypto/rand/rand_lib.c
+++ b/crypto/rand/rand_lib.c
@@ -726,6 +726,34 @@ EVP_RAND_CTX *RAND_get0_private(OSSL_LIB_CTX *ctx)
return rand;
}
+int RAND_set0_public(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand)
+{
+ RAND_GLOBAL *dgbl = rand_get_global(ctx);
+ EVP_RAND_CTX *old;
+ int r;
+
+ if (dgbl == NULL)
+ return 0;
+ old = CRYPTO_THREAD_get_local(&dgbl->public);
+ if ((r = CRYPTO_THREAD_set_local(&dgbl->public, rand)) > 0)
+ EVP_RAND_CTX_free(old);
+ return r;
+}
+
+int RAND_set0_private(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand)
+{
+ RAND_GLOBAL *dgbl = rand_get_global(ctx);
+ EVP_RAND_CTX *old;
+ int r;
+
+ if (dgbl == NULL)
+ return 0;
+ old = CRYPTO_THREAD_get_local(&dgbl->private);
+ if ((r = CRYPTO_THREAD_set_local(&dgbl->private, rand)) > 0)
+ EVP_RAND_CTX_free(old);
+ return r;
+}
+
#ifndef FIPS_MODULE
static int random_set_string(char **p, const char *s)
{