mirror of https://github.com/wolfSSL/wolfssl.git
Small Stack Cache: make work again
Fix Small Stack Cache option so that it works with various options including ALT_ECC_SIZE. Allow ALT_ECC_SIZE when SP math all or SP math is compiled in.pull/5582/head
parent
f7c31dbf64
commit
e0a47ca6c1
|
@ -7319,15 +7319,15 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
#ifdef WOLFSSL_SMALL_STACK_CACHE
|
||||
#ifdef WOLFSSL_SMALL_STACK_CACHE
|
||||
key = (ecc_key *)XMALLOC(sizeof(*key), heap, DYNAMIC_TYPE_ECC_BUFFER);
|
||||
if (key == NULL) {
|
||||
XFREE(tB, heap, DYNAMIC_TYPE_ECC_BUFFER);
|
||||
XFREE(tA, heap, DYNAMIC_TYPE_ECC_BUFFER);
|
||||
return GEN_MEM_ERR;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
precomp = (ecc_point**)XMALLOC(sizeof(ecc_point*) * SHAMIR_PRECOMP_SZ, heap,
|
||||
DYNAMIC_TYPE_ECC_BUFFER);
|
||||
if (precomp == NULL) {
|
||||
|
@ -7343,20 +7343,20 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
|
|||
key->t1 = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
|
||||
key->t2 = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
|
||||
#ifdef ALT_ECC_SIZE
|
||||
key.x = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
|
||||
key.y = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
|
||||
key.z = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
|
||||
key->x = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
|
||||
key->y = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
|
||||
key->z = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
|
||||
#endif
|
||||
|
||||
if (key->t1 == NULL || key->t2 == NULL
|
||||
#ifdef ALT_ECC_SIZE
|
||||
|| key.x == NULL || key.y == NULL || key.z == NULL
|
||||
|| key->x == NULL || key->y == NULL || key->z == NULL
|
||||
#endif
|
||||
) {
|
||||
#ifdef ALT_ECC_SIZE
|
||||
XFREE(key.z, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key.y, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key.x, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key->z, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key->y, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key->x, heap, DYNAMIC_TYPE_ECC);
|
||||
#endif
|
||||
XFREE(key->t2, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key->t1, heap, DYNAMIC_TYPE_ECC);
|
||||
|
@ -7575,9 +7575,9 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
|
|||
ForceZero(tB, ECC_BUFSIZE);
|
||||
#ifdef WOLFSSL_SMALL_STACK_CACHE
|
||||
#ifdef ALT_ECC_SIZE
|
||||
XFREE(key.z, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key.y, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key.x, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key->z, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key->y, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key->x, heap, DYNAMIC_TYPE_ECC);
|
||||
#endif
|
||||
XFREE(key->t2, heap, DYNAMIC_TYPE_ECC);
|
||||
XFREE(key->t1, heap, DYNAMIC_TYPE_ECC);
|
||||
|
|
|
@ -340,7 +340,8 @@ typedef struct ecc_set_type {
|
|||
* The ALT_ECC_SIZE option only applies to stack based fast math USE_FAST_MATH.
|
||||
*/
|
||||
|
||||
#ifndef USE_FAST_MATH
|
||||
#if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH_ALL) && \
|
||||
!defined(WOLFSSL_SP_MATH)
|
||||
#error USE_FAST_MATH must be defined to use ALT_ECC_SIZE
|
||||
#endif
|
||||
#ifdef WOLFSSL_NO_MALLOC
|
||||
|
|
Loading…
Reference in New Issue