]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
test: update ECDSA and SM2 internal tests in line with the fake_random change
authorPauli <ppzgs1@gmail.com>
Sat, 27 Feb 2021 01:57:13 +0000 (11:57 +1000)
committerPauli <ppzgs1@gmail.com>
Tue, 2 Mar 2021 03:23:17 +0000 (13:23 +1000)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/14341)

test/ecdsatest.c
test/sm2_internal_test.c

index d03eb6f01e011de4796ccee069d2610871ed920b..cf09419c941972a6e1af314f96d10d992cdf0626 100644 (file)
 # include "internal/nelem.h"
 # include "ecdsatest.h"
 
+static fake_random_generate_cb fbytes;
+
 static const char *numbers[2];
 static size_t crv_len = 0;
 static EC_builtin_curve *curves = NULL;
 static OSSL_PROVIDER *fake_rand = NULL;
 
-static int fbytes(unsigned char *buf, size_t num)
+static int fbytes(unsigned char *buf, size_t num, ossl_unused const char *name,
+                  EVP_RAND_CTX *ctx)
 {
     int ret = 0;
     static int fbytes_counter = 0;
     BIGNUM *tmp = NULL;
 
-    fake_rand_set_callback(NULL);
+    fake_rand_set_callback(ctx, NULL);
 
     if (!TEST_ptr(tmp = BN_new())
         || !TEST_int_lt(fbytes_counter, OSSL_NELEM(numbers))
@@ -114,7 +117,7 @@ static int x9_62_tests(int n)
         goto err;
 
     /* public key must match KAT */
-    fake_rand_set_callback(&fbytes);
+    fake_rand_set_callback(RAND_get0_private(NULL), &fbytes);
     if (!TEST_true(EC_KEY_generate_key(key))
         || !TEST_true(p_len = EC_KEY_key2buf(key, POINT_CONVERSION_UNCOMPRESSED,
                                              &pbuf, NULL))
@@ -124,7 +127,7 @@ static int x9_62_tests(int n)
         goto err;
 
     /* create the signature via ECDSA_sign_setup to avoid use of ECDSA nonces */
-    fake_rand_set_callback(&fbytes);
+    fake_rand_set_callback(RAND_get0_private(NULL), &fbytes);
     if (!TEST_true(ECDSA_sign_setup(key, NULL, &kinv, &rp))
         || !TEST_ptr(signature = ECDSA_do_sign_ex(digest, dgst_len,
                                                   kinv, rp, key))
index aaa337b57bb0e95401fb7b880d19dcbbd711d242..d9010168b971afadaa2fcdac92c4edecfff2bc0a 100644 (file)
 
 # include "crypto/sm2.h"
 
+static fake_random_generate_cb get_faked_bytes;
+
 static OSSL_PROVIDER *fake_rand = NULL;
 static uint8_t *fake_rand_bytes = NULL;
 static size_t fake_rand_bytes_offset = 0;
 static size_t fake_rand_size = 0;
 
-static int get_faked_bytes(unsigned char *buf, size_t num)
+static int get_faked_bytes(unsigned char *buf, size_t num,
+                           ossl_unused const char *name,
+                           ossl_unused EVP_RAND_CTX *ctx)
 {
     if (!TEST_ptr(fake_rand_bytes) || !TEST_size_t_gt(fake_rand_size, 0))
         return 0;
@@ -56,14 +60,16 @@ static int start_fake_rand(const char *hex_bytes)
         return 0;
 
     /* use own random function */
-    fake_rand_set_callback(get_faked_bytes);
+    fake_rand_set_callback(RAND_get0_private(NULL), get_faked_bytes);
+    fake_rand_set_callback(RAND_get0_public(NULL), get_faked_bytes);
     return 1;
 
 }
 
 static void restore_rand(void)
 {
-    fake_rand_set_callback(NULL);
+    fake_rand_set_callback(RAND_get0_private(NULL), NULL);
+    fake_rand_set_callback(RAND_get0_public(NULL), NULL);
     OPENSSL_free(fake_rand_bytes);
     fake_rand_bytes = NULL;
     fake_rand_bytes_offset = 0;