summaryrefslogtreecommitdiff
path: root/cipher/primegen.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2001-12-18 15:29:02 +0000
committerWerner Koch <wk@gnupg.org>2001-12-18 15:29:02 +0000
commit4d7c31417d7d49d839dad9016a0696a264229c3e (patch)
tree69c648f59a17d36e4ca7a6f8436d032a11b165df /cipher/primegen.c
parent83e80feb6eabecbca0327e4cee1e710c01f95de4 (diff)
downloadlibgcrypt-4d7c31417d7d49d839dad9016a0696a264229c3e.tar.gz
* rsa.c (generate): Loop until we find the exact modulus size.
Changed the exponent to 41. (rsa_get_info): s/usage/r_usage/ to avoid shadow warnings. * primegen.c (gen_prime): Set 2 high order bits for secret primes. * Makefile.am (DISTCLEANFILES): Include construct.c.
Diffstat (limited to 'cipher/primegen.c')
-rw-r--r--cipher/primegen.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/cipher/primegen.c b/cipher/primegen.c
index 9489f0e8..e131e33a 100644
--- a/cipher/primegen.c
+++ b/cipher/primegen.c
@@ -257,7 +257,9 @@ _gcry_generate_elg_prime( int mode, unsigned pbits, unsigned qbits,
if( DBG_CIPHER ) {
log_debug("checking g: ");
/*mpi_print( stderr, g, 1 );*/
- #warning we need an internal mpi_print for debugging
+#if __GNUC__ >= 2
+# warning we need an internal mpi_print for debugging
+#endif
}
else
progress('^');
@@ -323,9 +325,14 @@ gen_prime( unsigned nbits, int secret, int randomlevel )
/* generate a random number */
gcry_mpi_randomize( prime, nbits, randomlevel );
- /* set high order bit to 1, set low order bit to 1 */
- mpi_set_highbit( prime, nbits-1 );
- mpi_set_bit( prime, 0 );
+ /* set high order bit to 1, set low order bit to 1. If we are
+ generating a secret prime we are most probably doing that
+ for RSA, to make sure that the modulus does have the
+ requested keysize we set the 2 high order bits */
+ mpi_set_highbit (prime, nbits-1);
+ if (secret)
+ mpi_set_highbit (prime, nbits-2);
+ mpi_set_bit(prime, 0);
/* calculate all remainders */
for(i=0; (x = small_prime_numbers[i]); i++ )