test: add utility function to set the fake random callback on both the public and...
[openssl.git] / test / testutil / fake_random.c
index 537755cde722be0899e53d680792ebfb63a87d56..bdd48d394c48e4a0f07d0c78bd086aa036a59a57 100644 (file)
@@ -17,8 +17,7 @@
 #include "../testutil.h"
 
 typedef struct {
-    int (*cb)(unsigned char *out, size_t outlen,
-              const char *name, EVP_RAND_CTX *ctx);
+    fake_random_generate_cb *cb;
     int state;
     const char *name;
     EVP_RAND_CTX *ctx;
@@ -216,8 +215,17 @@ void fake_rand_set_callback(EVP_RAND_CTX *rng,
                             int (*cb)(unsigned char *out, size_t outlen,
                                       const char *name, EVP_RAND_CTX *ctx))
 {
-    FAKE_RAND *f = rng->data;
+    if (rng != NULL)
+        ((FAKE_RAND *)rng->data)->cb = cb;
+}
 
-    f->cb = cb;
+void fake_rand_set_public_private_callbacks(OSSL_LIB_CTX *libctx,
+                                            int (*cb)(unsigned char *out,
+                                                      size_t outlen,
+                                                      const char *name,
+                                                      EVP_RAND_CTX *ctx))
+{
+    fake_rand_set_callback(RAND_get0_private(libctx), cb);
+    fake_rand_set_callback(RAND_get0_public(libctx), cb);
 }