mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-31 19:24:42 +02:00
more changes from PR comments
This commit is contained in:
@@ -25944,7 +25944,9 @@ int wc_RsaKeyToDer(RsaKey* key, byte* output, word32 inLen)
|
|||||||
byte seq[MAX_SEQ_SZ];
|
byte seq[MAX_SEQ_SZ];
|
||||||
byte ver[MAX_VERSION_SZ];
|
byte ver[MAX_VERSION_SZ];
|
||||||
mp_int* keyInt;
|
mp_int* keyInt;
|
||||||
|
#ifndef WOLFSSL_NO_MALLOC
|
||||||
byte* tmps[RSA_INTS];
|
byte* tmps[RSA_INTS];
|
||||||
|
#endif
|
||||||
|
|
||||||
if (key == NULL)
|
if (key == NULL)
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
@@ -25952,25 +25954,17 @@ int wc_RsaKeyToDer(RsaKey* key, byte* output, word32 inLen)
|
|||||||
if (key->type != RSA_PRIVATE)
|
if (key->type != RSA_PRIVATE)
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
|
|
||||||
XMEMSET(tmps, 0, sizeof(tmps));
|
#ifndef WOLFSSL_NO_MALLOC
|
||||||
|
|
||||||
for (i = 0; i < RSA_INTS; i++)
|
for (i = 0; i < RSA_INTS; i++)
|
||||||
tmps[i] = NULL;
|
tmps[i] = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* write all big ints from key to DER tmps */
|
/* write all big ints from key to DER tmps */
|
||||||
for (i = 0; i < RSA_INTS; i++) {
|
for (i = 0; i < RSA_INTS; i++) {
|
||||||
keyInt = GetRsaInt(key, i);
|
keyInt = GetRsaInt(key, i);
|
||||||
ret = mp_unsigned_bin_size(keyInt);
|
ret = mp_unsigned_bin_size(keyInt);
|
||||||
if (ret < 0) {
|
if (ret < 0)
|
||||||
#ifndef WOLFSSL_NO_MALLOC
|
break;
|
||||||
/* free outstanding tmps */
|
|
||||||
for (i = 0; i < RSA_INTS; i++) {
|
|
||||||
if (tmps[i] != NULL)
|
|
||||||
XFREE(tmps[i], key->heap, DYNAMIC_TYPE_RSA);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
rawLen = (word32)ret + 1;
|
rawLen = (word32)ret + 1;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
#ifndef WOLFSSL_NO_MALLOC
|
#ifndef WOLFSSL_NO_MALLOC
|
||||||
@@ -25982,8 +25976,10 @@ int wc_RsaKeyToDer(RsaKey* key, byte* output, word32 inLen)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
mpSz = SetASNIntMP(keyInt, MAX_RSA_INT_SZ, tmps[i]);
|
mpSz = SetASNIntMP(keyInt, MAX_RSA_INT_SZ, tmps[i]);
|
||||||
|
#else
|
||||||
|
mpSz = SetASNIntMP(keyInt, MAX_RSA_INT_SZ, NULL);
|
||||||
|
#endif
|
||||||
if (mpSz < 0) {
|
if (mpSz < 0) {
|
||||||
ret = mpSz;
|
ret = mpSz;
|
||||||
break;
|
break;
|
||||||
@@ -26025,8 +26021,8 @@ int wc_RsaKeyToDer(RsaKey* key, byte* output, word32 inLen)
|
|||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
rawLen = (word32)ret + 1;
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
/* This won't overrun output due to the outLen check above */
|
||||||
mpSz = SetASNIntMP(keyInt, MAX_RSA_INT_SZ, output + j);
|
mpSz = SetASNIntMP(keyInt, MAX_RSA_INT_SZ, output + j);
|
||||||
if (mpSz < 0) {
|
if (mpSz < 0) {
|
||||||
ret = mpSz;
|
ret = mpSz;
|
||||||
@@ -26037,10 +26033,12 @@ int wc_RsaKeyToDer(RsaKey* key, byte* output, word32 inLen)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WOLFSSL_NO_MALLOC
|
||||||
for (i = 0; i < RSA_INTS; i++) {
|
for (i = 0; i < RSA_INTS; i++) {
|
||||||
if (tmps[i])
|
if (tmps[i])
|
||||||
XFREE(tmps[i], key->heap, DYNAMIC_TYPE_RSA);
|
XFREE(tmps[i], key->heap, DYNAMIC_TYPE_RSA);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
ret = (int)outLen;
|
ret = (int)outLen;
|
||||||
|
@@ -4724,6 +4724,7 @@ int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng)
|
|||||||
#ifndef WOLFSSL_NO_MALLOC
|
#ifndef WOLFSSL_NO_MALLOC
|
||||||
byte* buf = NULL;
|
byte* buf = NULL;
|
||||||
#else
|
#else
|
||||||
|
/* RSA_MAX_SIZE is the size of n in bits. */
|
||||||
byte buf[RSA_MAX_SIZE/16];
|
byte buf[RSA_MAX_SIZE/16];
|
||||||
#endif
|
#endif
|
||||||
#endif /* !WOLFSSL_CRYPTOCELL && !WOLFSSL_SE050 */
|
#endif /* !WOLFSSL_CRYPTOCELL && !WOLFSSL_SE050 */
|
||||||
@@ -4946,6 +4947,8 @@ int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng)
|
|||||||
ForceZero(buf, primeSz);
|
ForceZero(buf, primeSz);
|
||||||
XFREE(buf, key->heap, DYNAMIC_TYPE_RSA);
|
XFREE(buf, key->heap, DYNAMIC_TYPE_RSA);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
ForceZero(buf, primeSz);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (err == MP_OKAY && mp_cmp(p, q) < 0) {
|
if (err == MP_OKAY && mp_cmp(p, q) < 0) {
|
||||||
|
Reference in New Issue
Block a user