(gcry_mpi_randomize): Use gcry_create_nonce if WEAK V1-1-91
authorWerner Koch <wk@gnupg.org>
Fri, 19 Dec 2003 10:30:48 +0000 (10:30 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 19 Dec 2003 10:30:48 +0000 (10:30 +0000)
random has been requested.

mpi/ChangeLog
mpi/mpiutil.c

index 3f5ac81..3037538 100644 (file)
@@ -1,3 +1,8 @@
+2003-12-19  Werner Koch  <wk@gnupg.org>
+
+       * mpiutil.c (gcry_mpi_randomize): Use gcry_create_nonce if WEAK
+       random has been requested.
+
 2003-10-31  Werner Koch  <wk@gnupg.org>
 
        * i386/mpih-rshift.S, i386/mpih-lshift.S: Use %dl and not %edx for
index d04c35e..cfa0f6d 100644 (file)
@@ -366,11 +366,22 @@ void
 gcry_mpi_randomize( gcry_mpi_t w,
                    unsigned int nbits, enum gcry_random_level level )
 {
-    char *p = mpi_is_secure(w) ? gcry_random_bytes( (nbits+7)/8, level )
-                              : gcry_random_bytes_secure( (nbits+7)/8, level );
-#warning use gcry_create_nonce if the random level is WEAK
-    _gcry_mpi_set_buffer( w, p, (nbits+7)/8, 0 );
-    gcry_free(p);
+  char *p;
+  size_t nbytes = (nbits+7)/8;
+  
+  if (level == GCRY_WEAK_RANDOM)
+    {
+      p = mpi_is_secure(w) ? gcry_xmalloc (nbytes)
+                           : gcry_xmalloc_secure (nbytes);
+      gcry_create_nonce (p, nbytes);
+    }
+  else
+    {
+      p = mpi_is_secure(w) ? gcry_random_bytes (nbytes, level)
+                           : gcry_random_bytes_secure (nbytes, level);
+    }
+  _gcry_mpi_set_buffer( w, p, nbytes, 0 );
+  gcry_free (p);
 }