wolfcrypt/src/sp_int.c: in _sp_mont_red(), gate calls to ctMaskIntGTE() on !WOLFSSL_NO_CT_OPS.

This commit is contained in:
Daniel Pouzzner
2024-01-18 00:36:52 -06:00
parent 4f8fd98d0d
commit 9d56de200e

View File

@ -17135,18 +17135,21 @@ static int _sp_mont_red(sp_int* a, const sp_int* m, sp_int_digit mp, int ct)
bits = sp_count_bits(m);
/* Adding numbers into m->used * 2 digits - zero out unused digits. */
if (!ct) {
for (i = a->used; i < m->used * 2; i++) {
a->dp[i] = 0;
}
}
else {
#ifndef WOLFSSL_NO_CT_OPS
if (ct) {
for (i = 0; i < m->used * 2; i++) {
a->dp[i] &=
(sp_int_digit)
(sp_int_sdigit)ctMaskIntGTE((int)(a->used-1), (int)i);
}
}
else
#endif /* !WOLFSSL_NO_CT_OPS */
{
for (i = a->used; i < m->used * 2; i++) {
a->dp[i] = 0;
}
}
/* Special case when modulus is 1 digit or less. */
if (m->used <= 1) {
@ -17260,18 +17263,21 @@ static int _sp_mont_red(sp_int* a, const sp_int* m, sp_int_digit mp, int ct)
bits = sp_count_bits(m);
mask = ((sp_int_digit)1 << (bits & (SP_WORD_SIZE - 1))) - 1;
if (!ct) {
for (i = a->used; i < m->used * 2; i++) {
a->dp[i] = 0;
}
}
else {
#ifndef WOLFSSL_NO_CT_OPS
if (ct) {
for (i = 0; i < m->used * 2; i++) {
a->dp[i] &=
(sp_int_digit)
(sp_int_sdigit)ctMaskIntGTE((int)(a->used-1), (int)i);
}
}
else
#endif
{
for (i = a->used; i < m->used * 2; i++) {
a->dp[i] = 0;
}
}
if (m->used <= 1) {
sp_int_digit l;