- 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 );
}
}