SP: regenerated SP code

This commit is contained in:
Sean Parkinson
2021-10-13 08:37:38 +10:00
parent 7f1dbd8709
commit 5748818427

View File

@ -1956,10 +1956,17 @@ int sp_ModExp_2048(const mp_int* base, const mp_int* exp, const mp_int* mod,
mp_int* res) mp_int* res)
{ {
int err = MP_OKAY; int err = MP_OKAY;
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
sp_digit *b = NULL;
sp_digit *e = NULL;
sp_digit *m = NULL;
sp_digit* r;
#else
sp_digit b[64]; sp_digit b[64];
sp_digit e[32]; sp_digit e[32];
sp_digit m[32]; sp_digit m[32];
sp_digit* r = b; sp_digit* r = b;
#endif
#ifdef HAVE_INTEL_AVX2 #ifdef HAVE_INTEL_AVX2
word32 cpuid_flags = cpuid_get_flags(); word32 cpuid_flags = cpuid_get_flags();
#endif #endif
@ -1973,6 +1980,19 @@ int sp_ModExp_2048(const mp_int* base, const mp_int* exp, const mp_int* mod,
err = MP_VAL; err = MP_VAL;
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (err == MP_OKAY) {
if (((b = (sp_digit *)XMALLOC(64 * sizeof(*b), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((e = (sp_digit *)XMALLOC(32 * sizeof(*e), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((m = (sp_digit *)XMALLOC(32 * sizeof(*m), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL))
{
err = MEMORY_E;
} else {
r = b;
}
}
#endif
if (err == MP_OKAY) { if (err == MP_OKAY) {
sp_2048_from_mp(b, 32, base); sp_2048_from_mp(b, 32, base);
sp_2048_from_mp(e, 32, exp); sp_2048_from_mp(e, 32, exp);
@ -1990,7 +2010,18 @@ int sp_ModExp_2048(const mp_int* base, const mp_int* exp, const mp_int* mod,
err = sp_2048_to_mp(r, res); err = sp_2048_to_mp(r, res);
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (b != NULL)
XFREE(b, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (e != NULL) {
XMEMSET(e, 0, 32);
XFREE(e, NULL, DYNAMIC_TYPE_TMP_BUFFER);
}
if (m != NULL)
XFREE(m, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#else
XMEMSET(e, 0, sizeof(e)); XMEMSET(e, 0, sizeof(e));
#endif
return err; return err;
} }
@ -2266,10 +2297,17 @@ int sp_DhExp_2048(const mp_int* base, const byte* exp, word32 expLen,
const mp_int* mod, byte* out, word32* outLen) const mp_int* mod, byte* out, word32* outLen)
{ {
int err = MP_OKAY; int err = MP_OKAY;
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
sp_digit *b = NULL;
sp_digit *e = NULL;
sp_digit *m = NULL;
sp_digit* r;
#else
sp_digit b[64]; sp_digit b[64];
sp_digit e[32]; sp_digit e[32];
sp_digit m[32]; sp_digit m[32];
sp_digit* r = b; sp_digit* r = b;
#endif
word32 i; word32 i;
#ifdef HAVE_INTEL_AVX2 #ifdef HAVE_INTEL_AVX2
word32 cpuid_flags = cpuid_get_flags(); word32 cpuid_flags = cpuid_get_flags();
@ -2283,6 +2321,19 @@ int sp_DhExp_2048(const mp_int* base, const byte* exp, word32 expLen,
err = MP_VAL; err = MP_VAL;
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (err == MP_OKAY) {
if (((b = (sp_digit *)XMALLOC(64 * sizeof(*b), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((e = (sp_digit *)XMALLOC(32 * sizeof(*e), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((m = (sp_digit *)XMALLOC(32 * sizeof(*m), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL))
{
err = MEMORY_E;
} else {
r = b;
}
}
#endif
if (err == MP_OKAY) { if (err == MP_OKAY) {
sp_2048_from_mp(b, 32, base); sp_2048_from_mp(b, 32, base);
sp_2048_from_bin(e, 32, exp, expLen); sp_2048_from_bin(e, 32, exp, expLen);
@ -2319,7 +2370,18 @@ int sp_DhExp_2048(const mp_int* base, const byte* exp, word32 expLen,
XMEMMOVE(out, out + i, *outLen); XMEMMOVE(out, out + i, *outLen);
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (b != NULL)
XFREE(b, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (e != NULL) {
XMEMSET(e, 0, 32);
XFREE(e, NULL, DYNAMIC_TYPE_TMP_BUFFER);
}
if (m != NULL)
XFREE(m, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#else
XMEMSET(e, 0, sizeof(e)); XMEMSET(e, 0, sizeof(e));
#endif
return err; return err;
} }
@ -2337,10 +2399,17 @@ int sp_ModExp_1024(const mp_int* base, const mp_int* exp, const mp_int* mod,
mp_int* res) mp_int* res)
{ {
int err = MP_OKAY; int err = MP_OKAY;
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
sp_digit *b = NULL;
sp_digit *e = NULL;
sp_digit *m = NULL;
sp_digit* r;
#else
sp_digit b[32]; sp_digit b[32];
sp_digit e[16]; sp_digit e[16];
sp_digit m[16]; sp_digit m[16];
sp_digit* r = b; sp_digit* r = b;
#endif
#ifdef HAVE_INTEL_AVX2 #ifdef HAVE_INTEL_AVX2
word32 cpuid_flags = cpuid_get_flags(); word32 cpuid_flags = cpuid_get_flags();
#endif #endif
@ -2354,6 +2423,19 @@ int sp_ModExp_1024(const mp_int* base, const mp_int* exp, const mp_int* mod,
err = MP_VAL; err = MP_VAL;
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (err == MP_OKAY) {
if (((b = (sp_digit *)XMALLOC(32 * sizeof(*b), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((e = (sp_digit *)XMALLOC(16 * sizeof(*e), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((m = (sp_digit *)XMALLOC(16 * sizeof(*m), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL))
{
err = MEMORY_E;
} else {
r = b;
}
}
#endif
if (err == MP_OKAY) { if (err == MP_OKAY) {
sp_2048_from_mp(b, 16, base); sp_2048_from_mp(b, 16, base);
sp_2048_from_mp(e, 16, exp); sp_2048_from_mp(e, 16, exp);
@ -2372,7 +2454,18 @@ int sp_ModExp_1024(const mp_int* base, const mp_int* exp, const mp_int* mod,
err = sp_2048_to_mp(r, res); err = sp_2048_to_mp(r, res);
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (b != NULL)
XFREE(b, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (e != NULL) {
XMEMSET(e, 0, 16);
XFREE(e, NULL, DYNAMIC_TYPE_TMP_BUFFER);
}
if (m != NULL)
XFREE(m, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#else
XMEMSET(e, 0, sizeof(e)); XMEMSET(e, 0, sizeof(e));
#endif
return err; return err;
} }
@ -4287,10 +4380,17 @@ int sp_ModExp_3072(const mp_int* base, const mp_int* exp, const mp_int* mod,
mp_int* res) mp_int* res)
{ {
int err = MP_OKAY; int err = MP_OKAY;
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
sp_digit *b = NULL;
sp_digit *e = NULL;
sp_digit *m = NULL;
sp_digit* r;
#else
sp_digit b[96]; sp_digit b[96];
sp_digit e[48]; sp_digit e[48];
sp_digit m[48]; sp_digit m[48];
sp_digit* r = b; sp_digit* r = b;
#endif
#ifdef HAVE_INTEL_AVX2 #ifdef HAVE_INTEL_AVX2
word32 cpuid_flags = cpuid_get_flags(); word32 cpuid_flags = cpuid_get_flags();
#endif #endif
@ -4304,6 +4404,19 @@ int sp_ModExp_3072(const mp_int* base, const mp_int* exp, const mp_int* mod,
err = MP_VAL; err = MP_VAL;
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (err == MP_OKAY) {
if (((b = (sp_digit *)XMALLOC(96 * sizeof(*b), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((e = (sp_digit *)XMALLOC(48 * sizeof(*e), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((m = (sp_digit *)XMALLOC(48 * sizeof(*m), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL))
{
err = MEMORY_E;
} else {
r = b;
}
}
#endif
if (err == MP_OKAY) { if (err == MP_OKAY) {
sp_3072_from_mp(b, 48, base); sp_3072_from_mp(b, 48, base);
sp_3072_from_mp(e, 48, exp); sp_3072_from_mp(e, 48, exp);
@ -4321,7 +4434,18 @@ int sp_ModExp_3072(const mp_int* base, const mp_int* exp, const mp_int* mod,
err = sp_3072_to_mp(r, res); err = sp_3072_to_mp(r, res);
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (b != NULL)
XFREE(b, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (e != NULL) {
XMEMSET(e, 0, 48);
XFREE(e, NULL, DYNAMIC_TYPE_TMP_BUFFER);
}
if (m != NULL)
XFREE(m, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#else
XMEMSET(e, 0, sizeof(e)); XMEMSET(e, 0, sizeof(e));
#endif
return err; return err;
} }
@ -4597,10 +4721,17 @@ int sp_DhExp_3072(const mp_int* base, const byte* exp, word32 expLen,
const mp_int* mod, byte* out, word32* outLen) const mp_int* mod, byte* out, word32* outLen)
{ {
int err = MP_OKAY; int err = MP_OKAY;
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
sp_digit *b = NULL;
sp_digit *e = NULL;
sp_digit *m = NULL;
sp_digit* r;
#else
sp_digit b[96]; sp_digit b[96];
sp_digit e[48]; sp_digit e[48];
sp_digit m[48]; sp_digit m[48];
sp_digit* r = b; sp_digit* r = b;
#endif
word32 i; word32 i;
#ifdef HAVE_INTEL_AVX2 #ifdef HAVE_INTEL_AVX2
word32 cpuid_flags = cpuid_get_flags(); word32 cpuid_flags = cpuid_get_flags();
@ -4614,6 +4745,19 @@ int sp_DhExp_3072(const mp_int* base, const byte* exp, word32 expLen,
err = MP_VAL; err = MP_VAL;
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (err == MP_OKAY) {
if (((b = (sp_digit *)XMALLOC(96 * sizeof(*b), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((e = (sp_digit *)XMALLOC(48 * sizeof(*e), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((m = (sp_digit *)XMALLOC(48 * sizeof(*m), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL))
{
err = MEMORY_E;
} else {
r = b;
}
}
#endif
if (err == MP_OKAY) { if (err == MP_OKAY) {
sp_3072_from_mp(b, 48, base); sp_3072_from_mp(b, 48, base);
sp_3072_from_bin(e, 48, exp, expLen); sp_3072_from_bin(e, 48, exp, expLen);
@ -4650,7 +4794,18 @@ int sp_DhExp_3072(const mp_int* base, const byte* exp, word32 expLen,
XMEMMOVE(out, out + i, *outLen); XMEMMOVE(out, out + i, *outLen);
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (b != NULL)
XFREE(b, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (e != NULL) {
XMEMSET(e, 0, 48);
XFREE(e, NULL, DYNAMIC_TYPE_TMP_BUFFER);
}
if (m != NULL)
XFREE(m, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#else
XMEMSET(e, 0, sizeof(e)); XMEMSET(e, 0, sizeof(e));
#endif
return err; return err;
} }
@ -4668,10 +4823,17 @@ int sp_ModExp_1536(const mp_int* base, const mp_int* exp, const mp_int* mod,
mp_int* res) mp_int* res)
{ {
int err = MP_OKAY; int err = MP_OKAY;
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
sp_digit *b = NULL;
sp_digit *e = NULL;
sp_digit *m = NULL;
sp_digit* r;
#else
sp_digit b[48]; sp_digit b[48];
sp_digit e[24]; sp_digit e[24];
sp_digit m[24]; sp_digit m[24];
sp_digit* r = b; sp_digit* r = b;
#endif
#ifdef HAVE_INTEL_AVX2 #ifdef HAVE_INTEL_AVX2
word32 cpuid_flags = cpuid_get_flags(); word32 cpuid_flags = cpuid_get_flags();
#endif #endif
@ -4685,6 +4847,19 @@ int sp_ModExp_1536(const mp_int* base, const mp_int* exp, const mp_int* mod,
err = MP_VAL; err = MP_VAL;
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (err == MP_OKAY) {
if (((b = (sp_digit *)XMALLOC(48 * sizeof(*b), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((e = (sp_digit *)XMALLOC(24 * sizeof(*e), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL) ||
((m = (sp_digit *)XMALLOC(24 * sizeof(*m), NULL, DYNAMIC_TYPE_TMP_BUFFER)) == NULL))
{
err = MEMORY_E;
} else {
r = b;
}
}
#endif
if (err == MP_OKAY) { if (err == MP_OKAY) {
sp_3072_from_mp(b, 24, base); sp_3072_from_mp(b, 24, base);
sp_3072_from_mp(e, 24, exp); sp_3072_from_mp(e, 24, exp);
@ -4703,7 +4878,18 @@ int sp_ModExp_1536(const mp_int* base, const mp_int* exp, const mp_int* mod,
err = sp_3072_to_mp(r, res); err = sp_3072_to_mp(r, res);
} }
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
if (b != NULL)
XFREE(b, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (e != NULL) {
XMEMSET(e, 0, 24);
XFREE(e, NULL, DYNAMIC_TYPE_TMP_BUFFER);
}
if (m != NULL)
XFREE(m, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#else
XMEMSET(e, 0, sizeof(e)); XMEMSET(e, 0, sizeof(e));
#endif
return err; return err;
} }