Merge pull request #8586 from douzzer/20250321-siphash-armasm

20250321-siphash-armasm
This commit is contained in:
David Garske
2025-03-23 14:00:17 -07:00
committed by GitHub
5 changed files with 96 additions and 77 deletions

View File

@ -13814,8 +13814,6 @@ static int ProcessCSR_ex(WOLFSSL* ssl, byte* input, word32* inOutIdx,
#if defined(HAVE_CERTIFICATE_STATUS_REQUEST) #if defined(HAVE_CERTIFICATE_STATUS_REQUEST)
TLSX* ext = TLSX_Find(ssl->extensions, TLSX_STATUS_REQUEST); TLSX* ext = TLSX_Find(ssl->extensions, TLSX_STATUS_REQUEST);
CertificateStatusRequest* csr; CertificateStatusRequest* csr;
#else
(void)idx;
#endif #endif
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
CertStatus* status; CertStatus* status;
@ -13844,6 +13842,8 @@ static int ProcessCSR_ex(WOLFSSL* ssl, byte* input, word32* inOutIdx,
ssl->status_request = 0; ssl->status_request = 0;
break; break;
} }
#else
(void)idx;
#endif #endif
#ifdef HAVE_CERTIFICATE_STATUS_REQUEST_V2 #ifdef HAVE_CERTIFICATE_STATUS_REQUEST_V2

View File

