mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-31 19:24:42 +02:00
Improve coverage
Renumber errors in test.c to be unique. Fix stack usage to work in --enable-distro --enable-stacksize builds.
This commit is contained in:
@@ -614,8 +614,7 @@ static int GeneratePrivateDh186(DhKey* key, WC_RNG* rng, byte* priv,
|
||||
int qSz, pSz, cSz, err;
|
||||
mp_int tmpQ, tmpX;
|
||||
|
||||
if (key == NULL || rng == NULL || priv == NULL || privSz == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
/* Parameters validated in calling functions. */
|
||||
|
||||
if (mp_iszero(&key->q) == MP_YES) {
|
||||
WOLFSSL_MSG("DH q parameter needed for FIPS 186-4 key generation");
|
||||
@@ -649,14 +648,8 @@ static int GeneratePrivateDh186(DhKey* key, WC_RNG* rng, byte* priv,
|
||||
* Hash_DRBG uses SHA-256 which matches maximum
|
||||
* requested_security_strength of (L,N) */
|
||||
err = wc_RNG_GenerateBlock(rng, cBuf, cSz);
|
||||
if (err != MP_OKAY) {
|
||||
mp_clear(&tmpX);
|
||||
mp_clear(&tmpQ);
|
||||
XFREE(cBuf, key->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = mp_read_unsigned_bin(&tmpX, cBuf, cSz);
|
||||
if (err == MP_OKAY)
|
||||
err = mp_read_unsigned_bin(&tmpX, cBuf, cSz);
|
||||
if (err != MP_OKAY) {
|
||||
mp_clear(&tmpX);
|
||||
mp_clear(&tmpQ);
|
||||
@@ -1166,57 +1159,71 @@ int wc_DhAgree(DhKey* key, byte* agree, word32* agreeSz, const byte* priv,
|
||||
int wc_DhSetKey_ex(DhKey* key, const byte* p, word32 pSz, const byte* g,
|
||||
word32 gSz, const byte* q, word32 qSz)
|
||||
{
|
||||
int ret = 0;
|
||||
mp_int* keyP = NULL;
|
||||
mp_int* keyG = NULL;
|
||||
mp_int* keyQ = NULL;
|
||||
|
||||
if (key == NULL || p == NULL || g == NULL || pSz == 0 || gSz == 0) {
|
||||
return BAD_FUNC_ARG;
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
/* may have leading 0 */
|
||||
if (p[0] == 0) {
|
||||
pSz--; p++;
|
||||
}
|
||||
|
||||
if (g[0] == 0) {
|
||||
gSz--; g++;
|
||||
}
|
||||
|
||||
if (q != NULL) {
|
||||
if (q[0] == 0) {
|
||||
qSz--; q++;
|
||||
if (ret == 0) {
|
||||
/* may have leading 0 */
|
||||
if (p[0] == 0) {
|
||||
pSz--; p++;
|
||||
}
|
||||
}
|
||||
|
||||
if (mp_init(&key->p) != MP_OKAY)
|
||||
return MP_INIT_E;
|
||||
if (mp_read_unsigned_bin(&key->p, p, pSz) != 0) {
|
||||
mp_clear(&key->p);
|
||||
return ASN_DH_KEY_E;
|
||||
}
|
||||
|
||||
if (mp_init(&key->g) != MP_OKAY) {
|
||||
mp_clear(&key->p);
|
||||
return MP_INIT_E;
|
||||
}
|
||||
if (mp_read_unsigned_bin(&key->g, g, gSz) != 0) {
|
||||
mp_clear(&key->g);
|
||||
mp_clear(&key->p);
|
||||
return ASN_DH_KEY_E;
|
||||
}
|
||||
|
||||
if (q != NULL) {
|
||||
if (mp_init(&key->q) != MP_OKAY) {
|
||||
mp_clear(&key->g);
|
||||
mp_clear(&key->p);
|
||||
return MP_INIT_E;
|
||||
if (g[0] == 0) {
|
||||
gSz--; g++;
|
||||
}
|
||||
if (mp_read_unsigned_bin(&key->q, q, qSz) != 0) {
|
||||
mp_clear(&key->g);
|
||||
mp_clear(&key->p);
|
||||
mp_clear(&key->q);
|
||||
return MP_INIT_E;
|
||||
|
||||
if (q != NULL) {
|
||||
if (q[0] == 0) {
|
||||
qSz--; q++;
|
||||
}
|
||||
}
|
||||
|
||||
if (mp_init(&key->p) != MP_OKAY)
|
||||
ret = MP_INIT_E;
|
||||
}
|
||||
|
||||
return 0;
|
||||
if (ret == 0) {
|
||||
if (mp_read_unsigned_bin(&key->p, p, pSz) != MP_OKAY)
|
||||
ret = ASN_DH_KEY_E;
|
||||
else
|
||||
keyP = &key->p;
|
||||
}
|
||||
if (ret == 0 && mp_init(&key->g) != MP_OKAY)
|
||||
ret = MP_INIT_E;
|
||||
if (ret == 0) {
|
||||
if (mp_read_unsigned_bin(&key->g, g, gSz) != MP_OKAY)
|
||||
ret = ASN_DH_KEY_E;
|
||||
else
|
||||
keyG = &key->g;
|
||||
}
|
||||
|
||||
if (ret == 0 && q != NULL) {
|
||||
if (mp_init(&key->q) != MP_OKAY)
|
||||
ret = MP_INIT_E;
|
||||
}
|
||||
if (ret == 0 && q != NULL) {
|
||||
if (mp_read_unsigned_bin(&key->q, q, qSz) != MP_OKAY)
|
||||
ret = MP_INIT_E;
|
||||
else
|
||||
keyQ = &key->q;
|
||||
}
|
||||
|
||||
if (ret != 0 && key != NULL) {
|
||||
if (keyQ)
|
||||
mp_clear(keyQ);
|
||||
if (keyG)
|
||||
mp_clear(keyG);
|
||||
if (keyP)
|
||||
mp_clear(keyP);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -182,7 +182,7 @@ enum wc_HashType wc_OidGetHash(int oid)
|
||||
#endif
|
||||
break;
|
||||
case SHA224h:
|
||||
#if defined(WOLFSSL_SHA224)
|
||||
#ifdef WOLFSSL_SHA224
|
||||
hash_type = WC_HASH_TYPE_SHA224;
|
||||
#endif
|
||||
break;
|
||||
@@ -247,7 +247,7 @@ int wc_HashGetDigestSize(enum wc_HashType hash_type)
|
||||
#endif
|
||||
break;
|
||||
case WC_HASH_TYPE_SHA384:
|
||||
#if defined(WOLFSSL_SHA512) && defined(WOLFSSL_SHA384)
|
||||
#ifdef WOLFSSL_SHA384
|
||||
dig_size = WC_SHA384_DIGEST_SIZE;
|
||||
#endif
|
||||
break;
|
||||
|
@@ -2310,8 +2310,7 @@ static int RsaGetValue(mp_int* in, byte* out, word32* outSz)
|
||||
word32 sz;
|
||||
int ret = 0;
|
||||
|
||||
if (in == NULL || out == NULL || outSz == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
/* Parameters ensured by calling function. */
|
||||
|
||||
sz = (word32)mp_unsigned_bin_size(in);
|
||||
if (sz > *outSz)
|
||||
|
@@ -7084,11 +7084,9 @@ static int sp_2048_mod_exp_16(sp_digit* r, sp_digit* a, sp_digit* e,
|
||||
|
||||
sp_2048_mont_mul_16(r, r, t[y], m, mp);
|
||||
}
|
||||
y = e[0] & 0xf;
|
||||
sp_2048_mont_sqr_16(r, r, m, mp);
|
||||
sp_2048_mont_sqr_16(r, r, m, mp);
|
||||
sp_2048_mont_sqr_16(r, r, m, mp);
|
||||
sp_2048_mont_sqr_16(r, r, m, mp);
|
||||
y = e[0] & ((1 << c) - 1);
|
||||
for (; c > 0; c--)
|
||||
sp_2048_mont_sqr_16(r, r, m, mp);
|
||||
sp_2048_mont_mul_16(r, r, t[y], m, mp);
|
||||
|
||||
XMEMSET(&r[16], 0, sizeof(sp_digit) * 16);
|
||||
@@ -7401,11 +7399,9 @@ static int sp_2048_mod_exp_avx2_16(sp_digit* r, sp_digit* a, sp_digit* e,
|
||||
|
||||
sp_2048_mont_mul_avx2_16(r, r, t[y], m, mp);
|
||||
}
|
||||
y = e[0] & 0xf;
|
||||
sp_2048_mont_sqr_avx2_16(r, r, m, mp);
|
||||
sp_2048_mont_sqr_avx2_16(r, r, m, mp);
|
||||
sp_2048_mont_sqr_avx2_16(r, r, m, mp);
|
||||
sp_2048_mont_sqr_avx2_16(r, r, m, mp);
|
||||
y = e[0] & ((1 << c) - 1);
|
||||
for (; c > 0; c--)
|
||||
sp_2048_mont_sqr_avx2_16(r, r, m, mp);
|
||||
sp_2048_mont_mul_avx2_16(r, r, t[y], m, mp);
|
||||
|
||||
XMEMSET(&r[16], 0, sizeof(sp_digit) * 16);
|
||||
@@ -9126,10 +9122,9 @@ static int sp_2048_mod_exp_32(sp_digit* r, sp_digit* a, sp_digit* e,
|
||||
|
||||
sp_2048_mont_mul_32(r, r, t[y], m, mp);
|
||||
}
|
||||
y = e[0] & 0x7;
|
||||
sp_2048_mont_sqr_32(r, r, m, mp);
|
||||
sp_2048_mont_sqr_32(r, r, m, mp);
|
||||
sp_2048_mont_sqr_32(r, r, m, mp);
|
||||
y = e[0] & ((1 << c) - 1);
|
||||
for (; c > 0; c--)
|
||||
sp_2048_mont_sqr_32(r, r, m, mp);
|
||||
sp_2048_mont_mul_32(r, r, t[y], m, mp);
|
||||
|
||||
XMEMSET(&r[32], 0, sizeof(sp_digit) * 32);
|
||||
@@ -9540,10 +9535,9 @@ static int sp_2048_mod_exp_avx2_32(sp_digit* r, sp_digit* a, sp_digit* e,
|
||||
|
||||
sp_2048_mont_mul_avx2_32(r, r, t[y], m, mp);
|
||||
}
|
||||
y = e[0] & 0x7;
|
||||
sp_2048_mont_sqr_avx2_32(r, r, m, mp);
|
||||
sp_2048_mont_sqr_avx2_32(r, r, m, mp);
|
||||
sp_2048_mont_sqr_avx2_32(r, r, m, mp);
|
||||
y = e[0] & ((1 << c) - 1);
|
||||
for (; c > 0; c--)
|
||||
sp_2048_mont_sqr_avx2_32(r, r, m, mp);
|
||||
sp_2048_mont_mul_avx2_32(r, r, t[y], m, mp);
|
||||
|
||||
XMEMSET(&r[32], 0, sizeof(sp_digit) * 32);
|
||||
@@ -23649,8 +23643,9 @@ static int sp_3072_mod_exp_24(sp_digit* r, sp_digit* a, sp_digit* e,
|
||||
|
||||
sp_3072_mont_mul_24(r, r, t[y], m, mp);
|
||||
}
|
||||
y = e[0] & 0x1;
|
||||
sp_3072_mont_sqr_24(r, r, m, mp);
|
||||
y = e[0] & ((1 << c) - 1);
|
||||
for (; c > 0; c--)
|
||||
sp_3072_mont_sqr_24(r, r, m, mp);
|
||||
sp_3072_mont_mul_24(r, r, t[y], m, mp);
|
||||
|
||||
XMEMSET(&r[24], 0, sizeof(sp_digit) * 24);
|
||||
@@ -24011,8 +24006,9 @@ static int sp_3072_mod_exp_avx2_24(sp_digit* r, sp_digit* a, sp_digit* e,
|
||||
|
||||
sp_3072_mont_mul_avx2_24(r, r, t[y], m, mp);
|
||||
}
|
||||
y = e[0] & 0x1;
|
||||
sp_3072_mont_sqr_avx2_24(r, r, m, mp);
|
||||
y = e[0] & ((1 << c) - 1);
|
||||
for (; c > 0; c--)
|
||||
sp_3072_mont_sqr_avx2_24(r, r, m, mp);
|
||||
sp_3072_mont_mul_avx2_24(r, r, t[y], m, mp);
|
||||
|
||||
XMEMSET(&r[24], 0, sizeof(sp_digit) * 24);
|
||||
@@ -26357,9 +26353,9 @@ static int sp_3072_mod_exp_48(sp_digit* r, sp_digit* a, sp_digit* e,
|
||||
|
||||
sp_3072_mont_mul_48(r, r, t[y], m, mp);
|
||||
}
|
||||
y = e[0] & 0x3;
|
||||
sp_3072_mont_sqr_48(r, r, m, mp);
|
||||
sp_3072_mont_sqr_48(r, r, m, mp);
|
||||
y = e[0] & ((1 << c) - 1);
|
||||
for (; c > 0; c--)
|
||||
sp_3072_mont_sqr_48(r, r, m, mp);
|
||||
sp_3072_mont_mul_48(r, r, t[y], m, mp);
|
||||
|
||||
XMEMSET(&r[48], 0, sizeof(sp_digit) * 48);
|
||||
@@ -26866,9 +26862,9 @@ static int sp_3072_mod_exp_avx2_48(sp_digit* r, sp_digit* a, sp_digit* e,
|
||||
|
||||
sp_3072_mont_mul_avx2_48(r, r, t[y], m, mp);
|
||||
}
|
||||
y = e[0] & 0x3;
|
||||
sp_3072_mont_sqr_avx2_48(r, r, m, mp);
|
||||
sp_3072_mont_sqr_avx2_48(r, r, m, mp);
|
||||
y = e[0] & ((1 << c) - 1);
|
||||
for (; c > 0; c--)
|
||||
sp_3072_mont_sqr_avx2_48(r, r, m, mp);
|
||||
sp_3072_mont_mul_avx2_48(r, r, t[y], m, mp);
|
||||
|
||||
XMEMSET(&r[48], 0, sizeof(sp_digit) * 48);
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user