mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-31 19:24:42 +02:00
Added unit tests for Sha3
This commit is contained in:
101
tests/api.c
101
tests/api.c
@@ -8580,6 +8580,42 @@ static int test_wc_Sha3_512_Copy (void)
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
} /* END test_wc_Sha3_512_Copy */
|
} /* END test_wc_Sha3_512_Copy */
|
||||||
|
/*
|
||||||
|
* Unit test function for wc_Sha3_GetFlags()
|
||||||
|
*/
|
||||||
|
static int test_wc_Sha3_GetFlags (void)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
#if defined(WOLFSSL_SHA3) && \
|
||||||
|
(defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB))
|
||||||
|
wc_Sha3 sha3;
|
||||||
|
word32 flags = 0;
|
||||||
|
|
||||||
|
|
||||||
|
printf(testingFmt, "wc_Sha3_GetFlags()");
|
||||||
|
|
||||||
|
/* Initialize */
|
||||||
|
ret = wc_InitSha3_224(&sha3, HEAP_HINT, devId);
|
||||||
|
if (ret != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
if (ret == 0) {
|
||||||
|
ret = wc_Sha3_GetFlags(&sha3, &flags);
|
||||||
|
}
|
||||||
|
if (ret == 0) {
|
||||||
|
if (flags & WC_HASH_FLAG_ISCOPY) {
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wc_Sha3_224_Free(&sha3);
|
||||||
|
|
||||||
|
printf(resultFmt, ret == 0 ? passed : failed);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
} /* END test_wc_Sha3_GetFlags */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -8725,7 +8761,70 @@ static int test_wc_Shake256_Final (void)
|
|||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Testing wc_Shake256_Copy()
|
||||||
|
*/
|
||||||
|
static int test_wc_Shake256_Copy (void)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
#if defined(WOLFSSL_SHAKE256) && !defined(WOLFSSL_NO_SHAKE256)
|
||||||
|
wc_Shake shake, shakeCpy;
|
||||||
|
const char* msg = "Everyone gets Friday off.";
|
||||||
|
word32 msglen = (word32)XSTRLEN(msg);
|
||||||
|
byte hash[144];
|
||||||
|
byte hashCpy[144];
|
||||||
|
word32 hashLen = sizeof(hash);
|
||||||
|
word32 hashLenCpy = sizeof(hashCpy);
|
||||||
|
|
||||||
|
XMEMSET(hash, 0, sizeof(hash));
|
||||||
|
XMEMSET(hashCpy, 0, sizeof(hashCpy));
|
||||||
|
|
||||||
|
printf(testingFmt, "wc_Shake256_Copy()");
|
||||||
|
|
||||||
|
ret = wc_InitShake256(&shake, HEAP_HINT, devId);
|
||||||
|
if (ret != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = wc_InitShake256(&shakeCpy, HEAP_HINT, devId);
|
||||||
|
if (ret != 0) {
|
||||||
|
wc_Shake256_Free(&shake);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = wc_Shake256_Update(&shake, (byte*)msg, msglen);
|
||||||
|
|
||||||
|
if (ret == 0) {
|
||||||
|
ret = wc_Shake256_Copy(&shakeCpy, &shake);
|
||||||
|
if (ret == 0) {
|
||||||
|
ret = wc_Shake256_Final(&shake, hash, hashLen);
|
||||||
|
if (ret == 0) {
|
||||||
|
ret = wc_Shake256_Final(&shakeCpy, hashCpy, hashLenCpy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ret == 0 && XMEMCMP(hash, hashCpy, sizeof(hash)) != 0) {
|
||||||
|
ret = WOLFSSL_FATAL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Test bad args. */
|
||||||
|
if (ret == 0) {
|
||||||
|
ret = wc_Shake256_Copy(NULL, &shake);
|
||||||
|
if (ret == BAD_FUNC_ARG) {
|
||||||
|
ret = wc_Shake256_Copy(&shakeCpy, NULL);
|
||||||
|
}
|
||||||
|
if (ret == BAD_FUNC_ARG) {
|
||||||
|
ret = 0;
|
||||||
|
} else if (ret == 0) {
|
||||||
|
ret = WOLFSSL_FATAL_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(resultFmt, ret == 0 ? passed : failed);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
} /* END test_wc_Shake256_Copy */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -34508,9 +34607,11 @@ void ApiTest(void)
|
|||||||
AssertIntEQ(test_wc_Sha3_256_Copy(), 0);
|
AssertIntEQ(test_wc_Sha3_256_Copy(), 0);
|
||||||
AssertIntEQ(test_wc_Sha3_384_Copy(), 0);
|
AssertIntEQ(test_wc_Sha3_384_Copy(), 0);
|
||||||
AssertIntEQ(test_wc_Sha3_512_Copy(), 0);
|
AssertIntEQ(test_wc_Sha3_512_Copy(), 0);
|
||||||
|
AssertIntEQ(test_wc_Sha3_GetFlags(), 0);
|
||||||
AssertIntEQ(test_wc_InitShake256(), 0);
|
AssertIntEQ(test_wc_InitShake256(), 0);
|
||||||
AssertIntEQ(testing_wc_Shake256_Update(), 0);
|
AssertIntEQ(testing_wc_Shake256_Update(), 0);
|
||||||
AssertIntEQ(test_wc_Shake256_Final(), 0);
|
AssertIntEQ(test_wc_Shake256_Final(), 0);
|
||||||
|
AssertIntEQ(test_wc_Shake256_Copy(), 0);
|
||||||
|
|
||||||
AssertFalse(test_wc_Md5HmacSetKey());
|
AssertFalse(test_wc_Md5HmacSetKey());
|
||||||
AssertFalse(test_wc_Md5HmacUpdate());
|
AssertFalse(test_wc_Md5HmacUpdate());
|
||||||
|
Reference in New Issue
Block a user