mirror of https://github.com/wolfSSL/wolfssl.git
Merge pull request #3542 from SparkiDev/sp_mod_odd
SP: ensure modulus/prime is odd before performing RSA/DH/ModExp opspull/3572/head
commit
b0464c93e2
|
@ -7449,11 +7449,16 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 32 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (mp_count_bits(em) > 32 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7800,12 +7805,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
else if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7859,10 +7867,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 256 || mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (inLen > 256 || mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -8022,17 +8035,14 @@ int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -8592,17 +8602,14 @@ int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -8654,17 +8661,14 @@ int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -19066,11 +19070,16 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 32 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (mp_count_bits(em) > 32 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -19497,12 +19506,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
else if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -19556,10 +19568,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 384 || mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (inLen > 384 || mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -19719,17 +19736,14 @@ int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -20481,17 +20495,14 @@ int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -20543,17 +20554,14 @@ int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -27088,11 +27096,16 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 32 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (mp_count_bits(em) > 32 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -27599,12 +27612,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
else if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -27658,10 +27674,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 512 || mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (inLen > 512 || mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -27821,17 +27842,14 @@ int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -28775,17 +28793,14 @@ int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
|
|
@ -4945,11 +4945,16 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 64 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (mp_count_bits(em) > 64 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5192,12 +5197,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
else if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5251,10 +5259,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 256 || mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (inLen > 256 || mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5414,17 +5427,14 @@ int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5794,17 +5804,14 @@ int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5856,17 +5863,14 @@ int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -12713,11 +12717,16 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 64 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (mp_count_bits(em) > 64 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -12988,12 +12997,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
else if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -13047,10 +13059,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 384 || mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (inLen > 384 || mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -13210,17 +13227,14 @@ int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -13686,17 +13700,14 @@ int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -13748,17 +13759,14 @@ int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -17680,11 +17688,16 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 64 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (mp_count_bits(em) > 64 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -17983,12 +17996,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
else if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -18042,10 +18058,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 512 || mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (inLen > 512 || mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -18205,17 +18226,14 @@ int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -18777,17 +18795,14 @@ int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
|
|
@ -4314,11 +4314,16 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 32 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (mp_count_bits(em) > 32 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -4498,12 +4503,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
else if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -4557,10 +4565,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 256 || mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (inLen > 256 || mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -4720,17 +4733,14 @@ int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5298,17 +5308,14 @@ int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5360,17 +5367,14 @@ int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -10178,11 +10182,16 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 32 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (mp_count_bits(em) > 32 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -10362,12 +10371,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
else if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -10421,10 +10433,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 384 || mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (inLen > 384 || mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -10584,17 +10601,14 @@ int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11360,17 +11374,14 @@ int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11422,17 +11433,14 @@ int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -14100,11 +14108,16 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 32 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (mp_count_bits(em) > 32 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -14285,12 +14298,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
else if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -14344,10 +14360,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 512 || mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (inLen > 512 || mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -14507,17 +14528,14 @@ int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -15479,17 +15497,14 @@ int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
|
|
@ -3217,12 +3217,15 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 23) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256U) {
|
||||
else if (inLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3310,12 +3313,15 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 23) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256U) {
|
||||
else if (inLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
|
@ -3457,12 +3463,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
else if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3511,12 +3520,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256U) {
|
||||
else if (inLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3559,9 +3571,12 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3633,9 +3648,12 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3773,18 +3791,16 @@ int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 90 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -3831,17 +3847,14 @@ int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -4222,17 +4235,14 @@ int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -4292,18 +4302,16 @@ int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 90 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -4387,18 +4395,16 @@ int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 45 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -4446,17 +4452,14 @@ int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -7099,12 +7102,15 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 23) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384U) {
|
||||
else if (inLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7192,12 +7198,15 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 23) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384U) {
|
||||
else if (inLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
|
@ -7339,12 +7348,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
else if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7393,12 +7405,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384U) {
|
||||
else if (inLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7441,9 +7456,12 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7515,9 +7533,12 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7655,18 +7676,16 @@ int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 134 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -7713,17 +7732,14 @@ int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -8192,17 +8208,14 @@ int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -8262,18 +8275,16 @@ int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 134 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -8357,18 +8368,16 @@ int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 67 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -8416,17 +8425,14 @@ int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -11151,12 +11157,15 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 21) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512U) {
|
||||
else if (inLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11244,12 +11253,15 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 21) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512U) {
|
||||
else if (inLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
|
@ -11391,12 +11403,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
else if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11445,12 +11460,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512U) {
|
||||
else if (inLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11493,9 +11511,12 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11567,9 +11588,12 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11707,18 +11731,16 @@ int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 196 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -11765,17 +11787,14 @@ int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -12368,17 +12387,14 @@ int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -12438,18 +12454,16 @@ int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 196 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
|
|
@ -2858,12 +2858,15 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 57) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256U) {
|
||||
else if (inLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -2951,12 +2954,15 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 57) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256U) {
|
||||
else if (inLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
|
@ -3098,12 +3104,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
else if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3152,12 +3161,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256U) {
|
||||
else if (inLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3200,9 +3212,12 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3274,9 +3289,12 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3414,18 +3432,16 @@ int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 36 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -3472,17 +3488,14 @@ int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -3756,17 +3769,14 @@ int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3826,18 +3836,16 @@ int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 36 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -3921,18 +3929,16 @@ int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 18 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -3980,17 +3986,14 @@ int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -7015,12 +7018,15 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 57) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384U) {
|
||||
else if (inLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7108,12 +7114,15 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 57) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384U) {
|
||||
else if (inLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
|
@ -7255,12 +7264,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
else if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7309,12 +7321,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384U) {
|
||||
else if (inLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7357,9 +7372,12 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7431,9 +7449,12 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -7571,18 +7592,16 @@ int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 54 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -7629,17 +7648,14 @@ int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -7949,17 +7965,14 @@ int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -8019,18 +8032,16 @@ int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 54 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -8114,18 +8125,16 @@ int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 27 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -8173,17 +8182,14 @@ int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -11404,12 +11410,15 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 53) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512U) {
|
||||
else if (inLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11497,12 +11506,15 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
if (mp_count_bits(em) > 53) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512U) {
|
||||
else if (inLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
|
@ -11644,12 +11656,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
else if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11698,12 +11713,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512U) {
|
||||
else if (inLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11746,9 +11764,12 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11820,9 +11841,12 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (inLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -11960,18 +11984,16 @@ int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 78 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
@ -12018,17 +12040,14 @@ int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -12386,17 +12405,14 @@ int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -12456,18 +12472,16 @@ int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
}
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
if (err == MP_OKAY) {
|
||||
d = (sp_digit*)XMALLOC(sizeof(*d) * 78 * 4, NULL, DYNAMIC_TYPE_DH);
|
||||
|
|
|
@ -4208,11 +4208,16 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 32 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (mp_count_bits(em) > 32 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -4394,12 +4399,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256) {
|
||||
else if (inLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -4453,10 +4461,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 256 || mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (inLen > 256 || mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -4616,17 +4629,14 @@ int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5194,17 +5204,14 @@ int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 256) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5256,17 +5263,14 @@ int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -9104,11 +9108,16 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 32 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (mp_count_bits(em) > 32 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -9290,12 +9299,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384) {
|
||||
else if (inLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -9349,10 +9361,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 384 || mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (inLen > 384 || mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -9512,17 +9529,14 @@ int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -10286,17 +10300,14 @@ int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 384) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -10348,17 +10359,14 @@ int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -12419,11 +12427,16 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
sp_digit e[1];
|
||||
int err = MP_OKAY;
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 32 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (mp_count_bits(em) > 32 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -12606,12 +12619,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512) {
|
||||
else if (inLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -12665,10 +12681,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 512 || mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (inLen > 512 || mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -12828,17 +12849,14 @@ int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expBits > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -13798,17 +13816,14 @@ int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen,
|
|||
if (mp_count_bits(base) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (expLen > 512) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
|
|
|
@ -1440,11 +1440,16 @@ int sp_RsaPublic_2048(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
word32 cpuid_flags = cpuid_get_flags();
|
||||
#endif
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 64 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (mp_count_bits(em) > 64 || inLen > 256 ||
|
||||
mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -1617,12 +1622,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 256U) {
|
||||
else if (inLen > 256U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 2048) {
|
||||
else if (mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)
|
||||
|
@ -1714,10 +1722,15 @@ int sp_RsaPrivate_2048(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 256)
|
||||
if (*outLen < 256) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 256 || mp_count_bits(mm) != 2048))
|
||||
}
|
||||
else if (inLen > 256 || mp_count_bits(mm) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -1918,6 +1931,9 @@ int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_from_mp(b, 32, base);
|
||||
|
@ -2219,6 +2235,9 @@ int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen,
|
|||
mp_count_bits(mod) != 2048) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_from_mp(b, 32, base);
|
||||
|
@ -2283,6 +2302,9 @@ int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
mp_count_bits(mod) != 1024) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
sp_2048_from_mp(b, 16, base);
|
||||
|
@ -3717,11 +3739,16 @@ int sp_RsaPublic_3072(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
word32 cpuid_flags = cpuid_get_flags();
|
||||
#endif
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 64 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (mp_count_bits(em) > 64 || inLen > 384 ||
|
||||
mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -3894,12 +3921,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 384U) {
|
||||
else if (inLen > 384U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 3072) {
|
||||
else if (mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)
|
||||
|
@ -3991,10 +4021,15 @@ int sp_RsaPrivate_3072(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 384)
|
||||
if (*outLen < 384) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 384 || mp_count_bits(mm) != 3072))
|
||||
}
|
||||
else if (inLen > 384 || mp_count_bits(mm) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -4195,6 +4230,9 @@ int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_from_mp(b, 48, base);
|
||||
|
@ -4496,6 +4534,9 @@ int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen,
|
|||
mp_count_bits(mod) != 3072) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_from_mp(b, 48, base);
|
||||
|
@ -4560,6 +4601,9 @@ int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
mp_count_bits(mod) != 1536) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
sp_3072_from_mp(b, 24, base);
|
||||
|
@ -5415,11 +5459,16 @@ int sp_RsaPublic_4096(const byte* in, word32 inLen, mp_int* em, mp_int* mm,
|
|||
word32 cpuid_flags = cpuid_get_flags();
|
||||
#endif
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (mp_count_bits(em) > 64 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (mp_count_bits(em) > 64 || inLen > 512 ||
|
||||
mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5592,12 +5641,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
if (mp_count_bits(dm) > 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (inLen > 512U) {
|
||||
else if (inLen > 512U) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
if (mp_count_bits(mm) != 4096) {
|
||||
else if (mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)
|
||||
|
@ -5689,10 +5741,15 @@ int sp_RsaPrivate_4096(const byte* in, word32 inLen, mp_int* dm,
|
|||
(void)dm;
|
||||
(void)mm;
|
||||
|
||||
if (*outLen < 512)
|
||||
if (*outLen < 512) {
|
||||
err = MP_TO_E;
|
||||
if (err == MP_OKAY && (inLen > 512 || mp_count_bits(mm) != 4096))
|
||||
}
|
||||
else if (inLen > 512 || mp_count_bits(mm) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mm)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
||||
if (err == MP_OKAY) {
|
||||
|
@ -5893,6 +5950,9 @@ int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, mp_int* res)
|
|||
mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_from_mp(b, 64, base);
|
||||
|
@ -6194,6 +6254,9 @@ int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen,
|
|||
mp_count_bits(mod) != 4096) {
|
||||
err = MP_READ_E;
|
||||
}
|
||||
else if (mp_iseven(mod)) {
|
||||
err = MP_VAL;
|
||||
}
|
||||
|
||||
if (err == MP_OKAY) {
|
||||
sp_4096_from_mp(b, 64, base);
|
||||
|
|
|
@ -13163,6 +13163,127 @@ exit_rsa_nopadding:
|
|||
}
|
||||
#endif /* WC_RSA_NO_PADDING */
|
||||
|
||||
#ifdef WOLFSSL_HAVE_SP_RSA
|
||||
static int rsa_even_mod_test(WC_RNG* rng, RsaKey* key)
|
||||
{
|
||||
byte* tmp = NULL;
|
||||
size_t bytes;
|
||||
int ret;
|
||||
word32 inLen = 0;
|
||||
word32 idx = 0;
|
||||
word32 outSz = RSA_TEST_BYTES;
|
||||
word32 plainSz = RSA_TEST_BYTES;
|
||||
#if !defined(USE_CERT_BUFFERS_2048) && !defined(USE_CERT_BUFFERS_3072) && \
|
||||
!defined(USE_CERT_BUFFERS_4096) && !defined(NO_FILESYSTEM)
|
||||
XFILE file;
|
||||
#endif
|
||||
DECLARE_VAR(out, byte, RSA_TEST_BYTES, HEAP_HINT);
|
||||
DECLARE_VAR(plain, byte, RSA_TEST_BYTES, HEAP_HINT);
|
||||
|
||||
#ifdef DECLARE_VAR_IS_HEAP_ALLOC
|
||||
if ((out == NULL) || (plain == NULL))
|
||||
ERROR_OUT(MEMORY_E, exit_rsa_even_mod);
|
||||
#endif
|
||||
|
||||
#if defined(USE_CERT_BUFFERS_2048)
|
||||
bytes = (size_t)sizeof_client_key_der_2048;
|
||||
if (bytes < (size_t)sizeof_client_cert_der_2048)
|
||||
bytes = (size_t)sizeof_client_cert_der_2048;
|
||||
#else
|
||||
bytes = FOURK_BUF;
|
||||
#endif
|
||||
|
||||
tmp = (byte*)XMALLOC(bytes, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (tmp == NULL
|
||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||
|| out == NULL || plain == NULL
|
||||
#endif
|
||||
) {
|
||||
ERROR_OUT(-7800, exit_rsa_even_mod);
|
||||
}
|
||||
|
||||
#if defined(USE_CERT_BUFFERS_2048)
|
||||
XMEMCPY(tmp, client_key_der_2048, (size_t)sizeof_client_key_der_2048);
|
||||
#elif defined(USE_CERT_BUFFERS_3072)
|
||||
XMEMCPY(tmp, client_key_der_3072, (size_t)sizeof_client_key_der_3072);
|
||||
#elif defined(USE_CERT_BUFFERS_4096)
|
||||
XMEMCPY(tmp, client_key_der_4096, (size_t)sizeof_client_key_der_4096);
|
||||
#elif !defined(NO_FILESYSTEM)
|
||||
file = XFOPEN(clientKey, "rb");
|
||||
if (!file) {
|
||||
err_sys("can't open ./certs/client-key.der, "
|
||||
"Please run from wolfSSL home dir", -40);
|
||||
ERROR_OUT(-7801, exit_rsa_even_mod);
|
||||
}
|
||||
|
||||
bytes = XFREAD(tmp, 1, FOURK_BUF, file);
|
||||
XFCLOSE(file);
|
||||
#else
|
||||
/* No key to use. */
|
||||
ERROR_OUT(-7802, exit_rsa_even_mod);
|
||||
#endif /* USE_CERT_BUFFERS */
|
||||
|
||||
ret = wc_RsaPrivateKeyDecode(tmp, &idx, key, (word32)bytes);
|
||||
if (ret != 0) {
|
||||
ERROR_OUT(-7804, exit_rsa_even_mod);
|
||||
}
|
||||
|
||||
key->n.dp[0] &= (mp_digit)-2;
|
||||
if (ret != 0) {
|
||||
ERROR_OUT(-7804, exit_rsa_even_mod);
|
||||
}
|
||||
|
||||
/* after loading in key use tmp as the test buffer */
|
||||
#ifndef WOLFSSL_RSA_VERIFY_ONLY
|
||||
inLen = 32;
|
||||
outSz = wc_RsaEncryptSize(key);
|
||||
XMEMSET(tmp, 7, plainSz);
|
||||
ret = wc_RsaSSL_Sign(tmp, inLen, out, outSz, key, rng);
|
||||
if (ret != MP_VAL) {
|
||||
ERROR_OUT(-7806, exit_rsa_even_mod);
|
||||
}
|
||||
|
||||
ret = wc_RsaSSL_Verify(out, outSz, tmp, inLen, key);
|
||||
if (ret != MP_VAL) {
|
||||
ERROR_OUT(-7808, exit_rsa_even_mod);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WC_RSA_BLINDING
|
||||
ret = wc_RsaSetRNG(key, rng);
|
||||
if (ret < 0) {
|
||||
ERROR_OUT(-7811, exit_rsa_even_mod);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* test encrypt and decrypt using WC_RSA_NO_PAD */
|
||||
#ifndef WOLFSSL_RSA_VERIFY_ONLY
|
||||
ret = wc_RsaPublicEncrypt(tmp, inLen, out, (int)outSz, key, rng);
|
||||
if (ret != MP_VAL) {
|
||||
ERROR_OUT(-7812, exit_rsa_even_mod);
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_VERIFY_ONLY */
|
||||
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
ret = wc_RsaPrivateDecrypt(out, outSz, plain, (int)plainSz, key);
|
||||
if (ret != MP_VAL) {
|
||||
ERROR_OUT(-7813, exit_rsa_even_mod);
|
||||
}
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
|
||||
/* if making it to this point of code without hitting an ERROR_OUT then
|
||||
* all tests have passed */
|
||||
ret = 0;
|
||||
|
||||
exit_rsa_even_mod:
|
||||
XFREE(tmp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
FREE_VAR(out, HEAP_HINT);
|
||||
FREE_VAR(plain, HEAP_HINT);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif /* WOLFSSL_HAVE_SP_RSA */
|
||||
|
||||
#ifdef WOLFSSL_CERT_GEN
|
||||
static int rsa_certgen_test(RsaKey* key, RsaKey* keypub, WC_RNG* rng, byte* tmp)
|
||||
{
|
||||
|
@ -14888,9 +15009,18 @@ static int rsa_test(void)
|
|||
/* Need to create known good signatures to test with this. */
|
||||
#ifndef WOLFSSL_RSA_VERIFY_ONLY
|
||||
ret = rsa_pss_test(&rng, key);
|
||||
if (ret != 0)
|
||||
goto exit_rsa;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_HAVE_SP_RSA
|
||||
/* New key to be loaded in rsa_even_mod_test(). */
|
||||
if (key != NULL)
|
||||
wc_FreeRsaKey(key);
|
||||
ret = rsa_even_mod_test(&rng, key);
|
||||
#endif
|
||||
|
||||
exit_rsa:
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -15319,7 +15449,7 @@ static int dh_test_check_pubvalue(void)
|
|||
#define FFDHE_KEY_SIZE (2048/8)
|
||||
#endif
|
||||
|
||||
static int dh_test_ffdhe(WC_RNG *rng, const DhParams* params)
|
||||
static int dh_ffdhe_test(WC_RNG *rng, const DhParams* params)
|
||||
{
|
||||
int ret;
|
||||
word32 privSz, pubSz, privSz2, pubSz2;
|
||||
|
@ -15421,6 +15551,31 @@ static int dh_test_ffdhe(WC_RNG *rng, const DhParams* params)
|
|||
ERROR_OUT(-8059, done);
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_HAVE_SP_DH
|
||||
key->p.dp[0] &= (mp_digit)-2;
|
||||
if (ret != 0) {
|
||||
ERROR_OUT(-8058, done);
|
||||
}
|
||||
|
||||
ret = wc_DhGenerateKeyPair(key, rng, priv, &privSz, pub, &pubSz);
|
||||
if (ret != MP_VAL) {
|
||||
ERROR_OUT(-8058, done);
|
||||
}
|
||||
|
||||
ret = wc_DhAgree(key, agree, &agreeSz, priv, privSz, pub2, pubSz2);
|
||||
if (ret != MP_VAL) {
|
||||
ERROR_OUT(-8057, done);
|
||||
}
|
||||
|
||||
ret = wc_DhCheckKeyPair(key, pub, pubSz, priv, privSz);
|
||||
if (ret != MP_EXPTMOD_E) {
|
||||
ERROR_OUT(-8057, done);
|
||||
}
|
||||
|
||||
/* Getting here means success - set ret to 0. */
|
||||
ret = 0;
|
||||
#endif
|
||||
|
||||
done:
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
|
@ -15697,12 +15852,12 @@ static int dh_test(void)
|
|||
|
||||
/* Specialized code for key gen when using FFDHE-2048 and FFDHE-3072. */
|
||||
#ifdef HAVE_FFDHE_2048
|
||||
ret = dh_test_ffdhe(&rng, wc_Dh_ffdhe2048_Get());
|
||||
ret = dh_ffdhe_test(&rng, wc_Dh_ffdhe2048_Get());
|
||||
if (ret != 0)
|
||||
ERROR_OUT(-8129, done);
|
||||
#endif
|
||||
#ifdef HAVE_FFDHE_3072
|
||||
ret = dh_test_ffdhe(&rng, wc_Dh_ffdhe3072_Get());
|
||||
ret = dh_ffdhe_test(&rng, wc_Dh_ffdhe3072_Get());
|
||||
if (ret != 0)
|
||||
ERROR_OUT(-8130, done);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue