bn/exp: don't check |copy_to_prebuf|'s retval in |BN_mod_exp_mont_consttime|.
It always returns one, so just void it.
Change-Id: I8733cc3d6b20185e782cf0291e9c0dc57712bb63
Reviewed-on: https://boringssl-review.googlesource.com/22564
Reviewed-by: Adam Langley <agl@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/crypto/fipsmodule/bn/exponentiation.c b/crypto/fipsmodule/bn/exponentiation.c
index b6b7fa9..e2dfb34 100644
--- a/crypto/fipsmodule/bn/exponentiation.c
+++ b/crypto/fipsmodule/bn/exponentiation.c
@@ -733,12 +733,14 @@
return ret;
}
-// BN_mod_exp_mont_consttime() stores the precomputed powers in a specific
+
+// |BN_mod_exp_mont_consttime| stores the precomputed powers in a specific
// layout so that accessing any of these table values shows the same access
// pattern as far as cache lines are concerned. The following functions are
// used to transfer a BIGNUM from/to that table.
-static int copy_to_prebuf(const BIGNUM *b, int top, unsigned char *buf, int idx,
- int window) {
+
+static void copy_to_prebuf(const BIGNUM *b, int top, unsigned char *buf,
+ int idx, int window) {
int i, j;
const int width = 1 << window;
BN_ULONG *table = (BN_ULONG *) buf;
@@ -750,8 +752,6 @@
for (i = 0, j = idx; i < top; i++, j += width) {
table[j] = b->d[i];
}
-
- return 1;
}
static int copy_from_prebuf(BIGNUM *b, int top, unsigned char *buf, int idx,
@@ -1103,26 +1103,27 @@
} else
#endif
{
- if (!copy_to_prebuf(&tmp, top, powerbuf, 0, window) ||
- !copy_to_prebuf(&am, top, powerbuf, 1, window)) {
- goto err;
- }
+ copy_to_prebuf(&tmp, top, powerbuf, 0, window);
+ copy_to_prebuf(&am, top, powerbuf, 1, window);
// If the window size is greater than 1, then calculate
// val[i=2..2^winsize-1]. Powers are computed as a*a^(i-1)
// (even powers could instead be computed as (a^(i/2))^2
// to use the slight performance advantage of sqr over mul).
if (window > 1) {
- if (!BN_mod_mul_montgomery(&tmp, &am, &am, mont, ctx) ||
- !copy_to_prebuf(&tmp, top, powerbuf, 2, window)) {
+ if (!BN_mod_mul_montgomery(&tmp, &am, &am, mont, ctx)) {
goto err;
}
+
+ copy_to_prebuf(&tmp, top, powerbuf, 2, window);
+
for (i = 3; i < numPowers; i++) {
// Calculate a^i = a^(i-1) * a
- if (!BN_mod_mul_montgomery(&tmp, &am, &tmp, mont, ctx) ||
- !copy_to_prebuf(&tmp, top, powerbuf, i, window)) {
+ if (!BN_mod_mul_montgomery(&tmp, &am, &tmp, mont, ctx)) {
goto err;
}
+
+ copy_to_prebuf(&tmp, top, powerbuf, i, window);
}
}