Merge pull request #3652 from d-otte/mbedtls-2.7
Backport 2.7: adjusting size of sliding window array to correct size
This commit is contained in:
commit
5796dfe197
4 changed files with 7 additions and 4 deletions
3
ChangeLog.d/adjusting sliding_window_size_PR3592.txt
Normal file
3
ChangeLog.d/adjusting sliding_window_size_PR3592.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Changes
|
||||||
|
* Reduce stack usage significantly during sliding window exponentiation.
|
||||||
|
Reported in #3591 and fix contributed in #3592 by Daniel Otte.
|
|
@ -83,12 +83,12 @@
|
||||||
* Maximum window size used for modular exponentiation. Default: 6
|
* Maximum window size used for modular exponentiation. Default: 6
|
||||||
* Minimum value: 1. Maximum value: 6.
|
* Minimum value: 1. Maximum value: 6.
|
||||||
*
|
*
|
||||||
* Result is an array of ( 2 << MBEDTLS_MPI_WINDOW_SIZE ) MPIs used
|
* Result is an array of ( 2 ** MBEDTLS_MPI_WINDOW_SIZE ) MPIs used
|
||||||
* for the sliding window calculation. (So 64 by default)
|
* for the sliding window calculation. (So 64 by default)
|
||||||
*
|
*
|
||||||
* Reduction in size, reduces speed.
|
* Reduction in size, reduces speed.
|
||||||
*/
|
*/
|
||||||
#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */
|
#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum window size used. */
|
||||||
#endif /* !MBEDTLS_MPI_WINDOW_SIZE */
|
#endif /* !MBEDTLS_MPI_WINDOW_SIZE */
|
||||||
|
|
||||||
#if !defined(MBEDTLS_MPI_MAX_SIZE)
|
#if !defined(MBEDTLS_MPI_MAX_SIZE)
|
||||||
|
|
|
@ -2814,7 +2814,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* MPI / BIGNUM options */
|
/* MPI / BIGNUM options */
|
||||||
//#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */
|
//#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum window size used. */
|
||||||
//#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */
|
//#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */
|
||||||
|
|
||||||
/* CTR_DRBG options */
|
/* CTR_DRBG options */
|
||||||
|
|
|
@ -1850,7 +1850,7 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi
|
||||||
size_t i, j, nblimbs;
|
size_t i, j, nblimbs;
|
||||||
size_t bufsize, nbits;
|
size_t bufsize, nbits;
|
||||||
mbedtls_mpi_uint ei, mm, state;
|
mbedtls_mpi_uint ei, mm, state;
|
||||||
mbedtls_mpi RR, T, W[ 2 << MBEDTLS_MPI_WINDOW_SIZE ], Apos;
|
mbedtls_mpi RR, T, W[ 1 << MBEDTLS_MPI_WINDOW_SIZE ], Apos;
|
||||||
int neg;
|
int neg;
|
||||||
|
|
||||||
if( mbedtls_mpi_cmp_int( N, 0 ) <= 0 || ( N->p[0] & 1 ) == 0 )
|
if( mbedtls_mpi_cmp_int( N, 0 ) <= 0 || ( N->p[0] & 1 ) == 0 )
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue