Merge pull request #5850 from SparkiDev/sp_exptmod_nct_err_fix

SP int: fix check of err in _sp_exptmod_nct
This commit is contained in:
David Garske
2022-12-05 11:24:12 -08:00
committed by GitHub

View File

@ -13077,7 +13077,7 @@ static int _sp_exptmod_nct(const sp_int* b, const sp_int* e, const sp_int* m,
} }
/* 4. While at least window bits left. */ /* 4. While at least window bits left. */
while (err == MP_OKAY && ((i >= 0) || (c >= winBits))) { while ((err == MP_OKAY) && ((i >= 0) || (c >= winBits))) {
/* Number of squares to before due to top bits being 0. */ /* Number of squares to before due to top bits being 0. */
int sqrs = 0; int sqrs = 0;
@ -13101,9 +13101,9 @@ static int _sp_exptmod_nct(const sp_int* b, const sp_int* e, const sp_int* m,
n <<= 1; n <<= 1;
c--; c--;
} }
while (err == MP_OKAY && ((i >= 0) || (c >= winBits))); while ((err == MP_OKAY) && ((i >= 0) || (c >= winBits)));
if (err == MP_OKAY && ((i >= 0) || (c >= winBits))) { if ((err == MP_OKAY) && ((i >= 0) || (c >= winBits))) {
/* Add squares needed before using table entry. */ /* Add squares needed before using table entry. */
sqrs += winBits; sqrs += winBits;
} }
@ -13111,7 +13111,7 @@ static int _sp_exptmod_nct(const sp_int* b, const sp_int* e, const sp_int* m,
/* 4.2. Montgomery square result for each leading 0 and window /* 4.2. Montgomery square result for each leading 0 and window
* bits if bits left. * bits if bits left.
*/ */
for (; sqrs > 0; sqrs--) { for (; (err == MP_OKAY) && (sqrs > 0); sqrs--) {
err = sp_sqr(tr, tr); err = sp_sqr(tr, tr);
if (err == MP_OKAY) { if (err == MP_OKAY) {
err = _sp_mont_red(tr, m, mp); err = _sp_mont_red(tr, m, mp);