- 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/ssl_srv.c b/library/ssl_srv.c
index 2175523..57de3b1 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -359,7 +359,7 @@
 static int ssl_write_server_hello( ssl_context *ssl )
 {
     time_t t;
-    int ret, i, n;
+    int ret, n;
     unsigned char *buf, *p;
 
     SSL_DEBUG_MSG( 2, ( "=> write server hello" ) );
@@ -388,8 +388,10 @@
 
     SSL_DEBUG_MSG( 3, ( "server hello, current time: %lu", t ) );
 
-    for( i = 28; i > 0; i-- )
-        *p++ = (unsigned char) ssl->f_rng( ssl->p_rng );
+    if( ( ret = ssl->f_rng( ssl->p_rng, p, 28 ) ) != 0 )
+        return( ret );
+
+    p += 28;
 
     memcpy( ssl->randbytes + 32, buf + 6, 32 );
 
@@ -413,9 +415,8 @@
         ssl->resume = 0;
         ssl->state++;
 
-        for( i = 0; i < n; i++ )
-            ssl->session->id[i] =
-                (unsigned char) ssl->f_rng( ssl->p_rng );
+        if( ( ret = ssl->f_rng( ssl->p_rng, ssl->session->id, n ) ) != 0 )
+            return( ret );
     }
     else
     {
@@ -823,8 +824,9 @@
              */
             ssl->pmslen = 48;
 
-            for( i = 0; i < ssl->pmslen; i++ )
-                ssl->premaster[i] = (unsigned char) ssl->f_rng( ssl->p_rng );
+            ret = ssl->f_rng( ssl->p_rng, ssl->premaster, ssl->pmslen );
+            if( ret != 0 )
+                return( ret );
         }
     }