|
|
|
@ -5911,12 +5911,13 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sm3_test(void)
|
|
|
|
|
byte hashGet[WC_SM3_DIGEST_SIZE];
|
|
|
|
|
byte hashCopy[WC_SM3_DIGEST_SIZE];
|
|
|
|
|
wc_test_ret_t ret = 0;
|
|
|
|
|
WOLFSSL_ENTER("sm3_test");
|
|
|
|
|
|
|
|
|
|
testVector a, b, c;
|
|
|
|
|
testVector test_sm3[3];
|
|
|
|
|
int times = sizeof(test_sm3) / sizeof(struct testVector), i;
|
|
|
|
|
|
|
|
|
|
WOLFSSL_ENTER("sm3_test");
|
|
|
|
|
|
|
|
|
|
a.input = "";
|
|
|
|
|
a.output = "\x1a\xb2\x1d\x83\x55\xcf\xa1\x7f\x8e\x61\x19\x48\x31\xe8\x1a"
|
|
|
|
|
"\x8f\x22\xbe\xc8\xc7\x28\xfe\xfb\x74\x7e\xd0\x35\xeb\x50\x82"
|
|
|
|
@ -6143,37 +6144,37 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hash_test(void)
|
|
|
|
|
/* Parameter Validation testing. */
|
|
|
|
|
ret = wc_HashInit(NULL, WC_HASH_TYPE_SHA256);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
ret = wc_HashUpdate(NULL, WC_HASH_TYPE_SHA256, NULL, sizeof(data));
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
ret = wc_HashUpdate(hash, WC_HASH_TYPE_SHA256, NULL, sizeof(data));
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
ret = wc_HashUpdate(NULL, WC_HASH_TYPE_SHA256, data, sizeof(data));
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
ret = wc_HashFinal(NULL, WC_HASH_TYPE_SHA256, NULL);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
ret = wc_HashFinal(hash, WC_HASH_TYPE_SHA256, NULL);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
ret = wc_HashFinal(NULL, WC_HASH_TYPE_SHA256, out);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
|
|
|
|
|
/* Try invalid hash algorithms. */
|
|
|
|
|
for (i = 0; i < (int)(sizeof(typesBad)/sizeof(*typesBad)); i++) {
|
|
|
|
|
ret = wc_HashInit(hash, typesBad[i]);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
ret = wc_HashUpdate(hash, typesBad[i], data, sizeof(data));
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
ret = wc_HashFinal(hash, typesBad[i], out);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
wc_HashFree(hash, typesBad[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -6187,49 +6188,49 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hash_test(void)
|
|
|
|
|
}
|
|
|
|
|
ret = wc_HashInit(hash, typesGood[i]);
|
|
|
|
|
if (ret != exp_ret)
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
ret = wc_HashUpdate(hash, typesGood[i], data, sizeof(data));
|
|
|
|
|
if (ret != exp_ret)
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
ret = wc_HashFinal(hash, typesGood[i], out);
|
|
|
|
|
if (ret != exp_ret)
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
wc_HashFree(hash, typesGood[i]);
|
|
|
|
|
|
|
|
|
|
digestSz = wc_HashGetDigestSize(typesGood[i]);
|
|
|
|
|
if (exp_ret < 0 && digestSz != exp_ret)
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
if (exp_ret == 0 && digestSz < 0)
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
if (exp_ret == 0) {
|
|
|
|
|
ret = wc_Hash(typesGood[i], data, sizeof(data), hashOut,
|
|
|
|
|
(word32)digestSz - 1);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BUFFER_E))
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
}
|
|
|
|
|
ret = wc_Hash(typesGood[i], data, sizeof(data), hashOut, (word32)digestSz);
|
|
|
|
|
if (ret != exp_ret)
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
if (exp_ret == 0 && XMEMCMP(out, hashOut, (word32)digestSz) != 0)
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
|
|
|
|
|
ret = wc_HashGetBlockSize(typesGood[i]);
|
|
|
|
|
if (exp_ret < 0 && ret != exp_ret)
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
if (exp_ret == 0 && ret < 0)
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
|
|
|
|
|
#if !defined(NO_ASN) || !defined(NO_DH) || defined(HAVE_ECC)
|
|
|
|
|
ret = wc_HashGetOID(typesGood[i]);
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG) ||
|
|
|
|
|
(exp_ret == 0 && ret == WC_NO_ERR_TRACE(HASH_TYPE_E)) ||
|
|
|
|
|
(exp_ret != 0 && ret != WC_NO_ERR_TRACE(HASH_TYPE_E))) {
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hashType = wc_OidGetHash(ret);
|
|
|
|
|
if (exp_ret == 0 && hashType != typesGood[i])
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
#endif /* !defined(NO_ASN) || !defined(NO_DH) || defined(HAVE_ECC) */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -6239,7 +6240,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hash_test(void)
|
|
|
|
|
(ret != WC_NO_ERR_TRACE(BUFFER_E)) &&
|
|
|
|
|
(ret != WC_NO_ERR_TRACE(HASH_TYPE_E)))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_I(i);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_I(i), out);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -6249,19 +6250,19 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hash_test(void)
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
|
|
|
|
|
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
hashType = wc_OidGetHash(646); /* Md2h */
|
|
|
|
|
#ifdef WOLFSSL_MD2
|
|
|
|
|
if (hashType != WC_HASH_TYPE_MD2)
|
|
|
|
|
return WC_TEST_RET_ENC_NC;
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#else
|
|
|
|
|
if (hashType != WC_HASH_TYPE_NONE)
|
|
|
|
|
return WC_TEST_RET_ENC_NC;
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ret = wc_HashGetOID(WC_HASH_TYPE_MD5_SHA);
|
|
|
|
@ -6269,22 +6270,22 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hash_test(void)
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
|
|
|
|
|
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
ret = wc_HashGetOID(WC_HASH_TYPE_MD4);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
ret = wc_HashGetOID(WC_HASH_TYPE_NONE);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
|
|
|
|
|
hashType = wc_OidGetHash(0);
|
|
|
|
|
if (hashType != WC_HASH_TYPE_NONE)
|
|
|
|
|
return WC_TEST_RET_ENC_NC;
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#endif /* !defined(NO_ASN) || !defined(NO_DH) || defined(HAVE_ECC) */
|
|
|
|
|
|
|
|
|
|
ret = wc_HashGetBlockSize(WC_HASH_TYPE_MD2);
|
|
|
|
@ -6292,22 +6293,22 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hash_test(void)
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
|
|
|
|
|
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
ret = wc_HashGetDigestSize(WC_HASH_TYPE_MD2);
|
|
|
|
|
#ifdef WOLFSSL_MD2
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
|
|
|
|
|
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ret = wc_HashGetBlockSize(WC_HASH_TYPE_MD4);
|
|
|
|
@ -6315,33 +6316,33 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hash_test(void)
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
|
|
|
|
|
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
ret = wc_HashGetDigestSize(WC_HASH_TYPE_MD4);
|
|
|
|
|
#ifndef NO_MD4
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
|
|
|
|
|
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
ret = wc_HashGetBlockSize(WC_HASH_TYPE_MD5_SHA);
|
|
|
|
|
#if !defined(NO_MD5) && !defined(NO_SHA)
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
|
|
|
|
|
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ret = wc_HashGetBlockSize(WC_HASH_TYPE_BLAKE2B);
|
|
|
|
@ -6349,77 +6350,81 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hash_test(void)
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
|
|
|
|
|
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
ret = wc_HashGetDigestSize(WC_HASH_TYPE_BLAKE2B);
|
|
|
|
|
#if defined(HAVE_BLAKE2) || defined(HAVE_BLAKE2S)
|
|
|
|
|
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
|
|
|
|
|
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
{
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ret = wc_HashGetBlockSize(WC_HASH_TYPE_NONE);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
ret = wc_HashGetDigestSize(WC_HASH_TYPE_NONE);
|
|
|
|
|
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG))
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
|
|
|
|
|
#if !defined(NO_CERTS) && !defined(NO_ASN)
|
|
|
|
|
#if defined(WOLFSSL_MD2) && !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS)
|
|
|
|
|
ret = wc_GetCTC_HashOID(WC_HASH_TYPE_MD2);
|
|
|
|
|
if (ret == 0)
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef NO_MD5
|
|
|
|
|
ret = wc_GetCTC_HashOID(WC_MD5);
|
|
|
|
|
if (ret == 0)
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef NO_SHA
|
|
|
|
|
ret = wc_GetCTC_HashOID(WC_SHA);
|
|
|
|
|
if (ret == 0)
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef WOLFSSL_SHA224
|
|
|
|
|
ret = wc_GetCTC_HashOID(WC_SHA224);
|
|
|
|
|
if (ret == 0)
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef NO_SHA256
|
|
|
|
|
ret = wc_GetCTC_HashOID(WC_SHA256);
|
|
|
|
|
if (ret == 0)
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef WOLFSSL_SHA384
|
|
|
|
|
ret = wc_GetCTC_HashOID(WC_SHA384);
|
|
|
|
|
if (ret == 0)
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef WOLFSSL_SHA512
|
|
|
|
|
ret = wc_GetCTC_HashOID(WC_SHA512);
|
|
|
|
|
if (ret == 0)
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
|
|
|
|
#endif
|
|
|
|
|
ret = wc_GetCTC_HashOID(-1);
|
|
|
|
|
if (ret != 0)
|
|
|
|
|
return WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ret = 0;
|
|
|
|
|
|
|
|
|
|
out:
|
|
|
|
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
|
|
|
|
|
(void)wc_HashDelete(hash, &hash);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
#endif /* !NO_HASH_WRAPPER */
|
|
|
|
|
|
|
|
|
@ -6547,6 +6552,11 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hmac_sha_test(void)
|
|
|
|
|
|
|
|
|
|
wc_test_ret_t ret;
|
|
|
|
|
int times = sizeof(test_hmac) / sizeof(testVector), i;
|
|
|
|
|
|
|
|
|
|
#if FIPS_VERSION3_GE(6,0,0)
|
|
|
|
|
int allowShortKeyWithFips = 1;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
WOLFSSL_ENTER("hmac_sha_test");
|
|
|
|
|
|
|
|
|
|
/* Following test vectors are from RFC 2202 section 3 */
|
|
|
|
@ -6581,9 +6591,6 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hmac_sha_test(void)
|
|
|
|
|
test_hmac[1] = b;
|
|
|
|
|
test_hmac[2] = c;
|
|
|
|
|
test_hmac[3] = d;
|
|
|
|
|
#if FIPS_VERSION3_GE(6,0,0)
|
|
|
|
|
int allowShortKeyWithFips = 1;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < times; ++i) {
|
|
|
|
|
#if defined(HAVE_CAVIUM) || (defined(HAVE_FIPS) && FIPS_VERSION3_LT(6,0,0))
|
|
|
|
@ -50499,12 +50506,19 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t cmac_test(void)
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if !defined(HAVE_FIPS) || FIPS_VERSION3_GE(6,0,0)
|
|
|
|
|
(void)wc_CmacFree(cmac);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ret = 0;
|
|
|
|
|
|
|
|
|
|
out:
|
|
|
|
|
|
|
|
|
|
#if !defined(HAVE_FIPS) || FIPS_VERSION3_GE(6,0,0)
|
|
|
|
|
(void)wc_CmacFree(cmac);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
|
|
|
|
|
XFREE(cmac, HEAP_HINT, DYNAMIC_TYPE_CMAC);
|
|
|
|
|
#endif
|
|
|
|
@ -58318,22 +58332,21 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t prime_test(void)
|
|
|
|
|
WC_RNG rng;
|
|
|
|
|
WOLFSSL_ENTER("prime_test");
|
|
|
|
|
|
|
|
|
|
ret = mp_init_multi(n, p1, p2, p3, NULL, NULL);
|
|
|
|
|
if (ret != 0)
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
|
|
|
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
|
|
|
|
|
if ((n == NULL) ||
|
|
|
|
|
(p1 == NULL) ||
|
|
|
|
|
(p2 == NULL) ||
|
|
|
|
|
(p3 == NULL))
|
|
|
|
|
ERROR_OUT(MEMORY_E, out);
|
|
|
|
|
ERROR_OUT(WC_TEST_RET_ENC_EC(MEMORY_E), out);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ret = wc_InitRng(&rng);
|
|
|
|
|
if (ret != 0)
|
|
|
|
|
ret = WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
if (ret == 0) {
|
|
|
|
|
ret = mp_init_multi(n, p1, p2, p3, NULL, NULL);
|
|
|
|
|
if (ret != 0)
|
|
|
|
|
ret = WC_TEST_RET_ENC_EC(ret);
|
|
|
|
|
}
|
|
|
|
|
if (ret == 0)
|
|
|
|
|
ret = GenerateP(p1, p2, p3,
|
|
|
|
|
ecPairsA, sizeof(ecPairsA) / sizeof(ecPairsA[0]), kA);
|
|
|
|
|