@ -62,6 +62,10 @@ int wc_falcon_sign_msg(const byte* in, word32 inLen,
falcon_key* key, WC_RNG* rng) falcon_key* key, WC_RNG* rng)
{ {
int ret = 0; int ret = 0;
#ifdef HAVE_LIBOQS
OQS_SIG *oqssig = NULL;
size_t localOutLen = 0;
#endif
/* sanity check on arguments */ /* sanity check on arguments */
if ((in == NULL) || (out == NULL) || (outLen == NULL) || (key == NULL)) { if ((in == NULL) || (out == NULL) || (outLen == NULL) || (key == NULL)) {
@ -83,9 +87,6 @@ int wc_falcon_sign_msg(const byte* in, word32 inLen,
#endif #endif
#ifdef HAVE_LIBOQS #ifdef HAVE_LIBOQS
OQS_SIG *oqssig = NULL;
size_t localOutLen = 0;
if ((ret == 0) && (!key->prvKeySet)) { if ((ret == 0) && (!key->prvKeySet)) {
ret = BAD_FUNC_ARG; ret = BAD_FUNC_ARG;
} }
@ -161,6 +162,9 @@ int wc_falcon_verify_msg(const byte* sig, word32 sigLen, const byte* msg,
word32 msgLen, int* res, falcon_key* key) word32 msgLen, int* res, falcon_key* key)
{ {
int ret = 0; int ret = 0;
#ifdef HAVE_LIBOQS
OQS_SIG *oqssig = NULL;
#endif
if (key == NULL || sig == NULL || msg == NULL || res == NULL) { if (key == NULL || sig == NULL || msg == NULL || res == NULL) {
return BAD_FUNC_ARG; return BAD_FUNC_ARG;
@ -181,8 +185,6 @@ int wc_falcon_verify_msg(const byte* sig, word32 sigLen, const byte* msg,
#endif #endif
#ifdef HAVE_LIBOQS #ifdef HAVE_LIBOQS
OQS_SIG *oqssig = NULL;
if ((ret == 0) && (!key->pubKeySet)) { if ((ret == 0) && (!key->pubKeySet)) {
ret = BAD_FUNC_ARG; ret = BAD_FUNC_ARG;
} }
@ -708,12 +710,12 @@ int wc_falcon_export_key(falcon_key* key, byte* priv, word32 *privSz,
*/ */
int wc_falcon_check_key(falcon_key* key) int wc_falcon_check_key(falcon_key* key)
{ {
int ret = 0;
if (key == NULL) { if (key == NULL) {
return BAD_FUNC_ARG; return BAD_FUNC_ARG;
} }
int ret = 0;
/* The public key is also decoded and stored within the private key buffer /* The public key is also decoded and stored within the private key buffer
* behind the private key. Hence, we can compare both stored public keys. */ * behind the private key. Hence, we can compare both stored public keys. */
if (key->level == 1) { if (key->level == 1) {

View File

@ -582,7 +582,7 @@ int wc_SipHash(const unsigned char* key, const unsigned char* in, word32 inSz,
return 0; return 0;
} }
#elif !defined(WOLFSSL_NO_ASM) && defined(__GNUC__) && defined(__aarch64__) && \ #elif defined(WOLFSSL_ARMASM) && defined(__GNUC__) && defined(__aarch64__) && \
(WOLFSSL_SIPHASH_CROUNDS == 1 || WOLFSSL_SIPHASH_CROUNDS == 2) && \ (WOLFSSL_SIPHASH_CROUNDS == 1 || WOLFSSL_SIPHASH_CROUNDS == 2) && \
(WOLFSSL_SIPHASH_DROUNDS == 2 || WOLFSSL_SIPHASH_DROUNDS == 4) (WOLFSSL_SIPHASH_DROUNDS == 2 || WOLFSSL_SIPHASH_DROUNDS == 4)

View File

@ -5911,12 +5911,13 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t sm3_test(void)
byte hashGet[WC_SM3_DIGEST_SIZE]; byte hashGet[WC_SM3_DIGEST_SIZE];
byte hashCopy[WC_SM3_DIGEST_SIZE]; byte hashCopy[WC_SM3_DIGEST_SIZE];
wc_test_ret_t ret = 0; wc_test_ret_t ret = 0;
WOLFSSL_ENTER("sm3_test");
testVector a, b, c; testVector a, b, c;
testVector test_sm3[3]; testVector test_sm3[3];
int times = sizeof(test_sm3) / sizeof(struct testVector), i; int times = sizeof(test_sm3) / sizeof(struct testVector), i;
WOLFSSL_ENTER("sm3_test");
a.input = ""; a.input = "";
a.output = "\x1a\xb2\x1d\x83\x55\xcf\xa1\x7f\x8e\x61\x19\x48\x31\xe8\x1a" 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" "\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. */ /* Parameter Validation testing. */
ret = wc_HashInit(NULL, WC_HASH_TYPE_SHA256); ret = wc_HashInit(NULL, WC_HASH_TYPE_SHA256);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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)); ret = wc_HashUpdate(NULL, WC_HASH_TYPE_SHA256, NULL, sizeof(data));
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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)); ret = wc_HashUpdate(hash, WC_HASH_TYPE_SHA256, NULL, sizeof(data));
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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)); ret = wc_HashUpdate(NULL, WC_HASH_TYPE_SHA256, data, sizeof(data));
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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); ret = wc_HashFinal(NULL, WC_HASH_TYPE_SHA256, NULL);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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); ret = wc_HashFinal(hash, WC_HASH_TYPE_SHA256, NULL);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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); ret = wc_HashFinal(NULL, WC_HASH_TYPE_SHA256, out);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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. */ /* Try invalid hash algorithms. */
for (i = 0; i < (int)(sizeof(typesBad)/sizeof(*typesBad)); i++) { for (i = 0; i < (int)(sizeof(typesBad)/sizeof(*typesBad)); i++) {
ret = wc_HashInit(hash, typesBad[i]); ret = wc_HashInit(hash, typesBad[i]);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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)); ret = wc_HashUpdate(hash, typesBad[i], data, sizeof(data));
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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); ret = wc_HashFinal(hash, typesBad[i], out);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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]); 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]); ret = wc_HashInit(hash, typesGood[i]);
if (ret != exp_ret) 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)); ret = wc_HashUpdate(hash, typesGood[i], data, sizeof(data));
if (ret != exp_ret) 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); ret = wc_HashFinal(hash, typesGood[i], out);
if (ret != exp_ret) 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]); wc_HashFree(hash, typesGood[i]);
digestSz = wc_HashGetDigestSize(typesGood[i]); digestSz = wc_HashGetDigestSize(typesGood[i]);
if (exp_ret < 0 && digestSz != exp_ret) 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) 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) { if (exp_ret == 0) {
ret = wc_Hash(typesGood[i], data, sizeof(data), hashOut, ret = wc_Hash(typesGood[i], data, sizeof(data), hashOut,
(word32)digestSz - 1); (word32)digestSz - 1);
if (ret != WC_NO_ERR_TRACE(BUFFER_E)) 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); ret = wc_Hash(typesGood[i], data, sizeof(data), hashOut, (word32)digestSz);
if (ret != exp_ret) 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) 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]); ret = wc_HashGetBlockSize(typesGood[i]);
if (exp_ret < 0 && ret != exp_ret) 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) 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) #if !defined(NO_ASN) || !defined(NO_DH) || defined(HAVE_ECC)
ret = wc_HashGetOID(typesGood[i]); ret = wc_HashGetOID(typesGood[i]);
if (ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG) || 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)) ||
(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); hashType = wc_OidGetHash(ret);
if (exp_ret == 0 && hashType != typesGood[i]) 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) */ #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(BUFFER_E)) &&
(ret != WC_NO_ERR_TRACE(HASH_TYPE_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) || if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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 #else
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E)) 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 #endif
hashType = wc_OidGetHash(646); /* Md2h */ hashType = wc_OidGetHash(646); /* Md2h */
#ifdef WOLFSSL_MD2 #ifdef WOLFSSL_MD2
if (hashType != WC_HASH_TYPE_MD2) if (hashType != WC_HASH_TYPE_MD2)
return WC_TEST_RET_ENC_NC; ERROR_OUT(WC_TEST_RET_ENC_NC, out);
#else #else
if (hashType != WC_HASH_TYPE_NONE) if (hashType != WC_HASH_TYPE_NONE)
return WC_TEST_RET_ENC_NC; ERROR_OUT(WC_TEST_RET_ENC_NC, out);
#endif #endif
ret = wc_HashGetOID(WC_HASH_TYPE_MD5_SHA); 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) || if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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 #else
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E)) 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 #endif
ret = wc_HashGetOID(WC_HASH_TYPE_MD4); ret = wc_HashGetOID(WC_HASH_TYPE_MD4);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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); ret = wc_HashGetOID(WC_HASH_TYPE_NONE);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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); hashType = wc_OidGetHash(0);
if (hashType != WC_HASH_TYPE_NONE) 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) */ #endif /* !defined(NO_ASN) || !defined(NO_DH) || defined(HAVE_ECC) */
ret = wc_HashGetBlockSize(WC_HASH_TYPE_MD2); 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) || if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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 #else
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E)) 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 #endif
ret = wc_HashGetDigestSize(WC_HASH_TYPE_MD2); ret = wc_HashGetDigestSize(WC_HASH_TYPE_MD2);
#ifdef WOLFSSL_MD2 #ifdef WOLFSSL_MD2
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) || if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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 #else
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E)) 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 #endif
ret = wc_HashGetBlockSize(WC_HASH_TYPE_MD4); 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) || if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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 #else
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E)) 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 #endif
ret = wc_HashGetDigestSize(WC_HASH_TYPE_MD4); ret = wc_HashGetDigestSize(WC_HASH_TYPE_MD4);
#ifndef NO_MD4 #ifndef NO_MD4
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) || if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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 #else
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E)) 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 #endif
ret = wc_HashGetBlockSize(WC_HASH_TYPE_MD5_SHA); ret = wc_HashGetBlockSize(WC_HASH_TYPE_MD5_SHA);
#if !defined(NO_MD5) && !defined(NO_SHA) #if !defined(NO_MD5) && !defined(NO_SHA)
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) || if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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 #else
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E)) 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 #endif
ret = wc_HashGetBlockSize(WC_HASH_TYPE_BLAKE2B); 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) || if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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 #else
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E)) 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 #endif
ret = wc_HashGetDigestSize(WC_HASH_TYPE_BLAKE2B); ret = wc_HashGetDigestSize(WC_HASH_TYPE_BLAKE2B);
#if defined(HAVE_BLAKE2) || defined(HAVE_BLAKE2S) #if defined(HAVE_BLAKE2) || defined(HAVE_BLAKE2S)
if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) || if (ret == WC_NO_ERR_TRACE(HASH_TYPE_E) ||
ret == WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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 #else
if (ret != WC_NO_ERR_TRACE(HASH_TYPE_E)) 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 #endif
ret = wc_HashGetBlockSize(WC_HASH_TYPE_NONE); ret = wc_HashGetBlockSize(WC_HASH_TYPE_NONE);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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); ret = wc_HashGetDigestSize(WC_HASH_TYPE_NONE);
if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) 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(NO_CERTS) && !defined(NO_ASN)
#if defined(WOLFSSL_MD2) && !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS) #if defined(WOLFSSL_MD2) && !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS)
ret = wc_GetCTC_HashOID(WC_HASH_TYPE_MD2); ret = wc_GetCTC_HashOID(WC_HASH_TYPE_MD2);
if (ret == 0) if (ret == 0)
return WC_TEST_RET_ENC_EC(ret); ERROR_OUT(WC_TEST_RET_ENC_NC, out);
#endif #endif
#ifndef NO_MD5 #ifndef NO_MD5
ret = wc_GetCTC_HashOID(WC_MD5); ret = wc_GetCTC_HashOID(WC_MD5);
if (ret == 0) if (ret == 0)
return WC_TEST_RET_ENC_EC(ret); ERROR_OUT(WC_TEST_RET_ENC_NC, out);
#endif #endif
#ifndef NO_SHA #ifndef NO_SHA
ret = wc_GetCTC_HashOID(WC_SHA); ret = wc_GetCTC_HashOID(WC_SHA);
if (ret == 0) if (ret == 0)
return WC_TEST_RET_ENC_EC(ret); ERROR_OUT(WC_TEST_RET_ENC_NC, out);
#endif #endif
#ifdef WOLFSSL_SHA224 #ifdef WOLFSSL_SHA224
ret = wc_GetCTC_HashOID(WC_SHA224); ret = wc_GetCTC_HashOID(WC_SHA224);
if (ret == 0) if (ret == 0)
return WC_TEST_RET_ENC_EC(ret); ERROR_OUT(WC_TEST_RET_ENC_NC, out);
#endif #endif
#ifndef NO_SHA256 #ifndef NO_SHA256
ret = wc_GetCTC_HashOID(WC_SHA256); ret = wc_GetCTC_HashOID(WC_SHA256);
if (ret == 0) if (ret == 0)
return WC_TEST_RET_ENC_EC(ret); ERROR_OUT(WC_TEST_RET_ENC_NC, out);
#endif #endif
#ifdef WOLFSSL_SHA384 #ifdef WOLFSSL_SHA384
ret = wc_GetCTC_HashOID(WC_SHA384); ret = wc_GetCTC_HashOID(WC_SHA384);
if (ret == 0) if (ret == 0)
return WC_TEST_RET_ENC_EC(ret); ERROR_OUT(WC_TEST_RET_ENC_NC, out);
#endif #endif
#ifdef WOLFSSL_SHA512 #ifdef WOLFSSL_SHA512
ret = wc_GetCTC_HashOID(WC_SHA512); ret = wc_GetCTC_HashOID(WC_SHA512);
if (ret == 0) if (ret == 0)
return WC_TEST_RET_ENC_EC(ret); ERROR_OUT(WC_TEST_RET_ENC_NC, out);
#endif #endif
ret = wc_GetCTC_HashOID(-1); ret = wc_GetCTC_HashOID(-1);
if (ret != 0) if (ret != 0)
return WC_TEST_RET_ENC_EC(ret); ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
#endif #endif
ret = 0;
out:
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC) #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
(void)wc_HashDelete(hash, &hash); (void)wc_HashDelete(hash, &hash);
#endif #endif
return 0; return ret;
} }
#endif /* !NO_HASH_WRAPPER */ #endif /* !NO_HASH_WRAPPER */
@ -6547,6 +6552,11 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hmac_sha_test(void)
wc_test_ret_t ret; wc_test_ret_t ret;
int times = sizeof(test_hmac) / sizeof(testVector), i; int times = sizeof(test_hmac) / sizeof(testVector), i;
#if FIPS_VERSION3_GE(6,0,0)
int allowShortKeyWithFips = 1;
#endif
WOLFSSL_ENTER("hmac_sha_test"); WOLFSSL_ENTER("hmac_sha_test");
/* Following test vectors are from RFC 2202 section 3 */ /* 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[1] = b;
test_hmac[2] = c; test_hmac[2] = c;
test_hmac[3] = d; test_hmac[3] = d;
#if FIPS_VERSION3_GE(6,0,0)
int allowShortKeyWithFips = 1;
#endif
for (i = 0; i < times; ++i) { for (i = 0; i < times; ++i) {
#if defined(HAVE_CAVIUM) || (defined(HAVE_FIPS) && FIPS_VERSION3_LT(6,0,0)) #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 #endif
#if !defined(HAVE_FIPS) || FIPS_VERSION3_GE(6,0,0)
(void)wc_CmacFree(cmac);
#endif
} }
ret = 0; ret = 0;
out: 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) #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
XFREE(cmac, HEAP_HINT, DYNAMIC_TYPE_CMAC); XFREE(cmac, HEAP_HINT, DYNAMIC_TYPE_CMAC);
#endif #endif
@ -58318,22 +58332,21 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t prime_test(void)
WC_RNG rng; WC_RNG rng;
WOLFSSL_ENTER("prime_test"); 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 defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
if ((n == NULL) || if ((n == NULL) ||
(p1 == NULL) || (p1 == NULL) ||
(p2 == NULL) || (p2 == NULL) ||
(p3 == NULL)) (p3 == NULL))
ERROR_OUT(MEMORY_E, out); ERROR_OUT(WC_TEST_RET_ENC_EC(MEMORY_E), out);
#endif #endif
ret = wc_InitRng(&rng); ret = wc_InitRng(&rng);
if (ret != 0) if (ret != 0)
ret = WC_TEST_RET_ENC_EC(ret); 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) if (ret == 0)
ret = GenerateP(p1, p2, p3, ret = GenerateP(p1, p2, p3,
ecPairsA, sizeof(ecPairsA) / sizeof(ecPairsA[0]), kA); ecPairsA, sizeof(ecPairsA) / sizeof(ecPairsA[0]), kA);

View File

@ -2847,6 +2847,10 @@ extern void uITRON4_free(void *p) ;
/* default is SP Math. */ /* default is SP Math. */
#define WOLFSSL_SP_MATH_ALL #define WOLFSSL_SP_MATH_ALL
#endif #endif
#elif defined(WOLFCRYPT_FIPS_RAND)
#ifndef NO_BIG_INT
#define NO_BIG_INT
#endif
#else #else
/* FIPS 140-2 or older */ /* FIPS 140-2 or older */
/* Default to fast math (tfm.c), but allow heap math (integer.c) */ /* Default to fast math (tfm.c), but allow heap math (integer.c) */