asn: refactoring SignCert to reduce stack usage: 512 bytes - pointers size moved to the heap.
--- variable sig moved to the heap (1152 bytes saved)
This commit is contained in:
parent
30977adc84
commit
1739aea535
@ -5851,21 +5851,28 @@ int MakeCertReq(Cert* cert, byte* derBuffer, word32 derSz,
|
|||||||
int SignCert(int requestSz, int sType, byte* buffer, word32 buffSz,
|
int SignCert(int requestSz, int sType, byte* buffer, word32 buffSz,
|
||||||
RsaKey* rsaKey, ecc_key* eccKey, RNG* rng)
|
RsaKey* rsaKey, ecc_key* eccKey, RNG* rng)
|
||||||
{
|
{
|
||||||
byte sig[MAX_ENCODED_SIG_SZ];
|
|
||||||
int sigSz;
|
int sigSz;
|
||||||
|
DECLARE_ARRAY(byte, sig, MAX_ENCODED_SIG_SZ);
|
||||||
|
|
||||||
if (requestSz < 0)
|
if (requestSz < 0)
|
||||||
return requestSz;
|
return requestSz;
|
||||||
|
|
||||||
sigSz = MakeSignature(buffer, requestSz, sig, sizeof(sig), rsaKey, eccKey,
|
if (!CREATE_ARRAY(byte, sig, MAX_ENCODED_SIG_SZ))
|
||||||
rng, sType);
|
return MEMORY_E;
|
||||||
if (sigSz < 0)
|
|
||||||
return sigSz;
|
|
||||||
|
|
||||||
|
sigSz = MakeSignature(buffer, requestSz, sig, MAX_ENCODED_SIG_SZ, rsaKey,
|
||||||
|
eccKey, rng, sType);
|
||||||
|
|
||||||
|
if (sigSz >= 0) {
|
||||||
if (requestSz + MAX_SEQ_SZ * 2 + sigSz > (int)buffSz)
|
if (requestSz + MAX_SEQ_SZ * 2 + sigSz > (int)buffSz)
|
||||||
return BUFFER_E;
|
sigSz = BUFFER_E;
|
||||||
|
else
|
||||||
|
sigSz = AddSignature(buffer, requestSz, sig, sigSz, sType);
|
||||||
|
}
|
||||||
|
|
||||||
return AddSignature(buffer, requestSz, sig, sigSz, sType);
|
DESTROY_ARRAY(sig);
|
||||||
|
|
||||||
|
return sigSz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user