internal.c: refactoring SendCertificateVerify to reduce stack usage:

--- variable encodedSig moved to the heap (512 bytes saved)
This commit is contained in:
Moisés Guimarães 2014-10-18 14:31:14 -03:00
parent 845e49781f
commit 9368c8d1e8
1 changed files with 24 additions and 1 deletions

View File

@ -10388,8 +10388,27 @@ static void PickHashSigAlgo(CYASSL* ssl,
byte* signBuffer = NULL; byte* signBuffer = NULL;
#endif #endif
word32 signSz = FINISHED_SZ; word32 signSz = FINISHED_SZ;
byte encodedSig[MAX_ENCODED_SIG_SZ];
word32 extraSz = 0; /* tls 1.2 hash/sig */ word32 extraSz = 0; /* tls 1.2 hash/sig */
#ifdef CYASSL_SMALL_STACK
byte* encodedSig = NULL;
#else
byte encodedSig[MAX_ENCODED_SIG_SZ];
#endif
#ifdef CYASSL_SMALL_STACK
encodedSig = (byte*)XMALLOC(MAX_ENCODED_SIG_SZ, NULL,
DYNAMIC_TYPE_TMP_BUFFER);
if (encodedSig == NULL) {
#ifndef NO_RSA
if (initRsaKey)
FreeRsaKey(&key);
#endif
#ifdef HAVE_ECC
ecc_free(&eccKey);
#endif
return MEMORY_E;
}
#endif
(void)encodedSig; (void)encodedSig;
(void)signSz; (void)signSz;
@ -10541,6 +10560,10 @@ static void PickHashSigAlgo(CYASSL* ssl,
ret = 0; /* RSA reset */ ret = 0; /* RSA reset */
} }
#endif #endif
#ifdef CYASSL_SMALL_STACK
XFREE(encodedSig, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
if (ret == 0) { if (ret == 0) {
AddHeaders(output, length + extraSz + VERIFY_HEADER, AddHeaders(output, length + extraSz + VERIFY_HEADER,
certificate_verify, ssl); certificate_verify, ssl);