Implement FIPS 186-2 key generation.
[libgcrypt.git] / src / g10lib.h
index 0d0aea6..9faa26d 100644 (file)
 #define GCC_ATTR_NORETURN 
 #endif
 
+#if __GNUC__ >= 3 
+/* According to glibc this attribute is available since 2.8 however we
+   better play safe and use it only with gcc 3 or newer. */
+#define GCC_ATTR_FORMAT_ARG(a)  __attribute__ ((format_arg (a)))
+#else
+#define GCC_ATTR_FORMAT_ARG(a)  
+#endif
+
+
 /* Gettext macros.  */
 
 #define _(a)  _gcry_gettext(a)
@@ -92,7 +101,7 @@ void _gcry_bug (const char *file, int line);
 void _gcry_assert_failed (const char *expr, const char *file, int line);
 #endif
 
-const char *_gcry_gettext (const char *key);
+const char *_gcry_gettext (const char *key) GCC_ATTR_FORMAT_ARG(1);
 void _gcry_fatal_error(int rc, const char *text ) JNLIB_GCC_A_NR;
 void _gcry_log( int level, const char *fmt, ... ) JNLIB_GCC_A_PRINTF(2,3);
 void _gcry_log_bug( const char *fmt, ... )   JNLIB_GCC_A_NR_PRINTF(1,2);
@@ -166,6 +175,16 @@ gcry_mpi_t _gcry_generate_public_prime (unsigned int nbits,
 gcry_mpi_t _gcry_generate_elg_prime (int mode, 
                                      unsigned int pbits, unsigned int qbits,
                                      gcry_mpi_t g, gcry_mpi_t **factors);
+gcry_mpi_t _gcry_derive_x931_prime (const gcry_mpi_t xp, 
+                                    const gcry_mpi_t xp1, const gcry_mpi_t xp2,
+                                    const gcry_mpi_t e,
+                                    gcry_mpi_t *r_p1, gcry_mpi_t *r_p2);
+gpg_err_code_t _gcry_generate_fips186_2_prime
+                 (unsigned int pbits, unsigned int qbits,
+                  const void *seed, size_t seedlen,
+                  gcry_mpi_t *r_q, gcry_mpi_t *r_p,
+                  int *r_counter,
+                  void **r_seed, size_t *r_seedlen);
 
 
 /* replacements of missing functions (missing-string.c)*/
@@ -293,6 +312,12 @@ void _gcry_initialize_fips_mode (int force);
 int _gcry_fips_mode (void);
 #define fips_mode() _gcry_fips_mode ()
 
+int _gcry_enforced_fips_mode (void);
+
+void _gcry_inactivate_fips_mode (const char *text);
+int _gcry_is_fips_mode_inactive (void);
+
+
 void _gcry_fips_signal_error (const char *srcfile, 
                               int srcline, 
                               const char *srcfunc,