diff options
author | Bodo Möller <bodo@openssl.org> | 2001-09-03 12:58:16 +0000 |
---|---|---|
committer | Bodo Möller <bodo@openssl.org> | 2001-09-03 12:58:16 +0000 |
commit | 983495c4b215b7418dc3470fa8bc9c919c09c683 (patch) | |
tree | 1f22a7ae4ac1c0f6d82eb0e7745c3371f14df091 /crypto/bn/bn_prime.c | |
parent | 931a23a5a55d153db9a0a76ee27e28af90be86e6 (diff) | |
download | openssl-983495c4b215b7418dc3470fa8bc9c919c09c683.zip openssl-983495c4b215b7418dc3470fa8bc9c919c09c683.tar.gz openssl-983495c4b215b7418dc3470fa8bc9c919c09c683.tar.bz2 |
Use uniformly chosen witnesses for Miller-Rabin test
(by using new BN_pseudo_rand_range function)
Diffstat (limited to 'crypto/bn/bn_prime.c')
-rw-r--r-- | crypto/bn/bn_prime.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/crypto/bn/bn_prime.c b/crypto/bn/bn_prime.c index b75e58c..5bfc0b6 100644 --- a/crypto/bn/bn_prime.c +++ b/crypto/bn/bn_prime.c @@ -226,12 +226,15 @@ int BN_is_prime_fasttest(const BIGNUM *a, int checks, BN_MONT_CTX *mont = NULL; const BIGNUM *A = NULL; + if (BN_cmp(a, BN_value_one) <= 0) + return 0; + if (checks == BN_prime_checks) checks = BN_prime_checks_for_size(BN_num_bits(a)); /* first look for small factors */ if (!BN_is_odd(a)) - return(0); + return 0; if (do_trial_division) { for (i = 1; i < NUMPRIMES; i++) @@ -290,11 +293,8 @@ int BN_is_prime_fasttest(const BIGNUM *a, int checks, for (i = 0; i < checks; i++) { - if (!BN_pseudo_rand(check, BN_num_bits(A1), 0, 0)) + if (!BN_pseudo_rand_range(check, A1)) goto err; - if (BN_cmp(check, A1) >= 0) - if (!BN_sub(check, check, A1)) - goto err; if (!BN_add_word(check, 1)) goto err; /* now 1 <= check < A */ |