Skip to content

Commit bddb83b

Browse files
Merge pull request #7992 from ejohnstown/ecc-pct-ss
Small Stack ECC Pairwise Consistency Test
2 parents 005a57f + a81efc0 commit bddb83b

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

wolfcrypt/src/ecc.c

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10228,23 +10228,31 @@ static int _ecc_pairwise_consistency_test(ecc_key* key, WC_RNG* rng)
1022810228
}
1022910229

1023010230
if (!err && (flags & WC_ECC_FLAG_DEC_SIGN)) {
10231+
#ifndef WOLFSSL_SMALL_STACK
10232+
byte sig[MAX_ECC_BYTES + WC_SHA256_DIGEST_SIZE];
10233+
#else
1023110234
byte* sig;
10235+
#endif
1023210236
byte* digest;
1023310237
word32 sigLen, digestLen;
1023410238
int dynRng = 0, res = 0;
1023510239

1023610240
sigLen = (word32)wc_ecc_sig_size(key);
1023710241
digestLen = WC_SHA256_DIGEST_SIZE;
10238-
sig = (byte*)XMALLOC(sigLen + digestLen, NULL, DYNAMIC_TYPE_ECC);
10242+
#ifdef WOLFSSL_SMALL_STACK
10243+
sig = (byte*)XMALLOC(sigLen + digestLen, key->heap, DYNAMIC_TYPE_ECC);
1023910244
if (sig == NULL)
1024010245
return MEMORY_E;
10246+
#endif
1024110247
digest = sig + sigLen;
1024210248

1024310249
if (rng == NULL) {
1024410250
dynRng = 1;
10245-
rng = wc_rng_new(NULL, 0, NULL);
10251+
rng = wc_rng_new(NULL, 0, key->heap);
1024610252
if (rng == NULL) {
10247-
XFREE(sig, NULL, DYNAMIC_TYPE_ECC);
10253+
#ifdef WOLFSSL_SMALL_STACK
10254+
XFREE(sig, key->heap, DYNAMIC_TYPE_ECC);
10255+
#endif
1024810256
return MEMORY_E;
1024910257
}
1025010258
}
@@ -10265,7 +10273,9 @@ static int _ecc_pairwise_consistency_test(ecc_key* key, WC_RNG* rng)
1026510273
wc_rng_free(rng);
1026610274
}
1026710275
ForceZero(sig, sigLen + digestLen);
10268-
XFREE(sig, NULL, DYNAMIC_TYPE_ECC);
10276+
#ifdef WOLFSSL_SMALL_STACK
10277+
XFREE(sig, key->heap, DYNAMIC_TYPE_ECC);
10278+
#endif
1026910279
}
1027010280
(void)rng;
1027110281

0 commit comments

Comments
 (0)