aboutsummaryrefslogtreecommitdiff
path: root/src/crypto/fipsmodule/bn/exponentiation.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/crypto/fipsmodule/bn/exponentiation.c')
-rw-r--r--src/crypto/fipsmodule/bn/exponentiation.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/crypto/fipsmodule/bn/exponentiation.c b/src/crypto/fipsmodule/bn/exponentiation.c
index 632771e..7b24d89 100644
--- a/src/crypto/fipsmodule/bn/exponentiation.c
+++ b/src/crypto/fipsmodule/bn/exponentiation.c
@@ -898,7 +898,9 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
OPENSSL_PUT_ERROR(BN, BN_R_NEGATIVE_NUMBER);
return 0;
}
- if (a->neg || BN_ucmp(a, m) >= 0) {
+ // |a| is secret, but it is required to be in range, so these comparisons may
+ // be leaked.
+ if (a->neg || constant_time_declassify_int(BN_ucmp(a, m) >= 0)) {
OPENSSL_PUT_ERROR(BN, BN_R_INPUT_NOT_REDUCED);
return 0;
}