mpi_exp_mod: remove the 'one' variable
Signed-off-by: Janos Follath <janos.follath@arm.com>
diff --git a/library/bignum.c b/library/bignum.c
index 1ce552c..ad1a5d4 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -2001,7 +2001,7 @@
mbedtls_mpi *prec_RR )
{
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
- size_t window_bitsize, one = 1;
+ size_t window_bitsize;
size_t i, j, nblimbs;
size_t bufsize, nbits;
mbedtls_mpi_uint ei, mm, state;
@@ -2122,9 +2122,12 @@
if( window_bitsize > 1 )
{
/*
- * W[1 << (window_bitsize - 1)] = W[1] ^ (window_bitsize - 1)
+ * W[i] = W[1] ^ i
+ *
+ * The first bit of the sliding window is always 1 and therefore we
+ * only need to store the second half of the table.
*/
- j = one << ( window_bitsize - 1 );
+ j = w_table_used_size / 2;
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[j], N->n + 1 ) );
MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &W[j], &W[1] ) );
@@ -2134,8 +2137,10 @@
/*
* W[i] = W[i - 1] * W[1]
+ * (The last element in the table is for the result X, so we don't need
+ * to calculate that.)
*/
- for( i = j + 1; i < ( one << window_bitsize ); i++ )
+ for( i = j + 1; i < w_table_used_size - 1; i++ )
{
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( &W[i], N->n + 1 ) );
MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &W[i], &W[i - 1] ) );
@@ -2225,7 +2230,7 @@
exponent_bits_in_window <<= 1;
- if( ( exponent_bits_in_window & ( one << window_bitsize ) ) != 0 )
+ if( ( exponent_bits_in_window & ( (size_t) 1 << window_bitsize ) ) != 0 )
{
MBEDTLS_MPI_CHK( mpi_select( &WW, W, w_table_used_size, 1 ) );
mpi_montmul( &W[x_index], &WW, N, mm, &T );