From a4bdfbf953839208cdbe023d1b8fb8741b2bb6c1 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Fri, 14 Jun 2019 08:43:36 +1000 Subject: [PATCH 1/2] Fix for small stack in test.c --- wolfcrypt/test/test.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index 565b67070..86182bca4 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -4510,21 +4510,24 @@ int chacha_test(void) #ifndef BENCH_EMBEDDED #ifdef WOLFSSL_SMALL_STACK - cipher_big = (byte*)XMALLOC(CHACHA_BIG_TEST_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER); + cipher_big = (byte*)XMALLOC(CHACHA_BIG_TEST_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); if (cipher_big == NULL) { return MEMORY_E; } - plain_big = (byte*)XMALLOC(CHACHA_BIG_TEST_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER); + plain_big = (byte*)XMALLOC(CHACHA_BIG_TEST_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); if (plain_big == NULL) { return MEMORY_E; } - input_big = (byte*)XMALLOC(CHACHA_BIG_TEST_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER); + input_big = (byte*)XMALLOC(CHACHA_BIG_TEST_SIZE, NULL, + DYNAMIC_TYPE_TMP_BUFFER); if (input_big == NULL) { return MEMORY_E; } - XMEMSET(cipher_big, 0, sizeof(CHACHA_BIG_TEST_SIZE)); - XMEMSET(plain_big, 0, sizeof(CHACHA_BIG_TEST_SIZE)); - XMEMSET(input_big, 0, sizeof(CHACHA_BIG_TEST_SIZE)); + XMEMSET(cipher_big, 0, CHACHA_BIG_TEST_SIZE); + XMEMSET(plain_big, 0, CHACHA_BIG_TEST_SIZE); + XMEMSET(input_big, 0, CHACHA_BIG_TEST_SIZE); #endif /* WOLFSSL_SMALL_STACK */ #endif /* BENCH_EMBEDDED */ @@ -4602,12 +4605,13 @@ int chacha_test(void) if (ret != 0) return ret; - ret |= wc_Chacha_Process(&enc, cipher_big, plain_big, CHACHA_BIG_TEST_SIZE); - ret |= wc_Chacha_Process(&dec, plain_big, cipher_big, CHACHA_BIG_TEST_SIZE); + ret |= wc_Chacha_Process(&enc, cipher_big, plain_big, CHACHA_BIG_TEST_SIZE); + ret |= wc_Chacha_Process(&dec, plain_big, cipher_big, + CHACHA_BIG_TEST_SIZE); if (ret != 0) return ret; - if (XMEMCMP(plain_big, input_big, sizeof(input_big))) + if (XMEMCMP(plain_big, input_big, CHACHA_BIG_TEST_SIZE)) return -4330; if (XMEMCMP(cipher_big, cipher_big_result, CHACHA_BIG_TEST_SIZE)) From 18ac566f483672d503ee9e8e27fcf762cd35943d Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Fri, 14 Jun 2019 10:22:27 +1000 Subject: [PATCH 2/2] Fix AVX2 ChaCha20 assembly --- wolfcrypt/src/chacha_asm.S | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wolfcrypt/src/chacha_asm.S b/wolfcrypt/src/chacha_asm.S index 5c6c4fd38..86e6bea5d 100644 --- a/wolfcrypt/src/chacha_asm.S +++ b/wolfcrypt/src/chacha_asm.S @@ -22,9 +22,9 @@ #ifndef HAVE_INTEL_AVX1 #define HAVE_INTEL_AVX1 #endif /* HAVE_INTEL_AVX1 */ -#ifndef HAVE_INTEL_AVX2 +#ifndef NO_AVX2_SUPPORT #define HAVE_INTEL_AVX2 -#endif /* HAVE_INTEL_AVX2 */ +#endif /* NO_AVX2_SUPPORT */ #ifndef __APPLE__ .text @@ -1293,7 +1293,7 @@ L_chacha20_avx2_loop256: vperm2i128 $32, %ymm1, %ymm0, %ymm8 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vperm2i128 $49, %ymm1, %ymm0, %ymm12 - vperm2i128 $49, %ymm3, %ymm2, %ymm14 + vperm2i128 $49, %ymm3, %ymm2, %ymm13 vperm2i128 $32, %ymm5, %ymm4, %ymm10 vperm2i128 $32, %ymm7, %ymm6, %ymm11 vperm2i128 $49, %ymm5, %ymm4, %ymm14 @@ -1349,7 +1349,7 @@ L_chacha20_avx2_loop256: vperm2i128 $32, %ymm1, %ymm0, %ymm8 vperm2i128 $32, %ymm3, %ymm2, %ymm9 vperm2i128 $49, %ymm1, %ymm0, %ymm12 - vperm2i128 $49, %ymm3, %ymm2, %ymm14 + vperm2i128 $49, %ymm3, %ymm2, %ymm13 vperm2i128 $32, %ymm5, %ymm4, %ymm10 vperm2i128 $32, %ymm7, %ymm6, %ymm11 vperm2i128 $49, %ymm5, %ymm4, %ymm14