smallstack reduction for wolfSSL_EC_POINT_invert

This commit is contained in:
Chris Conlon
2022-03-18 09:17:11 -06:00
parent 64a309e245
commit 906ea4ad03

View File

@@ -40735,7 +40735,11 @@ int wolfSSL_EC_POINT_invert(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *a,
WOLFSSL_BN_CTX *ctx)
{
ecc_point* p;
mp_int prime;
#ifdef WOLFSSL_SMALL_STACK
mp_int* prime = NULL;
#else
mp_int prime[1];
#endif
(void)ctx;
@@ -40747,22 +40751,42 @@ int wolfSSL_EC_POINT_invert(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *a,
p = (ecc_point*)a->internal;
#ifdef WOLFSSL_SMALL_STACK
prime = (mp_int*)XMALLOC(sizeof(mp_int), NULL, DYNAMIC_TYPE_BIGINT);
if (prime == NULL) {
return WOLFSSL_FAILURE;
}
#endif
/* read the curve prime and a */
if (mp_init_multi(&prime, NULL, NULL, NULL, NULL, NULL) != MP_OKAY) {
if (mp_init_multi(prime, NULL, NULL, NULL, NULL, NULL) != MP_OKAY) {
WOLFSSL_MSG("mp_init_multi error");
#ifdef WOLFSSL_SMALL_STACK
XFREE(prime, NULL, DYNAMIC_TYPE_BIGINT);
#endif
return WOLFSSL_FAILURE;
}
if (mp_sub(&prime, p->y, p->y) != MP_OKAY) {
if (mp_sub(prime, p->y, p->y) != MP_OKAY) {
WOLFSSL_MSG("mp_sub error");
#ifdef WOLFSSL_SMALL_STACK
XFREE(prime, NULL, DYNAMIC_TYPE_BIGINT);
#endif
return WOLFSSL_FAILURE;
}
if (SetECPointExternal(a) != WOLFSSL_SUCCESS) {
WOLFSSL_MSG("SetECPointExternal error");
#ifdef WOLFSSL_SMALL_STACK
XFREE(prime, NULL, DYNAMIC_TYPE_BIGINT);
#endif
return WOLFSSL_FAILURE;
}
#ifdef WOLFSSL_SMALL_STACK
XFREE(prime, NULL, DYNAMIC_TYPE_BIGINT);
#endif
return WOLFSSL_SUCCESS;
}