summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2020-04-25 20:01:00 +0200
committerNiels Möller <nisse@lysator.liu.se>2020-04-25 20:01:00 +0200
commit4489fd6fec38deadf58058c1ca8a16f8c597be95 (patch)
tree9711313211d72219a4dc19597a12c73ee510aa8d
parenta865bd1d037860643e99168026fbf2553f345db9 (diff)
downloadnettle-4489fd6fec38deadf58058c1ca8a16f8c597be95.tar.gz
Require gmp-6.1.0 or later, for mpn_zero_p.
-rw-r--r--ChangeLog8
-rw-r--r--configure.ac5
-rw-r--r--ecc-ecdsa-verify.c14
-rw-r--r--testsuite/testutils.c13
-rw-r--r--testsuite/testutils.h9
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);