summaryrefslogtreecommitdiff
path: root/tests/prime.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2003-10-10 14:17:21 +0000
committerWerner Koch <wk@gnupg.org>2003-10-10 14:17:21 +0000
commit5a6f5f2881b615845f1f660c98561d209313efab (patch)
treebcf32fe34fc33baf491205df4a104904ed1ec825 /tests/prime.c
parentecdc47fd753bed8fb3f8f3c29a481d1d5fbb82b6 (diff)
downloadlibgcrypt-5a6f5f2881b615845f1f660c98561d209313efab.tar.gz
* primegen.c (gen_prime): Bail out if NBITS is less than 16.
(prime_generate_internal): Initialize prime variable to suppress compiler warning. Check pbits, initialize qbits when passed as zero. * primegen.c (prime_generate_internal): New arg ALL_FACTORS. Changed all callers. (gcry_prime_generate): Make the factors arg optional. Request all_factors. (gcry_prime_group_generator): New. (gcry_prime_release_factors): New. * global.c (_gcry_malloc): Handle the no_secure_memory option. * gcrypt.h (gcry_prime_group_generator): New. (gcry_prime_release_factors): New. * prime.c (check_primes): Generate a generator and avoid printing unless in verbose mode.
Diffstat (limited to 'tests/prime.c')
-rw-r--r--tests/prime.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/tests/prime.c b/tests/prime.c
index aa101491..625c1537 100644
--- a/tests/prime.c
+++ b/tests/prime.c
@@ -23,7 +23,7 @@
#include "../src/gcrypt.h"
-static int verbose, debug;
+static int verbose;
static void
die (const char *format, ...)
@@ -42,6 +42,7 @@ check_primes (void)
gcry_error_t err = GPG_ERR_NO_ERROR;
gcry_mpi_t *factors = NULL;
gcry_mpi_t prime = NULL;
+ gcry_mpi_t g;
unsigned int i = 0;
struct prime_spec
{
@@ -51,6 +52,7 @@ check_primes (void)
} prime_specs[] =
{
{ 1024, 100, GCRY_PRIME_FLAG_SPECIAL_FACTOR },
+ { 128, 0, 0 },
{ 0 },
};
@@ -64,11 +66,29 @@ check_primes (void)
GCRY_WEAK_RANDOM,
prime_specs[i].flags);
assert (! err);
- printf ("%i: ", i);
- gcry_mpi_dump (prime);
- putchar ('\n');
+ if (verbose)
+ {
+ fprintf (stderr, "test %d: p = ", i);
+ gcry_mpi_dump (prime);
+ putc ('\n', stderr);
+ }
+
err = gcry_prime_check (prime, 0);
assert (! err);
+
+ err = gcry_prime_group_generator (&g, prime, factors, NULL);
+ assert (!err);
+ gcry_prime_release_factors (factors); factors = NULL;
+
+ if (verbose)
+ {
+ fprintf (stderr, " %d: g = ", i);
+ gcry_mpi_dump (g);
+ putc ('\n', stderr);
+ }
+ gcry_mpi_release (g);
+
+
gcry_mpi_add_ui (prime, prime, 1);
err = gcry_prime_check (prime, 0);
assert (err);
@@ -85,10 +105,10 @@ main (int argc, char **argv)
else if ((argc > 1) && (! strcmp (argv[1], "--debug")))
verbose = debug = 1;
+ gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
if (! gcry_check_version (GCRYPT_VERSION))
die ("version mismatch\n");
- gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
if (debug)
gcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u, 0);