]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
Move NETTLE_TEST_SEED logic to testutils.c.
authorNiels Möller <nisse@lysator.liu.se>
Sat, 13 Nov 2021 16:17:36 +0000 (17:17 +0100)
committerNiels Möller <nisse@lysator.liu.se>
Sat, 13 Nov 2021 16:17:36 +0000 (17:17 +0100)
* testsuite/testutils.c (get_random_seed): Move function here.
(test_randomize): New function.
* testsuite/ecc-mod-test.c (get_random_seed): Delete old copy.
(test_main): Use test_randomize.
* testsuite/rsa-compute-root-test.c (get_random_seed): Delete old copy.
(test_main): Use test_randomize.

ChangeLog
testsuite/ecc-mod-test.c
testsuite/rsa-compute-root-test.c
testsuite/testutils.c
testsuite/testutils.h

index ba4fa68940f28fd822551de9f75b86dbc97c7744..e3da5bd24920cabb112e6968b0b91f142da4fed3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2021-11-13  Niels Möller  <nisse@lysator.liu.se>
 
+       * testsuite/testutils.c (get_random_seed): Move function here.
+       (test_randomize): New function.
+       * testsuite/ecc-mod-test.c (get_random_seed): Delete old copy.
+       (test_main): Use test_randomize.
+       * testsuite/rsa-compute-root-test.c (get_random_seed): Delete old copy.
+       (test_main): Use test_randomize.
+
        * ecc-secp224r1.c (ecc_secp224r1_sqrt): Fix result for zero
        input, which needs handling as a special case in the
        Tonelli-Shanks algorithm.
index 719789c03081f49cf5da24d7e1e1e8f7b93c950d..50fbeecf9372a4ba12763f6c9712c9dee0e07129 100644 (file)
@@ -1,9 +1,5 @@
 #include "testutils.h"
 
