From eb37953061a408513afcf3fb03dea4e9e95d5740 Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 26 Mar 2021 15:55:14 -0700 Subject: [PATCH 1/3] Fix for `WOLFSSL_SP_MATH_ALL` typo. Plus a few other minor ones. --- IDE/Espressif/ESP-IDF/test/test_wolfssl.c | 2 +- src/tls.c | 2 +- wolfcrypt/src/sp_int.c | 6 +++--- wolfcrypt/test/test.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/IDE/Espressif/ESP-IDF/test/test_wolfssl.c b/IDE/Espressif/ESP-IDF/test/test_wolfssl.c index b1cb8bd4c..f7db98dc7 100644 --- a/IDE/Espressif/ESP-IDF/test/test_wolfssl.c +++ b/IDE/Espressif/ESP-IDF/test/test_wolfssl.c @@ -666,7 +666,7 @@ TEST_CASE("wolfssl sha crypt-test", "[wolfssl]") ESP_LOGI(TAG, "sha256_test()"); TEST_ASSERT_EQUAL(0, sha256_test()); #endif -#ifdef WOLSSL_SHA384 +#ifdef WOLFSSL_SHA384 ESP_LOGI(TAG, "sha384_test()"); TEST_ASSERT_EQUAL(0, sha384_test()); #endif diff --git a/src/tls.c b/src/tls.c index 8859a94b4..caa5a7634 100644 --- a/src/tls.c +++ b/src/tls.c @@ -5040,7 +5040,7 @@ static void TLSX_SessionTicket_ValidateRequest(WOLFSSL* ssl) } } } -#endif /* WLFSSL_TLS13 || !NO_WOLFSSL_CLIENT */ +#endif /* WOLFSSL_TLS13 || !NO_WOLFSSL_CLIENT */ static word16 TLSX_SessionTicket_GetSize(SessionTicket* ticket, int isRequest) diff --git a/wolfcrypt/src/sp_int.c b/wolfcrypt/src/sp_int.c index d22dd82bc..ff2a98473 100644 --- a/wolfcrypt/src/sp_int.c +++ b/wolfcrypt/src/sp_int.c @@ -2360,7 +2360,7 @@ void sp_forcezero(sp_int* a) } #endif /* !WOLFSSL_RSA_VERIFY_ONLY || !NO_DH || HAVE_ECC */ -#if defined(WOLSSL_SP_MATH_ALL) || !defined(NO_DH) || defined(HAVE_ECC) || \ +#if defined(WOLFSSL_SP_MATH_ALL) || !defined(NO_DH) || defined(HAVE_ECC) || \ !defined(NO_RSA) || defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) /* Copy value of multi-precision number a into r. * @@ -2390,7 +2390,7 @@ int sp_copy(const sp_int* a, sp_int* r) } #endif -#if defined(WOLSSL_SP_MATH_ALL) || (defined(HAVE_ECC) && defined(FP_ECC)) +#if defined(WOLFSSL_SP_MATH_ALL) || (defined(HAVE_ECC) && defined(FP_ECC)) /* Initializes r and copies in value from a. * * @param [out] r SP integer - destination. @@ -2409,7 +2409,7 @@ int sp_init_copy(sp_int* r, sp_int* a) } return err; } -#endif /* WOLSSL_SP_MATH_ALL || (HAVE_ECC && FP_ECC) */ +#endif /* WOLFSSL_SP_MATH_ALL || (HAVE_ECC && FP_ECC) */ #if (defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \ !defined(NO_DH) || !defined(NO_DSA) diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index 5be88a07a..283ff48f1 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -35554,7 +35554,7 @@ WOLFSSL_TEST_SUBROUTINE int mp_test(void) if (ret != 0) return -13300; -#ifdef WOLSSL_SP_MATH_ALL +#ifdef WOLFSSL_SP_MATH_ALL mp_init_copy(&p, &a); #else ret = mp_init(&p); From 24d8e1b104484ee83554fc6d517bcffa5dacdb22 Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 26 Mar 2021 16:03:03 -0700 Subject: [PATCH 2/3] SP math all edge cases without RSA. --- wolfcrypt/src/sp_int.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/wolfcrypt/src/sp_int.c b/wolfcrypt/src/sp_int.c index ff2a98473..4ef189cb1 100644 --- a/wolfcrypt/src/sp_int.c +++ b/wolfcrypt/src/sp_int.c @@ -12290,7 +12290,7 @@ int sp_to_unsigned_bin_len(sp_int* a, byte* out, int outSz) return err; } -#if defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY) +#if defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && !defined(WOLFSSL_RSA_VERIFY_ONLY) /* Store the number in big-endian format in array at an offset. * The array must be large enough for encoded number - use mp_unsigned_bin_size * to calculate the number of bytes required. @@ -12312,9 +12312,9 @@ int sp_to_unsigned_bin_at_pos(int o, sp_int*a, unsigned char* out) return ret; } -#endif /* WOLFSSL_SP_MATH_ALL */ +#endif /* WOLFSSL_SP_MATH_ALL && !NO_RSA && !WOLFSSL_RSA_VERIFY_ONLY */ -#if (defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \ +#if (defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \ defined(HAVE_ECC) /* Convert hexadecimal number as string in big-endian format to a * multi-precision number. @@ -12388,9 +12388,9 @@ static int _sp_read_radix_16(sp_int* a, const char* in) } return err; } -#endif /* (WOLFSSL_SP_MATH_ALL && !WOLFSSL_RSA_VERIFY_ONLY) || HAVE_ECC */ +#endif /* (WOLFSSL_SP_MATH_ALL && !NO_RSA && !WOLFSSL_RSA_VERIFY_ONLY) || HAVE_ECC */ -#if defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY) +#if defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && !defined(WOLFSSL_RSA_VERIFY_ONLY) /* Convert decimal number as string in big-endian format to a multi-precision * number. * @@ -12447,9 +12447,9 @@ static int _sp_read_radix_10(sp_int* a, const char* in) return err; } -#endif /* WOLFSSL_SP_MATH_ALL && !WOLFSSL_RSA_VERIFY_ONLY */ +#endif /* WOLFSSL_SP_MATH_ALL && !NO_RSA && !WOLFSSL_RSA_VERIFY_ONLY */ -#if (defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \ +#if (defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \ defined(HAVE_ECC) /* Convert a number as string in big-endian format to a big number. * Only supports base-16 (hexadecimal) and base-10 (decimal). @@ -12482,7 +12482,7 @@ int sp_read_radix(sp_int* a, const char* in, int radix) if (radix == 16) { err = _sp_read_radix_16(a, in); } - #if defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY) + #if defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && !defined(WOLFSSL_RSA_VERIFY_ONLY) else if (radix == 10) { err = _sp_read_radix_10(a, in); } @@ -12494,7 +12494,7 @@ int sp_read_radix(sp_int* a, const char* in, int radix) return err; } -#endif /* (WOLFSSL_SP_MATH_ALL && !WOLFSSL_RSA_VERIFY_ONLY) || HAVE_ECC */ +#endif /* (WOLFSSL_SP_MATH_ALL && !NO_RSA && !WOLFSSL_RSA_VERIFY_ONLY) || HAVE_ECC */ #if (defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \ defined(WC_MP_TO_RADIX) From 53d97d19619070f3d6e240d2c7970697a9ce51fe Mon Sep 17 00:00:00 2001 From: David Garske Date: Mon, 5 Apr 2021 11:43:21 -0700 Subject: [PATCH 3/3] Fix for DSA only case and missing `sp_read_radix` --- wolfcrypt/src/sp_int.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wolfcrypt/src/sp_int.c b/wolfcrypt/src/sp_int.c index 4ef189cb1..fc0b74bf6 100644 --- a/wolfcrypt/src/sp_int.c +++ b/wolfcrypt/src/sp_int.c @@ -12315,7 +12315,7 @@ int sp_to_unsigned_bin_at_pos(int o, sp_int*a, unsigned char* out) #endif /* WOLFSSL_SP_MATH_ALL && !NO_RSA && !WOLFSSL_RSA_VERIFY_ONLY */ #if (defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \ - defined(HAVE_ECC) + defined(HAVE_ECC) || !defined(NO_DSA) /* Convert hexadecimal number as string in big-endian format to a * multi-precision number. * @@ -12450,7 +12450,7 @@ static int _sp_read_radix_10(sp_int* a, const char* in) #endif /* WOLFSSL_SP_MATH_ALL && !NO_RSA && !WOLFSSL_RSA_VERIFY_ONLY */ #if (defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \ - defined(HAVE_ECC) + defined(HAVE_ECC) || !defined(NO_DSA) /* Convert a number as string in big-endian format to a big number. * Only supports base-16 (hexadecimal) and base-10 (decimal). *