forked from wolfSSL/wolfssl
Merge pull request #1709 from SparkiDev/rsa_low_mem_fix
Fix for RSA_LOW_MEM and other configurations
This commit is contained in:
@ -746,7 +746,7 @@ int GetInt(mp_int* mpi, const byte* input, word32* inOutIdx, word32 maxIdx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef RSA_LOW_MEM
|
||||
#if !defined(WOLFSSL_KEY_GEN) && !defined(OPENSSL_EXTRA) && defined(RSA_LOW_MEM)
|
||||
#if !defined(NO_RSA) && !defined(HAVE_USER_RSA)
|
||||
static int SkipInt(const byte* input, word32* inOutIdx, word32 maxIdx)
|
||||
{
|
||||
@ -2112,7 +2112,7 @@ int wc_RsaPrivateKeyDecode(const byte* input, word32* inOutIdx, RsaKey* key,
|
||||
GetInt(&key->d, input, inOutIdx, inSz) < 0 ||
|
||||
GetInt(&key->p, input, inOutIdx, inSz) < 0 ||
|
||||
GetInt(&key->q, input, inOutIdx, inSz) < 0) return ASN_RSA_KEY_E;
|
||||
#ifndef RSA_LOW_MEM
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM)
|
||||
if (GetInt(&key->dP, input, inOutIdx, inSz) < 0 ||
|
||||
GetInt(&key->dQ, input, inOutIdx, inSz) < 0 ||
|
||||
GetInt(&key->u, input, inOutIdx, inSz) < 0 ) return ASN_RSA_KEY_E;
|
||||
@ -2344,10 +2344,10 @@ int wc_CheckPrivateKey(byte* key, word32 keySz, DecodedCert* der)
|
||||
word32 keyIdx = 0;
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
a = XMALLOC(sizeof(RsaKey), NULL, DYNAMIC_TYPE_RSA);
|
||||
a = (RsaKey*)XMALLOC(sizeof(RsaKey), NULL, DYNAMIC_TYPE_RSA);
|
||||
if (a == NULL)
|
||||
return MEMORY_E;
|
||||
b = XMALLOC(sizeof(RsaKey), NULL, DYNAMIC_TYPE_RSA);
|
||||
b = (RsaKey*)XMALLOC(sizeof(RsaKey), NULL, DYNAMIC_TYPE_RSA);
|
||||
if (b == NULL) {
|
||||
XFREE(a, NULL, DYNAMIC_TYPE_RSA);
|
||||
return MEMORY_E;
|
||||
@ -2415,10 +2415,10 @@ int wc_CheckPrivateKey(byte* key, word32 keySz, DecodedCert* der)
|
||||
word32 keyIdx = 0;
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
key_pair = XMALLOC(sizeof(ecc_key), NULL, DYNAMIC_TYPE_ECC);
|
||||
key_pair = (ecc_key*)XMALLOC(sizeof(ecc_key), NULL, DYNAMIC_TYPE_ECC);
|
||||
if (key_pair == NULL)
|
||||
return MEMORY_E;
|
||||
privDer = XMALLOC(MAX_ECC_BYTES, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
privDer = (byte*)XMALLOC(MAX_ECC_BYTES, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (privDer == NULL) {
|
||||
XFREE(key_pair, NULL, DYNAMIC_TYPE_ECC);
|
||||
return MEMORY_E;
|
||||
@ -2477,7 +2477,8 @@ int wc_CheckPrivateKey(byte* key, word32 keySz, DecodedCert* der)
|
||||
word32 keyIdx = 0;
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
key_pair = XMALLOC(sizeof(ed25519_key), NULL, DYNAMIC_TYPE_ED25519);
|
||||
key_pair = (ed25519_key*)XMALLOC(sizeof(ed25519_key), NULL,
|
||||
DYNAMIC_TYPE_ED25519);
|
||||
if (key_pair == NULL)
|
||||
return MEMORY_E;
|
||||
#endif
|
||||
|
@ -5078,10 +5078,10 @@ int wc_ecc_verify_hash(const byte* sig, word32 siglen, const byte* hash,
|
||||
r = r_lcl;
|
||||
s = s_lcl;
|
||||
#else
|
||||
r = XMALLOC(sizeof(mp_int), key->heap, DYNAMIC_TYPE_ECC);
|
||||
r = (mp_int*)XMALLOC(sizeof(mp_int), key->heap, DYNAMIC_TYPE_ECC);
|
||||
if (r == NULL)
|
||||
return MEMORY_E;
|
||||
s = XMALLOC(sizeof(mp_int), key->heap, DYNAMIC_TYPE_ECC);
|
||||
s = (mp_int*)XMALLOC(sizeof(mp_int), key->heap, DYNAMIC_TYPE_ECC);
|
||||
if (s == NULL) {
|
||||
XFREE(r, key->heap, DYNAMIC_TYPE_ECC);
|
||||
return MEMORY_E;
|
||||
|
@ -276,7 +276,7 @@ int wc_InitRsaKey_ex(RsaKey* key, void* heap, int devId)
|
||||
if (ret != MP_OKAY)
|
||||
return ret;
|
||||
|
||||
#ifdef RSA_LOW_MEM
|
||||
#if !defined(WOLFSSL_KEY_GEN) && !defined(OPENSSL_EXTRA) && defined(RSA_LOW_MEM)
|
||||
ret = mp_init_multi(&key->d, &key->p, &key->q, NULL, NULL, NULL);
|
||||
#else
|
||||
ret = mp_init_multi(&key->d, &key->p, &key->q, &key->dP, &key->dQ, &key->u);
|
||||
@ -391,7 +391,7 @@ int wc_FreeRsaKey(RsaKey* key)
|
||||
#endif
|
||||
|
||||
if (key->type == RSA_PRIVATE) {
|
||||
#ifndef RSA_LOW_MEM
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM)
|
||||
mp_forcezero(&key->u);
|
||||
mp_forcezero(&key->dQ);
|
||||
mp_forcezero(&key->dP);
|
||||
@ -401,7 +401,7 @@ int wc_FreeRsaKey(RsaKey* key)
|
||||
mp_forcezero(&key->d);
|
||||
}
|
||||
/* private part */
|
||||
#ifndef RSA_LOW_MEM
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM)
|
||||
mp_clear(&key->u);
|
||||
mp_clear(&key->dQ);
|
||||
mp_clear(&key->dP);
|
||||
@ -1422,11 +1422,11 @@ static int wc_RsaFunctionSync(const byte* in, word32 inLen, byte* out,
|
||||
(void)rng;
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
tmp = XMALLOC(sizeof(mp_int), key->heap, DYNAMIC_TYPE_RSA);
|
||||
tmp = (mp_int*)XMALLOC(sizeof(mp_int), key->heap, DYNAMIC_TYPE_RSA);
|
||||
if (tmp == NULL)
|
||||
return MEMORY_E;
|
||||
#ifdef WC_RSA_BLINDING
|
||||
rnd = XMALLOC(sizeof(mp_int) * 2, key->heap, DYNAMIC_TYPE_RSA);
|
||||
rnd = (mp_int*)XMALLOC(sizeof(mp_int) * 2, key->heap, DYNAMIC_TYPE_RSA);
|
||||
if (rnd == NULL) {
|
||||
XFREE(tmp, key->heap, DYNAMIC_TYPE_RSA);
|
||||
return MEMORY_E;
|
||||
@ -1811,7 +1811,7 @@ int wc_RsaFunction(const byte* in, word32 inLen, byte* out,
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
c = XMALLOC(sizeof(mp_int), key->heap, DYNAMIC_TYPE_RSA);
|
||||
c = (mp_int*)XMALLOC(sizeof(mp_int), key->heap, DYNAMIC_TYPE_RSA);
|
||||
if (c == NULL)
|
||||
ret = MEMORY_E;
|
||||
#endif
|
||||
|
@ -114,7 +114,7 @@ enum {
|
||||
/* RSA */
|
||||
struct RsaKey {
|
||||
mp_int n, e, d, p, q;
|
||||
#if defined(WOLFSSL_KEY_GEN) || !defined(RSA_LOW_MEM)
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM)
|
||||
mp_int dP, dQ, u;
|
||||
#endif
|
||||
void* heap; /* for user memory overrides */
|
||||
|
Reference in New Issue
Block a user