add CYASSL_SMALL_STACK define for normal math word array into dynamic memory
This commit is contained in:
parent
343ec22c16
commit
8f81bf3526
@ -2012,7 +2012,11 @@ mp_montgomery_setup (mp_int * n, mp_digit * rho)
|
|||||||
int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho)
|
int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho)
|
||||||
{
|
{
|
||||||
int ix, res, olduse;
|
int ix, res, olduse;
|
||||||
|
#ifdef CYASSL_SMALL_STACK
|
||||||
|
mp_word* W; /* uses dynamic memory and slower */
|
||||||
|
#else
|
||||||
mp_word W[MP_WARRAY];
|
mp_word W[MP_WARRAY];
|
||||||
|
#endif
|
||||||
|
|
||||||
/* get old used count */
|
/* get old used count */
|
||||||
olduse = x->used;
|
olduse = x->used;
|
||||||
@ -2024,6 +2028,12 @@ int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CYASSL_SMALL_STACK
|
||||||
|
W = (mp_word*)XMALLOC(sizeof(mp_word) * MP_WARRAY, 0, DYNAMIC_TYPE_BIGINT);
|
||||||
|
if (W == NULL)
|
||||||
|
return MP_MEM;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* first we have to get the digits of the input into
|
/* first we have to get the digits of the input into
|
||||||
* an array of double precision words W[...]
|
* an array of double precision words W[...]
|
||||||
*/
|
*/
|
||||||
@ -2145,6 +2155,10 @@ int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho)
|
|||||||
x->used = n->used + 1;
|
x->used = n->used + 1;
|
||||||
mp_clamp (x);
|
mp_clamp (x);
|
||||||
|
|
||||||
|
#ifdef CYASSL_SMALL_STACK
|
||||||
|
XFREE(W, 0, DYNAMIC_TYPE_BIGINT);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* if A >= m then A = A - m */
|
/* if A >= m then A = A - m */
|
||||||
if (mp_cmp_mag (x, n) != MP_LT) {
|
if (mp_cmp_mag (x, n) != MP_LT) {
|
||||||
return s_mp_sub (x, n, x);
|
return s_mp_sub (x, n, x);
|
||||||
|
Loading…
Reference in New Issue
Block a user