Merge pull request #3799 from SparkiDev/sp_gcd_protect

SP int: fix guard around sp_gcm and sp_lcm
This commit is contained in:
toddouska
2021-02-23 11:53:25 -08:00
committed by GitHub
2 changed files with 10 additions and 17 deletions

View File

@ -13230,8 +13230,7 @@ int sp_prime_is_prime_ex(sp_int* a, int t, int* result, WC_RNG* rng)
}
#endif /* WOLFSSL_SP_MATH_ALL || WOLFSSL_HAVE_SP_DH */
#if (defined(WOLFSSL_SP_MATH_ALL) && !defined(WOLFSSL_RSA_VERIFY_ONLY)) || \
defined(WOLFSSL_HAVE_SP_DH) || (defined(HAVE_ECC) && defined(FP_ECC))
#if defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)
/* Calculates the Greatest Common Denominator (GCD) of a and b into r.
*
@ -13337,10 +13336,9 @@ int sp_gcd(sp_int* a, sp_int* b, sp_int* r)
return err;
}
#endif /* (WOLFSSL_SP_MATH_ALL && !WOLFSSL_SP_RSA_VERIFY_ONLY) ||
* WOLFSSL_HAVE_SP_DH || (HAVE_ECC && FP_ECC) */
#endif /* WOLFSSL_SP_MATH_ALL && !NO_RSA && WOLFSSL_KEY_GEN */
#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)
#if defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)
/* Calculates the Lowest Common Multiple (LCM) of a and b and stores in r.
*
@ -13393,7 +13391,7 @@ int sp_lcm(sp_int* a, sp_int* b, sp_int* r)
return err;
}
#endif /* !NO_RSA && WOLFSSL_KEY_GEN */
#endif /* WOLFSSL_SP_MATH_ALL && !NO_RSA && WOLFSSL_KEY_GEN */
/* Returns the run time settings.
*

View File

@ -31714,8 +31714,7 @@ static int mp_test_param(mp_int* a, mp_int* b, mp_int* r, WC_RNG* rng)
return -12827;
#endif
#if defined(WOLFSSL_SP_MATH_ALL) || defined(WOLFSSL_HAVE_SP_DH) || \
(defined(HAVE_ECC) && defined(FP_ECC))
#if defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)
ret = mp_gcd(NULL, NULL, NULL);
if (ret != MP_VAL)
return -12828;
@ -31822,7 +31821,7 @@ static int mp_test_param(mp_int* a, mp_int* b, mp_int* r, WC_RNG* rng)
return -12858;
#endif
#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)
#if defined(WOLFSSL_SP_MATH_ALL) && !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)
ret = mp_lcm(NULL, NULL, NULL);
if (ret != MP_VAL)
return -12859;
@ -32651,23 +32650,20 @@ static int mp_test_prime(mp_int* a, WC_RNG* rng)
}
#endif
#if defined(WOLFSSL_SP_MATH_ALL) || defined(WOLFSSL_SP_MATH) || \
defined(WOLFSSL_KEY_GEN)
#if defined(WOLFSSL_KEY_GEN) && (!defined(WOLFSSL_SP_MATH_ALL) || \
!defined(NO_RSA))
static int mp_test_lcm_gcd(mp_int* a, mp_int* b, mp_int* r, mp_int* exp,
WC_RNG* rng)
{
int ret;
#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)
int i;
WOLFSSL_SMALL_STACK_STATIC const int kat[][3] = {
{ 1, 1, 1 }, { 2, 1, 2 }, { 1, 2, 2 }, { 2, 4, 4 }, { 4, 2, 4 },
{ 12, 56, 168 }, { 56, 12, 168 }
};
#endif
(void)exp;
#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)
mp_set(a, 0);
mp_set(b, 1);
ret = mp_lcm(a, a, r);
@ -32690,7 +32686,6 @@ static int mp_test_lcm_gcd(mp_int* a, mp_int* b, mp_int* r, mp_int* exp,
if (mp_cmp(r, exp) != MP_EQ)
return -13094;
}
#endif
(void)rng;
#if defined(WOLFSSL_KEY_GEN) && (!defined(NO_DH) || !defined(NO_DSA)) && \
@ -33387,8 +33382,8 @@ WOLFSSL_TEST_SUBROUTINE int mp_test(void)
if ((ret = mp_test_prime(&a, &rng)) != 0)
return ret;
#endif
#if defined(WOLFSSL_SP_MATH_ALL) || (defined(WOLFSSL_SP_MATH) && \
defined(WOLFSSL_HAVE_SP_DH)) || defined(WOLFSSL_KEY_GEN)
#if defined(WOLFSSL_KEY_GEN) && (!defined(WOLFSSL_SP_MATH_ALL) || \
!defined(NO_RSA))
if ((ret = mp_test_lcm_gcd(&a, &b, &r1, &r2, &rng)) != 0)
return ret;
#endif