- Changed the used random function pointer to more flexible format. Renamed havege_rand() to havege_random() to prevent mistakes. Lots of changes as a consequence in library code and programs

diff --git a/library/bignum.c b/library/bignum.c
index 36e78e1..6591b5b 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -1608,18 +1608,16 @@
     return( ret );
 }
 
-int mpi_fill_random( mpi *X, size_t size, int (*f_rng)(void *), void *p_rng )
+int mpi_fill_random( mpi *X, size_t size,
+                     int (*f_rng)(void *, unsigned char *, size_t),
+                     void *p_rng )
 {
     int ret;
-    size_t k;
-    unsigned char *p;
 
     MPI_CHK( mpi_grow( X, size ) );
     MPI_CHK( mpi_lset( X, 0 ) );
 
-    p = (unsigned char *) X->p;
-    for( k = 0; k < X->n * ciL; k++ )
-        *p++ = (unsigned char) f_rng( p_rng );
+    MPI_CHK( f_rng( p_rng, (unsigned char *) X->p, X->n * ciL ) );
 
 cleanup:
     return( ret );
@@ -1750,7 +1748,9 @@
 /*
  * Miller-Rabin primality test  (HAC 4.24)
  */
-int mpi_is_prime( mpi *X, int (*f_rng)(void *), void *p_rng )
+int mpi_is_prime( mpi *X,
+                  int (*f_rng)(void *, unsigned char *, size_t),
+                  void *p_rng )
 {
     int ret, xs;
     size_t i, j, n, s;
@@ -1809,7 +1809,7 @@
         /*
          * pick a random A, 1 < A < |X| - 1
          */
-        mpi_fill_random( &A, X->n, f_rng, p_rng );
+        MPI_CHK( mpi_fill_random( &A, X->n, f_rng, p_rng ) );
 
         if( mpi_cmp_mpi( &A, &W ) >= 0 )
         {
@@ -1867,7 +1867,8 @@
  * Prime number generation
  */
 int mpi_gen_prime( mpi *X, size_t nbits, int dh_flag,
-                   int (*f_rng)(void *), void *p_rng )
+                   int (*f_rng)(void *, unsigned char *, size_t),
+                   void *p_rng )
 {
     int ret;
     size_t k, n;
@@ -1880,7 +1881,7 @@
 
     n = BITS_TO_LIMBS( nbits );
 
-    mpi_fill_random( X, n, f_rng, p_rng );
+    MPI_CHK( mpi_fill_random( X, n, f_rng, p_rng ) );
 
     k = mpi_msb( X );
     if( k < nbits ) MPI_CHK( mpi_shift_l( X, nbits - k ) );