summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2007-03-28 18:41:23 +0000
committerBodo Möller <bodo@openssl.org>2007-03-28 18:41:23 +0000
commitb002265ee34d1f0310009c4266ca865253b1a844 (patch)
tree17703aa296a37a438590d30b512b426dc99db5a5
parentbd31fb21454609b125ade1ad569ebcc2a2b9b73c (diff)
make BN_FLG_CONSTTIME semantics more fool-proof
-rw-r--r--CHANGES6
-rw-r--r--crypto/bn/bn_div.c2
-rw-r--r--crypto/bn/bn_gcd.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/CHANGES b/CHANGES
index 21b90edcc7..719145edec 100644
--- a/CHANGES
+++ b/CHANGES
@@ -493,9 +493,9 @@
BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(),
respectively, which are slower, but avoid the security-relevant
conditional branches. These are automatically called by BN_div()
- and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for the
- modulus. Also, BN_is_bit_set() has been changed to remove a
- conditional branch.
+ and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one
+ of the input BIGNUMs. Also, BN_is_bit_set() has been changed to
+ remove a conditional branch.
BN_FLG_CONSTTIME is the new name for the previous
BN_FLG_EXP_CONSTTIME flag, since it now affects more than just
diff --git a/crypto/bn/bn_div.c b/crypto/bn/bn_div.c
index 1fd0206e1d..9addaf158f 100644
--- a/crypto/bn/bn_div.c
+++ b/crypto/bn/bn_div.c
@@ -185,7 +185,7 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
BN_ULONG d0,d1;
int num_n,div_n;
- if (BN_get_flags(num, BN_FLG_CONSTTIME) != 0)
+ if ((BN_get_flags(num, BN_FLG_CONSTTIME) != 0) || (BN_get_flags(divisor, BN_FLG_CONSTTIME) != 0))
{
return BN_div_no_branch(dv, rm, num, divisor, ctx);
}
diff --git a/crypto/bn/bn_gcd.c b/crypto/bn/bn_gcd.c
index 9787a65f94..5fb8090c52 100644
--- a/crypto/bn/bn_gcd.c
+++ b/crypto/bn/bn_gcd.c
@@ -210,7 +210,7 @@ BIGNUM *BN_mod_inverse(BIGNUM *in,
BIGNUM *ret=NULL;
int sign;
- if (BN_get_flags(n, BN_FLG_CONSTTIME) != 0)
+ if ((BN_get_flags(a, BN_FLG_CONSTTIME) != 0) || (BN_get_flags(n, BN_FLG_CONSTTIME) != 0))
{
return BN_mod_inverse_no_branch(in, a, n, ctx);
}