58 lines
2.1 KiB
Diff
58 lines
2.1 KiB
Diff
--- wpa_supplicant-2.6-bak/src/crypto/crypto_openssl.c 2019-07-01 06:22:50.648000000 -0400
|
|
+++ wpa_supplicant-2.6/src/crypto/crypto_openssl.c 2019-07-01 07:23:31.462000000 -0400
|
|
@@ -475,7 +475,8 @@ int crypto_mod_exp(const u8 *base, size_
|
|
bn_result == NULL)
|
|
goto error;
|
|
|
|
- if (BN_mod_exp(bn_result, bn_base, bn_exp, bn_modulus, ctx) != 1)
|
|
+ if (BN_mod_exp_mont_consttime(bn_result, bn_base, bn_exp, bn_modulus,
|
|
+ ctx, NULL) != 1)
|
|
goto error;
|
|
|
|
*result_len = BN_bn2bin(bn_result, result);
|
|
@@ -1192,8 +1193,9 @@ int crypto_bignum_exptmod(const struct c
|
|
bnctx = BN_CTX_new();
|
|
if (bnctx == NULL)
|
|
return -1;
|
|
- res = BN_mod_exp((BIGNUM *) d, (const BIGNUM *) a, (const BIGNUM *) b,
|
|
- (const BIGNUM *) c, bnctx);
|
|
+ res = BN_mod_exp_mont_consttime((BIGNUM *) d, (const BIGNUM *) a,
|
|
+ (const BIGNUM *) b, (const BIGNUM *) c,
|
|
+ bnctx, NULL);
|
|
BN_CTX_free(bnctx);
|
|
|
|
return res ? 0 : -1;
|
|
@@ -1212,6 +1214,11 @@ int crypto_bignum_inverse(const struct c
|
|
bnctx = BN_CTX_new();
|
|
if (bnctx == NULL)
|
|
return -1;
|
|
+#ifdef OPENSSL_IS_BORINGSSL
|
|
+ /* TODO: use BN_mod_inverse_blinded() ? */
|
|
+#else /* OPENSSL_IS_BORINGSSL */
|
|
+ BN_set_flags((BIGNUM *) a, BN_FLG_CONSTTIME);
|
|
+#endif /* OPENSSL_IS_BORINGSSL */
|
|
res = BN_mod_inverse((BIGNUM *) c, (const BIGNUM *) a,
|
|
(const BIGNUM *) b, bnctx);
|
|
BN_CTX_free(bnctx);
|
|
@@ -1245,6 +1252,9 @@ int crypto_bignum_div(const struct crypt
|
|
bnctx = BN_CTX_new();
|
|
if (bnctx == NULL)
|
|
return -1;
|
|
+#ifndef OPENSSL_IS_BORINGSSL
|
|
+ BN_set_flags((BIGNUM *) a, BN_FLG_CONSTTIME);
|
|
+#endif /* OPENSSL_IS_BORINGSSL */
|
|
res = BN_div((BIGNUM *) c, NULL, (const BIGNUM *) a,
|
|
(const BIGNUM *) b, bnctx);
|
|
BN_CTX_free(bnctx);
|
|
@@ -1322,8 +1332,8 @@ int crypto_bignum_legendre(const struct
|
|
/* exp = (p-1) / 2 */
|
|
!BN_sub(exp, (const BIGNUM *) p, BN_value_one()) ||
|
|
!BN_rshift1(exp, exp) ||
|
|
- !BN_mod_exp(tmp, (const BIGNUM *) a, exp, (const BIGNUM *) p,
|
|
- bnctx))
|
|
+ !BN_mod_exp_mont_consttime(tmp, (const BIGNUM *) a, exp,
|
|
+ (const BIGNUM *) p, bnctx, NULL))
|
|
goto fail;
|
|
|
|
/* Return 1 if tmp == 1, 0 if tmp == 0, or -1 otherwise. Need to use
|