diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2011-04-06 23:42:55 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2011-04-06 23:42:55 +0000 |
commit | d80399a3571e58a2c96da68c4fc6c95fb555902e (patch) | |
tree | 4386da7159ef8180c81d585c16f1f25961aac3eb /crypto/ecdsa | |
parent | d7a3ce989cd07be8a8fca95ead153c8cd4d44017 (diff) | |
download | openssl-d80399a3571e58a2c96da68c4fc6c95fb555902e.tar.gz |
Only use fake rand once per operation. This stops the EC
pairwise consistency test interfering with the test.
Diffstat (limited to 'crypto/ecdsa')
-rw-r--r-- | crypto/ecdsa/ecdsatest.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/crypto/ecdsa/ecdsatest.c b/crypto/ecdsa/ecdsatest.c index 7590f6f5b0..c5b6ed2b87 100644 --- a/crypto/ecdsa/ecdsatest.c +++ b/crypto/ecdsa/ecdsatest.c @@ -137,7 +137,7 @@ int restore_rand(void) return 1; } -static int fbytes_counter = 0; +static int fbytes_counter = 0, use_fake = 0; static const char *numbers[8] = { "651056770906015076056810763456358567190100156695615665659", "6140507067065001063065065565667405560006161556565665656654", @@ -157,6 +157,11 @@ int fbytes(unsigned char *buf, int num) int ret; BIGNUM *tmp = NULL; + if (use_fake == 0) + return old_rand->bytes(buf, num); + + use_fake = 0; + if (fbytes_counter >= 8) return 0; tmp = BN_new(); @@ -199,11 +204,13 @@ int x9_62_test_internal(BIO *out, int nid, const char *r_in, const char *s_in) /* create the key */ if ((key = EC_KEY_new_by_curve_name(nid)) == NULL) goto x962_int_err; + use_fake = 1; if (!EC_KEY_generate_key(key)) goto x962_int_err; BIO_printf(out, "."); (void)BIO_flush(out); /* create the signature */ + use_fake = 1; signature = ECDSA_do_sign(digest, 20, key); if (signature == NULL) goto x962_int_err; |