2003-09-02 Moritz Schulte <mo@g10code.com>
authorMoritz Schulte <mo@g10code.com>
Tue, 2 Sep 2003 00:44:20 +0000 (00:44 +0000)
committerMoritz Schulte <mo@g10code.com>
Tue, 2 Sep 2003 00:44:20 +0000 (00:44 +0000)
* gcrypt.h (GCRY_PRIME_FLAG_SPECIAL_FACTOR): New symbol.

2003-09-01  Moritz Schulte  <mo@g10code.com>

* gcrypt.h (gcry_random_level_t): New type.
(gcry_prime_check_func_t): Likewise.
(GCRY_PRIME_FLAG_SECRET): New symbol.
(gcry_prime_generate, gcry_prime_check): Declare functions.

src/ChangeLog
src/gcrypt.h

index 3f972c5..4a67b64 100644 (file)
@@ -1,3 +1,14 @@
+2003-09-02  Moritz Schulte  <mo@g10code.com>
+
+       * gcrypt.h (GCRY_PRIME_FLAG_SPECIAL_FACTOR): New symbol.
+
+2003-09-01  Moritz Schulte  <mo@g10code.com>
+
+       * gcrypt.h (gcry_random_level_t): New type.
+       (gcry_prime_check_func_t): Likewise.
+       (GCRY_PRIME_FLAG_SECRET): New symbol.
+       (gcry_prime_generate, gcry_prime_check): Declare functions.
+
 2003-08-28  Werner Koch  <wk@gnupg.org>
 
        * Makefile.am (libgcrypt_pth_la_LDFLAGS): Removed PTH_CFLAGS cruft.
index b3f8d3f..5db199c 100644 (file)
@@ -1163,13 +1163,13 @@ gcry_error_t gcry_md_list (int *list, int *list_length);
    to use WEAK for random number which don't need to be
    cryptographically strong, STRONG for session keys and VERY_STRONG
    for key material. */
-enum gcry_random_level
+typedef enum gcry_random_level
   {
     GCRY_WEAK_RANDOM = 0,
     GCRY_STRONG_RANDOM = 1,
     GCRY_VERY_STRONG_RANDOM = 2
-  };
-
+  }
+gcry_random_level_t;
 
 /* Fill BUFFER with LENGTH bytes of random, using random numbers of
    quality LEVEL. */
@@ -1199,6 +1199,38 @@ void *gcry_random_bytes_secure (size_t nbytes, enum gcry_random_level level)
 void gcry_mpi_randomize (gcry_mpi_t w,
                          unsigned int nbits, enum gcry_random_level level);
 
+/* Prime interface.  */
+
+typedef int (*gcry_prime_check_func_t) (void *arg, int reserved,
+                                       gcry_mpi_t candidate);
+
+/* Flags for gcry_prime_generate():  */
+
+/* Allocate prime numbers and factors in secure memory.  */
+#define GCRY_PRIME_FLAG_SECRET         (1 << 0)
+
+/* Make sure that at least one prime factor is of size
+   `FACTOR_BITS'.  */
+#define GCRY_PRIME_FLAG_SPECIAL_FACTOR (1 << 1)
+
+/* Generate a new prime number of PRIME_BITS bits and store it in
+   PRIME.  If FACTOR_BITS is non-zero, one of the prime factors of
+   (prime - 1) / 2 must be FACTOR_BITS bits long.  If FACTORS is
+   non-zero, allocate a new, NULL-terminated array holding the prime
+   factors and store it in FACTORS.  FLAGS might be used to influence
+   the prime number generation process.  */
+gcry_error_t gcry_prime_generate (gcry_mpi_t *prime,
+                                 unsigned int prime_bits,
+                                 unsigned int factor_bits,
+                                 gcry_mpi_t **factors,
+                                 gcry_prime_check_func_t cb_func,
+                                 void *cb_arg,
+                                 gcry_random_level_t random_level,
+                                 unsigned int flags);
+
+/* Check wether the number X is prime.  */
+gcry_error_t gcry_prime_check (gcry_mpi_t x, unsigned int flags);
+
 
 \f
 /************************************