mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
Merge pull request #2929 from dgarske/sp_rsalowmem
Fix for SP math with `RSA_LOW_MEM` (ARM only)
This commit is contained in:
@ -7489,63 +7489,6 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 256U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 64;
|
||||
m = a + 128;
|
||||
r = a;
|
||||
|
||||
sp_2048_from_bin(a, 64, in, inLen);
|
||||
sp_2048_from_mp(d, 64, dm);
|
||||
sp_2048_from_mp(m, 64, mm);
|
||||
err = sp_2048_mod_exp_64(r, a, d, 2048, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_to_bin(r, out);
|
||||
*outLen = 256;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 64);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -7774,6 +7717,63 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 256U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 64;
|
||||
m = a + 128;
|
||||
r = a;
|
||||
|
||||
sp_2048_from_bin(a, 64, in, inLen);
|
||||
sp_2048_from_mp(d, 64, dm);
|
||||
sp_2048_from_mp(m, 64, mm);
|
||||
err = sp_2048_mod_exp_64(r, a, d, 2048, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_to_bin(r, out);
|
||||
*outLen = 256;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 64);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[64 * 2];
|
||||
sp_digit p[32], q[32], dp[32];
|
||||
@ -7869,11 +7869,10 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
@ -19035,63 +19034,6 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 384U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 96 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 96;
|
||||
m = a + 192;
|
||||
r = a;
|
||||
|
||||
sp_3072_from_bin(a, 96, in, inLen);
|
||||
sp_3072_from_mp(d, 96, dm);
|
||||
sp_3072_from_mp(m, 96, mm);
|
||||
err = sp_3072_mod_exp_96(r, a, d, 3072, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_to_bin(r, out);
|
||||
*outLen = 384;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 96);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -19400,6 +19342,63 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 384U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 96 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 96;
|
||||
m = a + 192;
|
||||
r = a;
|
||||
|
||||
sp_3072_from_bin(a, 96, in, inLen);
|
||||
sp_3072_from_mp(d, 96, dm);
|
||||
sp_3072_from_mp(m, 96, mm);
|
||||
err = sp_3072_mod_exp_96(r, a, d, 3072, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_to_bin(r, out);
|
||||
*outLen = 384;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 96);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[96 * 2];
|
||||
sp_digit p[48], q[48], dp[48];
|
||||
@ -19495,11 +19494,10 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
@ -71655,63 +71653,6 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 512U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 128 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 128;
|
||||
m = a + 256;
|
||||
r = a;
|
||||
|
||||
sp_4096_from_bin(a, 128, in, inLen);
|
||||
sp_4096_from_mp(d, 128, dm);
|
||||
sp_4096_from_mp(m, 128, mm);
|
||||
err = sp_4096_mod_exp_128(r, a, d, 4096, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_to_bin(r, out);
|
||||
*outLen = 512;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 128);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -72100,6 +72041,63 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 512U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 128 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 128;
|
||||
m = a + 256;
|
||||
r = a;
|
||||
|
||||
sp_4096_from_bin(a, 128, in, inLen);
|
||||
sp_4096_from_mp(d, 128, dm);
|
||||
sp_4096_from_mp(m, 128, mm);
|
||||
err = sp_4096_mod_exp_128(r, a, d, 4096, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_to_bin(r, out);
|
||||
*outLen = 512;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 128);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[128 * 2];
|
||||
sp_digit p[64], q[64], dp[64];
|
||||
@ -72195,11 +72193,10 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
|
@ -4991,63 +4991,6 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 256U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 32 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 32;
|
||||
m = a + 64;
|
||||
r = a;
|
||||
|
||||
sp_2048_from_bin(a, 32, in, inLen);
|
||||
sp_2048_from_mp(d, 32, dm);
|
||||
sp_2048_from_mp(m, 32, mm);
|
||||
err = sp_2048_mod_exp_32(r, a, d, 2048, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_to_bin(r, out);
|
||||
*outLen = 256;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 32);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -5172,6 +5115,63 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 256U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 32 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 32;
|
||||
m = a + 64;
|
||||
r = a;
|
||||
|
||||
sp_2048_from_bin(a, 32, in, inLen);
|
||||
sp_2048_from_mp(d, 32, dm);
|
||||
sp_2048_from_mp(m, 32, mm);
|
||||
err = sp_2048_mod_exp_32(r, a, d, 2048, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_to_bin(r, out);
|
||||
*outLen = 256;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 32);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[32 * 2];
|
||||
sp_digit p[16], q[16], dp[16];
|
||||
@ -5267,11 +5267,10 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
@ -12695,63 +12694,6 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 384U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 48 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 48;
|
||||
m = a + 96;
|
||||
r = a;
|
||||
|
||||
sp_3072_from_bin(a, 48, in, inLen);
|
||||
sp_3072_from_mp(d, 48, dm);
|
||||
sp_3072_from_mp(m, 48, mm);
|
||||
err = sp_3072_mod_exp_48(r, a, d, 3072, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_to_bin(r, out);
|
||||
*outLen = 384;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 48);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -12904,6 +12846,63 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 384U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 48 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 48;
|
||||
m = a + 96;
|
||||
r = a;
|
||||
|
||||
sp_3072_from_bin(a, 48, in, inLen);
|
||||
sp_3072_from_mp(d, 48, dm);
|
||||
sp_3072_from_mp(m, 48, mm);
|
||||
err = sp_3072_mod_exp_48(r, a, d, 3072, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_to_bin(r, out);
|
||||
*outLen = 384;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 48);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[48 * 2];
|
||||
sp_digit p[24], q[24], dp[24];
|
||||
@ -12999,11 +12998,10 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
@ -17625,63 +17623,6 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 512U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 64;
|
||||
m = a + 128;
|
||||
r = a;
|
||||
|
||||
sp_4096_from_bin(a, 64, in, inLen);
|
||||
sp_4096_from_mp(d, 64, dm);
|
||||
sp_4096_from_mp(m, 64, mm);
|
||||
err = sp_4096_mod_exp_64(r, a, d, 4096, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_to_bin(r, out);
|
||||
*outLen = 512;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 64);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -17862,6 +17803,63 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 512U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 64;
|
||||
m = a + 128;
|
||||
r = a;
|
||||
|
||||
sp_4096_from_bin(a, 64, in, inLen);
|
||||
sp_4096_from_mp(d, 64, dm);
|
||||
sp_4096_from_mp(m, 64, mm);
|
||||
err = sp_4096_mod_exp_64(r, a, d, 4096, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_to_bin(r, out);
|
||||
*outLen = 512;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 64);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[64 * 2];
|
||||
sp_digit p[32], q[32], dp[32];
|
||||
@ -17957,11 +17955,10 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
|
@ -4362,63 +4362,6 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 256U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 64;
|
||||
m = a + 128;
|
||||
r = a;
|
||||
|
||||
sp_2048_from_bin(a, 64, in, inLen);
|
||||
sp_2048_from_mp(d, 64, dm);
|
||||
sp_2048_from_mp(m, 64, mm);
|
||||
err = sp_2048_mod_exp_64(r, a, d, 2048, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_to_bin(r, out);
|
||||
*outLen = 256;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 64);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -4480,6 +4423,63 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 256U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 64;
|
||||
m = a + 128;
|
||||
r = a;
|
||||
|
||||
sp_2048_from_bin(a, 64, in, inLen);
|
||||
sp_2048_from_mp(d, 64, dm);
|
||||
sp_2048_from_mp(m, 64, mm);
|
||||
err = sp_2048_mod_exp_64(r, a, d, 2048, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_to_bin(r, out);
|
||||
*outLen = 256;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 64);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[64 * 2];
|
||||
sp_digit p[32], q[32], dp[32];
|
||||
@ -4575,11 +4575,10 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
@ -10163,63 +10162,6 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 384U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 96 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 96;
|
||||
m = a + 192;
|
||||
r = a;
|
||||
|
||||
sp_3072_from_bin(a, 96, in, inLen);
|
||||
sp_3072_from_mp(d, 96, dm);
|
||||
sp_3072_from_mp(m, 96, mm);
|
||||
err = sp_3072_mod_exp_96(r, a, d, 3072, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_to_bin(r, out);
|
||||
*outLen = 384;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 96);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -10281,6 +10223,63 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 384U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 96 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 96;
|
||||
m = a + 192;
|
||||
r = a;
|
||||
|
||||
sp_3072_from_bin(a, 96, in, inLen);
|
||||
sp_3072_from_mp(d, 96, dm);
|
||||
sp_3072_from_mp(m, 96, mm);
|
||||
err = sp_3072_mod_exp_96(r, a, d, 3072, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_to_bin(r, out);
|
||||
*outLen = 384;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 96);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[96 * 2];
|
||||
sp_digit p[48], q[48], dp[48];
|
||||
@ -10376,11 +10375,10 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
@ -14623,63 +14621,6 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 512U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 128 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 128;
|
||||
m = a + 256;
|
||||
r = a;
|
||||
|
||||
sp_4096_from_bin(a, 128, in, inLen);
|
||||
sp_4096_from_mp(d, 128, dm);
|
||||
sp_4096_from_mp(m, 128, mm);
|
||||
err = sp_4096_mod_exp_128(r, a, d, 4096, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_to_bin(r, out);
|
||||
*outLen = 512;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 128);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -14742,6 +14683,63 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 512U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 128 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 128;
|
||||
m = a + 256;
|
||||
r = a;
|
||||
|
||||
sp_4096_from_bin(a, 128, in, inLen);
|
||||
sp_4096_from_mp(d, 128, dm);
|
||||
sp_4096_from_mp(m, 128, mm);
|
||||
err = sp_4096_mod_exp_128(r, a, d, 4096, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_to_bin(r, out);
|
||||
*outLen = 512;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 128);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[128 * 2];
|
||||
sp_digit p[64], q[64], dp[64];
|
||||
@ -14837,11 +14835,10 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
|
@ -4116,63 +4116,6 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 256U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 64;
|
||||
m = a + 128;
|
||||
r = a;
|
||||
|
||||
sp_2048_from_bin(a, 64, in, inLen);
|
||||
sp_2048_from_mp(d, 64, dm);
|
||||
sp_2048_from_mp(m, 64, mm);
|
||||
err = sp_2048_mod_exp_64(r, a, d, 2048, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_to_bin(r, out);
|
||||
*outLen = 256;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 64);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -4232,6 +4175,63 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 256U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 64;
|
||||
m = a + 128;
|
||||
r = a;
|
||||
|
||||
sp_2048_from_bin(a, 64, in, inLen);
|
||||
sp_2048_from_mp(d, 64, dm);
|
||||
sp_2048_from_mp(m, 64, mm);
|
||||
err = sp_2048_mod_exp_64(r, a, d, 2048, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_to_bin(r, out);
|
||||
*outLen = 256;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 64);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[64 * 2];
|
||||
sp_digit p[32], q[32], dp[32];
|
||||
@ -4327,11 +4327,10 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
@ -8766,63 +8765,6 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 384U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 96 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 96;
|
||||
m = a + 192;
|
||||
r = a;
|
||||
|
||||
sp_3072_from_bin(a, 96, in, inLen);
|
||||
sp_3072_from_mp(d, 96, dm);
|
||||
sp_3072_from_mp(m, 96, mm);
|
||||
err = sp_3072_mod_exp_96(r, a, d, 3072, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_to_bin(r, out);
|
||||
*outLen = 384;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 96);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -8882,6 +8824,63 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 384U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 96 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 96;
|
||||
m = a + 192;
|
||||
r = a;
|
||||
|
||||
sp_3072_from_bin(a, 96, in, inLen);
|
||||
sp_3072_from_mp(d, 96, dm);
|
||||
sp_3072_from_mp(m, 96, mm);
|
||||
err = sp_3072_mod_exp_96(r, a, d, 3072, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_to_bin(r, out);
|
||||
*outLen = 384;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 96);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[96 * 2];
|
||||
sp_digit p[48], q[48], dp[48];
|
||||
@ -8977,11 +8976,10 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
@ -12362,63 +12360,6 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
||||
return err;
|
||||
}
|
||||
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 512U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 128 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 128;
|
||||
m = a + 256;
|
||||
r = a;
|
||||
|
||||
sp_4096_from_bin(a, 128, in, inLen);
|
||||
sp_4096_from_mp(d, 128, dm);
|
||||
sp_4096_from_mp(m, 128, mm);
|
||||
err = sp_4096_mod_exp_128(r, a, d, 4096, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_to_bin(r, out);
|
||||
*outLen = 512;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 128);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
/* Conditionally add a and b using the mask m.
|
||||
* m is -1 to add and 0 when not.
|
||||
@ -12479,6 +12420,63 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
||||
mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, mp_int* mm,
|
||||
byte* out, word32* outLen)
|
||||
{
|
||||
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
||||
sp_digit* a;
|
||||
sp_digit* d = NULL;
|
||||
sp_digit* m;
|
||||
sp_digit* r;
|
||||
int err = MP_OKAY;
|
||||
|
||||
(void)pm;
|
||||
(void)qm;
|
||||
(void)dpm;
|
||||
(void)dqm;
|
||||
(void)qim;
|
||||
|
||||
if (*outLen < 512U) {
|
||||
err = MP_TO_E;
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 128 * 4, NULL,
|
||||
DYNAMIC_TYPE_RSA);
|
||||
if (d == NULL) {
|
||||
err = MEMORY_E;
|
||||
}
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
a = d + 128;
|
||||
m = a + 256;
|
||||
r = a;
|
||||
|
||||
sp_4096_from_bin(a, 128, in, inLen);
|
||||
sp_4096_from_mp(d, 128, dm);
|
||||
sp_4096_from_mp(m, 128, mm);
|
||||
err = sp_4096_mod_exp_128(r, a, d, 4096, m, 0);
|
||||
}
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_to_bin(r, out);
|
||||
*outLen = 512;
|
||||
}
|
||||
|
||||
if (d != NULL) {
|
||||
XMEMSET(d, 0, sizeof(sp_digit) * 128);
|
||||
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
||||
}
|
||||
|
||||
return err;
|
||||
#else
|
||||
#if (!defined(WOLFSSL_SP_SMALL) && !defined(WOLFSSL_SMALL_STACK)) || defined(WOLFSSL_SP_NO_MALLOC)
|
||||
sp_digit a[128 * 2];
|
||||
sp_digit p[64], q[64], dp[64];
|
||||
@ -12574,11 +12572,10 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
||||
XMEMSET(q, 0, sizeof(q));
|
||||
XMEMSET(dp, 0, sizeof(dp));
|
||||
#endif
|
||||
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
return err;
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
||||
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
||||
|
Reference in New Issue
Block a user