-#include <errno.h>
-#include <limits.h>
-#include <sys/time.h>
-
 static void
 ref_mod (mp_limb_t *rp, const mp_limb_t *ap, const mp_limb_t *mp, mp_size_t mn)
 {
@@ -215,40 +211,9 @@ test_patterns (const char *name,
   mpz_clear (r);
 }
 
-#if !NETTLE_USE_MINI_GMP
-static void
-get_random_seed(mpz_t seed)
-{
-  struct timeval tv;
-  FILE *f;
-  f = fopen ("/dev/urandom", "rb");
-  if (f)
-    {
-      uint8_t buf[8];
-      size_t res;
-
-      setbuf (f, NULL);
-      res = fread (&buf, sizeof(buf), 1, f);
-      fclose(f);
-      if (res == 1)
-       {
-         nettle_mpz_set_str_256_u (seed, sizeof(buf), buf);
-         return;
-       }
-      fprintf (stderr, "Read of /dev/urandom failed: %s\n",
-              strerror (errno));
-    }
-  gettimeofday(&tv, NULL);
-  mpz_set_ui (seed, tv.tv_sec);
-  mpz_mul_ui (seed, seed, 1000000UL);
-  mpz_add_ui (seed, seed, tv.tv_usec);
-}
-#endif /* !NETTLE_USE_MINI_GMP */
-
 void
 test_main (void)
 {
-  const char *nettle_test_seed;
   gmp_randstate_t rands;
   unsigned count = COUNT;
   unsigned i;
@@ -263,27 +228,8 @@ test_main (void)
       test_patterns ("q", &ecc_curves[i]->p);
     }
 
-#if !NETTLE_USE_MINI_GMP
-  nettle_test_seed = getenv ("NETTLE_TEST_SEED");
-  if (nettle_test_seed && *nettle_test_seed)
-    {
-      mpz_t seed;
-      mpz_init (seed);
-      if (mpz_set_str (seed, nettle_test_seed, 0) < 0
-         || mpz_sgn (seed) < 0)
-       die ("Invalid NETTLE_TEST_SEED: %s\n",
-            nettle_test_seed);
-      if (mpz_sgn (seed) == 0)
-       get_random_seed (seed);
-      fprintf (stderr, "Using NETTLE_TEST_SEED=");
-      mpz_out_str (stderr, 10, seed);
-      fprintf (stderr, "\n");
-
-      gmp_randseed (rands, seed);
-      mpz_clear (seed);
-      count *= 20;
-    }
-#endif /* !NETTLE_USE_MINI_GMP */
+  if (test_randomize(rands))
+    count *= 20;
 
   for (i = 0; ecc_curves[i]; i++)
     {
index e97d987ed4d4a16f0cc70af9c297395779b2244c..de3586efcbb30b155b90adc7f6dc4e77d977ca23 100644 (file)
@@ -1,9 +1,6 @@
 #include "testutils.h"
 
 #include <assert.h>
-#include <errno.h>
-#include <limits.h>
-#include <sys/time.h>
 
 #include "rsa.h"
 
@@ -141,40 +138,9 @@ generate_keypair (gmp_randstate_t rands,
 }
 #endif
 
-#if !NETTLE_USE_MINI_GMP
-static void
-get_random_seed(mpz_t seed)
-{
-  struct timeval tv;
-  FILE *f;
-  f = fopen ("/dev/urandom", "rb");
-  if (f)
-    {
-      uint8_t buf[8];
-      size_t res;
-
-      setbuf (f, NULL);
-      res = fread (&buf, sizeof(buf), 1, f);
-      fclose(f);
-      if (res == 1)
-       {
-         nettle_mpz_set_str_256_u (seed, sizeof(buf), buf);
-         return;
-       }
-      fprintf (stderr, "Read of /dev/urandom failed: %s\n",
-              strerror (errno));
-    }
-  gettimeofday(&tv, NULL);
-  mpz_set_ui (seed, tv.tv_sec);
-  mpz_mul_ui (seed, seed, 1000000UL);
-  mpz_add_ui (seed, seed, tv.tv_usec);
-}
-#endif /* !NETTLE_USE_MINI_GMP */
-
 void
 test_main (void)
 {
-  const char *nettle_test_seed;
   gmp_randstate_t rands;
   struct rsa_public_key pub;
   struct rsa_private_key key;
@@ -186,27 +152,7 @@ test_main (void)
   mpz_init (plaintext);
 
   gmp_randinit_default (rands);
-
-#if !NETTLE_USE_MINI_GMP
-  nettle_test_seed = getenv ("NETTLE_TEST_SEED");
-  if (nettle_test_seed && *nettle_test_seed)
-    {
-      mpz_t seed;
-      mpz_init (seed);
-      if (mpz_set_str (seed, nettle_test_seed, 0) < 0
-         || mpz_sgn (seed) < 0)
-       die ("Invalid NETTLE_TEST_SEED: %s\n",
-            nettle_test_seed);
-      if (mpz_sgn (seed) == 0)
-       get_random_seed (seed);
-      fprintf (stderr, "Using NETTLE_TEST_SEED=");
-      mpz_out_str (stderr, 10, seed);
-      fprintf (stderr, "\n");
-
-      gmp_randseed (rands, seed);
-      mpz_clear (seed);
-    }
-#endif
+  test_randomize(rands);
 
   for (j = 0; j < KEY_COUNT; j++)
     {
index 626c13fcc6b3ed3310a9e0adbf53e08c78964692..ef67c53ee905ea21596cd8404a0caa09cd0b09c7 100644 (file)
@@ -11,7 +11,9 @@
 #include "nettle-internal.h"
 
 #include <assert.h>
+#include <errno.h>
 #include <ctype.h>
+#include <sys/time.h>
 
 void
 die(const char *format, ...)
@@ -1107,7 +1109,63 @@ mpz_urandomb (mpz_t r, struct knuth_lfib_ctx *ctx, mp_bitcnt_t bits)
   nettle_mpz_set_str_256_u (r, bytes, buf);
   free (buf);
 }
-#endif /* NETTLE_USE_MINI_GMP */
+#else /* !NETTLE_USE_MINI_GMP */
+static void
+get_random_seed(mpz_t seed)
+{
+  struct timeval tv;
+  FILE *f;
+  f = fopen ("/dev/urandom", "rb");
+  if (f)
+    {
+      uint8_t buf[8];
+      size_t res;
+
+      setbuf (f, NULL);
+      res = fread (&buf, sizeof(buf), 1, f);
+      fclose(f);
+      if (res == 1)
+       {
+         nettle_mpz_set_str_256_u (seed, sizeof(buf), buf);
+         return;
+       }
+      fprintf (stderr, "Read of /dev/urandom failed: %s\n",
+              strerror (errno));
+    }
+  gettimeofday(&tv, NULL);
+  mpz_set_ui (seed, tv.tv_sec);
+  mpz_mul_ui (seed, seed, 1000000UL);
+  mpz_add_ui (seed, seed, tv.tv_usec);
+}
+
+int
+test_randomize(gmp_randstate_t rands)
+{
+  const char *nettle_test_seed;
+
+  nettle_test_seed = getenv ("NETTLE_TEST_SEED");
+  if (nettle_test_seed && *nettle_test_seed)
+    {
+      mpz_t seed;
+      mpz_init (seed);
+      if (mpz_set_str (seed, nettle_test_seed, 0) < 0
+         || mpz_sgn (seed) < 0)
+       die ("Invalid NETTLE_TEST_SEED: %s\n",
+            nettle_test_seed);
+      if (mpz_sgn (seed) == 0)
+       get_random_seed (seed);
+      fprintf (stderr, "Using NETTLE_TEST_SEED=");
+      mpz_out_str (stderr, 10, seed);
+      fprintf (stderr, "\n");
+
+      gmp_randseed (rands, seed);
+      mpz_clear (seed);
+      return 1;
+    }
+  else 
+    return 0;
+}
+#endif /* !NETTLE_USE_MINI_GMP */
 
 mp_limb_t *
 xalloc_limbs (mp_size_t n)
index 0dc235c6c28fa53c272d72f0bd2ac1c5fd3da950..b220dde174508ae02cd1e05938ba46d596ed6bed 100644 (file)
@@ -163,8 +163,12 @@ void gmp_randinit_default (struct knuth_lfib_ctx *ctx);
 void mpz_urandomb (mpz_t r, struct knuth_lfib_ctx *ctx, mp_bitcnt_t bits);
 /* This is cheating */
 #define mpz_rrandomb mpz_urandomb
+#define test_randomize(rands) 0
+#else /* !NETTLE_USE_MINI_GMP */
+int
+test_randomize(gmp_randstate_t rands);
 
-#endif /* NETTLE_USE_MINI_GMP */
+#endif /* !NETTLE_USE_MINI_GMP */
 
 void
 mpn_out_str (FILE *f, int base, const mp_limb_t *xp, mp_size_t xn);