From a8c113c1752aac8d7cff08f9ce0b5b3a837482f3 Mon Sep 17 00:00:00 2001 From: djm <> Date: Tue, 14 Mar 2006 20:34:33 +0000 Subject: make BN_is_prime() realise that 2 is, in fact, a prime number. from OpenSSL CVS; ok otto@ deraadt@ --- src/lib/libcrypto/bn/bn_prime.c | 4 +++- src/lib/libssl/src/crypto/bn/bn_prime.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src/lib') diff --git a/src/lib/libcrypto/bn/bn_prime.c b/src/lib/libcrypto/bn/bn_prime.c index e072d9255c..f422172f16 100644 --- a/src/lib/libcrypto/bn/bn_prime.c +++ b/src/lib/libcrypto/bn/bn_prime.c @@ -234,7 +234,9 @@ int BN_is_prime_fasttest(const BIGNUM *a, int checks, /* first look for small factors */ if (!BN_is_odd(a)) - return 0; + /* a is even => a is prime if and only if a == 2 */ + return BN_is_word(a, 2); + if (do_trial_division) { for (i = 1; i < NUMPRIMES; i++) diff --git a/src/lib/libssl/src/crypto/bn/bn_prime.c b/src/lib/libssl/src/crypto/bn/bn_prime.c index e072d9255c..f422172f16 100644 --- a/src/lib/libssl/src/crypto/bn/bn_prime.c +++ b/src/lib/libssl/src/crypto/bn/bn_prime.c @@ -234,7 +234,9 @@ int BN_is_prime_fasttest(const BIGNUM *a, int checks, /* first look for small factors */ if (!BN_is_odd(a)) - return 0; + /* a is even => a is prime if and only if a == 2 */ + return BN_is_word(a, 2); + if (do_trial_division) { for (i = 1; i < NUMPRIMES; i++) -- cgit v1.2.3-55-g6feb