Tidy up type signature of BN_mod_exp_mont_consttime table. It's a table of BN_ULONGs. No particular need to use unsigned char. Change-Id: I397883cef9f39fb162c2b0bfbd6a70fe399757a2 Reviewed-on: https://boringssl-review.googlesource.com/c/33267 Commit-Queue: Adam Langley <agl@google.com> Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/fipsmodule/bn/asm/x86_64-mont5.pl b/crypto/fipsmodule/bn/asm/x86_64-mont5.pl index e3dcdef..806e6f5 100755 --- a/crypto/fipsmodule/bn/asm/x86_64-mont5.pl +++ b/crypto/fipsmodule/bn/asm/x86_64-mont5.pl
@@ -1068,7 +1068,7 @@ # void bn_power5( my $rptr="%rdi"; # BN_ULONG *rptr, my $aptr="%rsi"; # const BN_ULONG *aptr, -my $bptr="%rdx"; # const void *table, +my $bptr="%rdx"; # const BN_ULONG *table, my $nptr="%rcx"; # const BN_ULONG *nptr, my $n0 ="%r8"; # const BN_ULONG *n0); my $num ="%r9"; # int num, has to be divisible by 8 @@ -2745,7 +2745,7 @@ # void bn_power5( my $rptr="%rdi"; # BN_ULONG *rptr, my $aptr="%rsi"; # const BN_ULONG *aptr, -my $bptr="%rdx"; # const void *table, +my $bptr="%rdx"; # const BN_ULONG *table, my $nptr="%rcx"; # const BN_ULONG *nptr, my $n0 ="%r8"; # const BN_ULONG *n0); my $num ="%r9"; # int num, has to be divisible by 8
diff --git a/crypto/fipsmodule/bn/exponentiation.c b/crypto/fipsmodule/bn/exponentiation.c index 41b2057..fa326a7 100644 --- a/crypto/fipsmodule/bn/exponentiation.c +++ b/crypto/fipsmodule/bn/exponentiation.c
@@ -125,12 +125,13 @@ #include "rsaz_exp.h" -void bn_mul_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap, const void *table, - const BN_ULONG *np, const BN_ULONG *n0, int num, - int power); -void bn_scatter5(const BN_ULONG *inp, size_t num, void *table, size_t power); -void bn_gather5(BN_ULONG *out, size_t num, void *table, size_t power); -void bn_power5(BN_ULONG *rp, const BN_ULONG *ap, const void *table, +void bn_mul_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap, + const BN_ULONG *table, const BN_ULONG *np, + const BN_ULONG *n0, int num, int power); +void bn_scatter5(const BN_ULONG *inp, size_t num, BN_ULONG *table, + size_t power); +void bn_gather5(BN_ULONG *out, size_t num, BN_ULONG *table, size_t power); +void bn_power5(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table, const BN_ULONG *np, const BN_ULONG *n0, int num, int power); int bn_from_montgomery(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *not_used, const BN_ULONG *np, @@ -855,14 +856,12 @@ // pattern as far as cache lines are concerned. The following functions are // used to transfer a BIGNUM from/to that table. -static void 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, BN_ULONG *table, int idx, + int window) { int i, j; const int width = 1 << window; - BN_ULONG *table = (BN_ULONG *) buf; - if (top > b->width) { - top = b->width; // this works because 'buf' is explicitly zeroed + top = b->width; // This works because |table| is explicitly zeroed. } for (i = 0, j = idx; i < top; i++, j += width) { @@ -870,11 +869,11 @@ } } -static int copy_from_prebuf(BIGNUM *b, int top, unsigned char *buf, int idx, +static int copy_from_prebuf(BIGNUM *b, int top, const BN_ULONG *buf, int idx, int window) { int i, j; const int width = 1 << window; - volatile BN_ULONG *table = (volatile BN_ULONG *)buf; + volatile const BN_ULONG *table = (volatile const BN_ULONG *)buf; if (!bn_wexpand(b, top)) { return 0; @@ -968,7 +967,7 @@ int numPowers; unsigned char *powerbufFree = NULL; int powerbufLen = 0; - unsigned char *powerbuf = NULL; + BN_ULONG *powerbuf = NULL; BIGNUM tmp, am; if (!BN_is_odd(m)) { @@ -1055,7 +1054,7 @@ #if defined(OPENSSL_BN_ASM_MONT5) if ((size_t)powerbufLen <= sizeof(storage)) { - powerbuf = (unsigned char *)storage; + powerbuf = storage; } // |storage| is more than large enough to handle 1024-bit inputs. assert(powerbuf != NULL || top * BN_BITS2 > 1024); @@ -1066,12 +1065,12 @@ if (powerbufFree == NULL) { goto err; } - powerbuf = MOD_EXP_CTIME_ALIGN(powerbufFree); + powerbuf = (BN_ULONG *)MOD_EXP_CTIME_ALIGN(powerbufFree); } OPENSSL_memset(powerbuf, 0, powerbufLen); // lay down tmp and am right after powers table - tmp.d = (BN_ULONG *)(powerbuf + sizeof(m->d[0]) * top * numPowers); + tmp.d = powerbuf + top * numPowers; am.d = tmp.d + top; tmp.width = am.width = 0; tmp.dmax = am.dmax = top;