From 4489fd6fec38deadf58058c1ca8a16f8c597be95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Sat, 25 Apr 2020 20:01:00 +0200 Subject: [PATCH] Require gmp-6.1.0 or later, for mpn_zero_p. --- ChangeLog | 8 ++++++++ configure.ac | 5 +++-- ecc-ecdsa-verify.c | 14 ++------------ testsuite/testutils.c | 13 ------------- testsuite/testutils.h | 9 --------- 5 files changed, 13 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 31735d8f..f2f46ed6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2020-04-25 Niels Möller <nisse@lysator.liu.se> + * configure.ac: Update required version of GMP to 6.1.0, needed + for mpn_zero_p. + * ecc-ecdsa-verify.c (zero_p): Deleted static function, usage + replaced with mpn_zero_p. + * testsuite/testutils.c (mpn_zero_p): Delete conditional + definition. + * testsuite/testutils.h: Delete corresponding declarations. + * Makefile.in (DISTFILES): Add poly1305-internal.h. * testsuite/Makefile.in (DISTFILES): Delete setup-env. diff --git a/configure.ac b/configure.ac index e5824ae0..dd7d6605 100644 --- a/configure.ac +++ b/configure.ac @@ -243,9 +243,10 @@ fi # Checks for libraries if test "x$enable_public_key" = "xyes" ; then if test "x$enable_mini_gmp" = "xno" ; then - AC_CHECK_LIB(gmp, __gmpn_sec_div_r,, + # mpn_zero_p was added in GMP-6.1.0 + AC_CHECK_LIB(gmp, __gmpn_zero_p,, [AC_MSG_WARN( - [GNU MP not found, or too old. GMP-6.0 or later is needed, see https://gmplib.org/. + [GNU MP not found, or too old. GMP-6.1.0 or later is needed, see https://gmplib.org/. Support for public key algorithms will be unavailable.])] enable_public_key=no) diff --git a/ecc-ecdsa-verify.c b/ecc-ecdsa-verify.c index 6f9fb5d9..c43bdadc 100644 --- a/ecc-ecdsa-verify.c +++ b/ecc-ecdsa-verify.c @@ -43,20 +43,10 @@ /* Low-level ECDSA verify */ -/* FIXME: Use mpn_zero_p. */ -static int -zero_p (const mp_limb_t *xp, mp_size_t n) -{ - while (n > 0) - if (xp[--n] > 0) - return 0; - return 1; -} - static int ecdsa_in_range (const struct ecc_curve *ecc, const mp_limb_t *xp) { - return !zero_p (xp, ecc->p.size) + return !mpn_zero_p (xp, ecc->p.size) && mpn_cmp (xp, ecc->q.m, ecc->p.size) < 0; } @@ -122,7 +112,7 @@ ecc_ecdsa_verify (const struct ecc_curve *ecc, /* u = 0 can happen only if h = 0 or h = q, which is extremely unlikely. */ - if (!zero_p (u1, ecc->p.size)) + if (!mpn_zero_p (u1, ecc->p.size)) { /* Total storage: 7*ecc->p.size + ecc->mul_g_itch (ecc->p.size) */ ecc->mul_g (ecc, P1, u1, P1 + 3*ecc->p.size); diff --git a/testsuite/testutils.c b/testsuite/testutils.c index 187da0ef..1f279e9a 100644 --- a/testsuite/testutils.c +++ b/testsuite/testutils.c @@ -1063,19 +1063,6 @@ test_armor(const struct nettle_armor *armor, #if WITH_HOGWEED -#ifndef mpn_zero_p -int -mpn_zero_p (mp_srcptr ap, mp_size_t n) -{ - while (--n >= 0) - { - if (ap[n] != 0) - return 0; - } - return 1; -} -#endif - void mpn_out_str (FILE *f, int base, const mp_limb_t *xp, mp_size_t xn) { diff --git a/testsuite/testutils.h b/testsuite/testutils.h index 8ace6a82..0dc235c6 100644 --- a/testsuite/testutils.h +++ b/testsuite/testutils.h @@ -164,17 +164,8 @@ void mpz_urandomb (mpz_t r, struct knuth_lfib_ctx *ctx, mp_bitcnt_t bits); /* This is cheating */ #define mpz_rrandomb mpz_urandomb -/* mini-gmp defines this function (in the GMP library, it was added in - gmp in version 6.1.0). */ -#define mpn_zero_p mpn_zero_p - #endif /* NETTLE_USE_MINI_GMP */ -#ifndef mpn_zero_p -int -mpn_zero_p (mp_srcptr ap, mp_size_t n); -#endif - void mpn_out_str (FILE *f, int base, const mp_limb_t *xp, mp_size_t xn); -- GitLab