Merge pull request #5560 from douzzer/20220906-fixes

20220906-fixes
pull/5561/head
David Garske 2022-09-06 17:56:33 -07:00 committed by GitHub
commit 12680a967a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 17 deletions

View File

@ -575,6 +575,11 @@ add_option("WOLFSSL_SHAKE256"
"Enable wolfSSL SHAKE256 support (default: enabled on x86_64/aarch64)"
"no" "yes;no;small")
# SHAKE128
add_option("WOLFSSL_SHAKE128"
"Enable wolfSSL SHAKE128 support (default: enabled on x86_64/aarch64)"
"no" "yes;no;small")
# SHA512
add_option("WOLFSSL_SHA512"
"Enable wolfSSL SHA-512 support (default: enabled)"
@ -1147,6 +1152,21 @@ if(WOLFSSL_SHAKE256)
message(FATAL_ERROR "Must have SHA-3 enabled: --enable-sha3")
endif()
endif()
else()
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_NO_SHAKE256")
endif()
# SHAKE128
if(WOLFSSL_SHAKE128)
if(NOT WOLFSSL_32BIT)
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_SHAKE128")
if(NOT WOLFSSL_SHA3)
message(FATAL_ERROR "Must have SHA-3 enabled: --enable-sha3")
endif()
endif()
else()
list(APPEND WOLFSSL_DEFINITIONS "-DWOLFSSL_NO_SHAKE128")
endif()
# POLY1305

View File

@ -3828,7 +3828,8 @@ exit:
#endif
#ifdef WOLFSSL_SHAKE256
static int shake256_absorb_test(wc_Shake* sha)
static int shake256_absorb_test(wc_Shake* sha, byte *large_input_buf,
size_t large_input_buf_size)
{
byte hash[WC_SHA3_256_BLOCK_SIZE*2];
@ -3837,7 +3838,6 @@ static int shake256_absorb_test(wc_Shake* sha)
int ret = 0;
int times = sizeof(test_sha) / sizeof(struct testVector), i;
byte large_input[1024];
const char* large_digest =
"\x21\x25\x8e\xae\x6e\x4f\xa7\xe1\xb9\x6d\xa7\xc9\x7d\x46\x03\x69"
"\x29\x0d\x81\x49\xba\x5d\xaf\x37\xfd\xeb\x25\x52\x1d\xd9\xbd\x65"
@ -3965,15 +3965,15 @@ static int shake256_absorb_test(wc_Shake* sha)
}
/* BEGIN LARGE HASH TEST */ {
for (i = 0; i < (int)sizeof(large_input); i++) {
large_input[i] = (byte)(i & 0xFF);
for (i = 0; i < (int)large_input_buf_size; i++) {
large_input_buf[i] = (byte)(i & 0xFF);
}
ret = wc_InitShake256(sha, HEAP_HINT, devId);
if (ret != 0)
ERROR_OUT(-3104, exit);
/* Absorb is non-incremental. */
ret = wc_Shake256_Absorb(sha, (byte*)large_input,
(word32)sizeof(large_input));
ret = wc_Shake256_Absorb(sha, large_input_buf,
(word32)large_input_buf_size);
if (ret != 0)
ERROR_OUT(-3105, exit);
/* Able to squeeze out blocks incrementally. */
@ -4002,7 +4002,12 @@ WOLFSSL_TEST_SUBROUTINE int shake256_test(void)
int ret = 0;
int times = sizeof(test_sha) / sizeof(struct testVector), i;
byte large_input[1024];
#define SHAKE256_LARGE_INPUT_BUFSIZ 1024
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
byte *large_input = NULL;
#else
byte large_input[SHAKE256_LARGE_INPUT_BUFSIZ];
#endif
const char* large_digest =
"\x90\x32\x4a\xcc\xd1\xdf\xb8\x0b\x79\x1f\xb8\xc8\x5b\x54\xc8\xe7"
"\x45\xf5\x60\x6b\x38\x26\xb2\x0a\xee\x38\x01\xf3\xd9\xfa\x96\x9f"
@ -4112,14 +4117,21 @@ WOLFSSL_TEST_SUBROUTINE int shake256_test(void)
ERROR_OUT(-3103 - i, exit);
}
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
large_input = (byte *)XMALLOC(SHAKE256_LARGE_INPUT_BUFSIZ, NULL,
DYNAMIC_TYPE_TMP_BUFFER);
if (large_input == NULL)
ERROR_OUT(-3107, exit);
#endif
/* BEGIN LARGE HASH TEST */ {
for (i = 0; i < (int)sizeof(large_input); i++) {
for (i = 0; i < SHAKE256_LARGE_INPUT_BUFSIZ; i++) {
large_input[i] = (byte)(i & 0xFF);
}
times = 100;
for (i = 0; i < times; ++i) {
ret = wc_Shake256_Update(&sha, (byte*)large_input,
(word32)sizeof(large_input));
SHAKE256_LARGE_INPUT_BUFSIZ);
if (ret != 0)
ERROR_OUT(-3104, exit);
}
@ -4130,10 +4142,15 @@ WOLFSSL_TEST_SUBROUTINE int shake256_test(void)
ERROR_OUT(-3106, exit);
} /* END LARGE HASH TEST */
ret = shake256_absorb_test(&sha);
ret = shake256_absorb_test(&sha, large_input, SHAKE256_LARGE_INPUT_BUFSIZ);
exit:
wc_Shake256_Free(&sha);
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
if (large_input != NULL)
XFREE(large_input, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
return ret;
}
#endif
@ -19692,6 +19709,12 @@ WOLFSSL_TEST_SUBROUTINE int openssl_test(void)
0xb9,0xd7,0xcb,0x08,0xb0,0xe1,0x7b,0xa0,
0xc2
};
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
EVP_CIPHER_CTX *p_en;
EVP_CIPHER_CTX *p_de;
#endif
#endif /* WOLFSSL_AES_128 */
#ifdef WOLFSSL_AES_192
@ -19767,11 +19790,6 @@ WOLFSSL_TEST_SUBROUTINE int openssl_test(void)
#ifdef WOLFSSL_AES_128
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
EVP_CIPHER_CTX *p_en;
EVP_CIPHER_CTX *p_de;
#endif
EVP_CIPHER_CTX_init(en);
if (EVP_CipherInit(en, EVP_aes_128_ctr(),
(unsigned char*)ctrKey, (unsigned char*)ctrIv, 0) == 0)
@ -19795,9 +19813,11 @@ WOLFSSL_TEST_SUBROUTINE int openssl_test(void)
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
p_en = wolfSSL_EVP_CIPHER_CTX_new();
if(p_en == NULL)return -8635;
if (p_en == NULL)
return -8635;
p_de = wolfSSL_EVP_CIPHER_CTX_new();
if(p_de == NULL)return -8636;
if (p_de == NULL)
return -8636;
if (EVP_CipherInit(p_en, EVP_aes_128_ctr(),
(unsigned char*)ctrKey, (unsigned char*)ctrIv, 0) == 0)