summaryrefslogtreecommitdiffstats
path: root/crypto/bn/bn_prime.c
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2001-09-03 12:58:16 +0000
committerBodo Möller <bodo@openssl.org>2001-09-03 12:58:16 +0000
commit983495c4b215b7418dc3470fa8bc9c919c09c683 (patch)
tree1f22a7ae4ac1c0f6d82eb0e7745c3371f14df091 /crypto/bn/bn_prime.c
parent931a23a5a55d153db9a0a76ee27e28af90be86e6 (diff)
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.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/crypto/bn/bn_prime.c b/crypto/bn/bn_prime.c
index b75e58c6ae..5bfc0b682b 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 */