diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/bn/bn_exp.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lib/libcrypto/bn/bn_exp.c b/src/lib/libcrypto/bn/bn_exp.c index c4ca36d136..9dcbf007f7 100644 --- a/src/lib/libcrypto/bn/bn_exp.c +++ b/src/lib/libcrypto/bn/bn_exp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_exp.c,v 1.23 2015/09/10 15:56:25 jsing Exp $ */ | 1 | /* $OpenBSD: bn_exp.c,v 1.24 2016/09/03 14:37:52 bcook Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -589,13 +589,14 @@ BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, | |||
589 | bn_check_top(p); | 589 | bn_check_top(p); |
590 | bn_check_top(m); | 590 | bn_check_top(m); |
591 | 591 | ||
592 | top = m->top; | 592 | if (!BN_is_odd(m)) { |
593 | |||
594 | if (!(m->d[0] & 1)) { | ||
595 | BNerr(BN_F_BN_MOD_EXP_MONT_CONSTTIME, | 593 | BNerr(BN_F_BN_MOD_EXP_MONT_CONSTTIME, |
596 | BN_R_CALLED_WITH_EVEN_MODULUS); | 594 | BN_R_CALLED_WITH_EVEN_MODULUS); |
597 | return (0); | 595 | return (0); |
598 | } | 596 | } |
597 | |||
598 | top = m->top; | ||
599 | |||
599 | bits = BN_num_bits(p); | 600 | bits = BN_num_bits(p); |
600 | if (bits == 0) { | 601 | if (bits == 0) { |
601 | ret = BN_one(rr); | 602 | ret = BN_one(rr); |