* 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.
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.
#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)
{
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;
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++)
{
#include "testutils.h"
#include <assert.h>
-#include <errno.h>
-#include <limits.h>
-#include <sys/time.h>
#include "rsa.h"
}
#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;
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++)
{
#include "nettle-internal.h"
#include <assert.h>
+#include <errno.h>
#include <ctype.h>
+#include <sys/time.h>
void
die(const char *format, ...)
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)
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);