diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function
index 306cef1..9595e8a 100644
--- a/tests/suites/test_suite_rsa.function
+++ b/tests/suites/test_suite_rsa.function
@@ -38,7 +38,7 @@
     int msg_len;
 
     mpi_init( &P1, &Q1, &H, &G, NULL );
-    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
+    rsa_init( &ctx, {padding_mode}, 0 );
 
     memset( message_str, 0x00, 1000 );
     memset( hash_result, 0x00, 1000 );
@@ -123,7 +123,7 @@
     rsa_context ctx;
     int msg_len;
 
-    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
+    rsa_init( &ctx, {padding_mode}, 0 );
     memset( message_str, 0x00, 1000 );
     memset( hash_result, 0x00, 1000 );
     memset( result_str, 0x00, 1000 );
@@ -194,7 +194,7 @@
     int msg_len, hash_len;
 
     mpi_init( &P1, &Q1, &H, &G, NULL );
-    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
+    rsa_init( &ctx, {padding_mode}, 0 );
 
     memset( message_str, 0x00, 1000 );
     memset( hash_result, 0x00, 1000 );
@@ -238,7 +238,7 @@
     rsa_context ctx;
     int msg_len, hash_len;
 
-    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
+    rsa_init( &ctx, {padding_mode}, 0 );
     memset( message_str, 0x00, 1000 );
     memset( hash_result, 0x00, 1000 );
     memset( result_str, 0x00, 1000 );
@@ -266,7 +266,7 @@
     rsa_context ctx;
     int msg_len;
 
-    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
+    rsa_init( &ctx, {padding_mode}, 0 );
     memset( message_str, 0x00, 1000 );
     memset( output, 0x00, 1000 );
     memset( output_str, 0x00, 1000 );
@@ -279,7 +279,7 @@
 
     msg_len = unhexify( message_str, {message_hex_string} );
 
-    TEST_ASSERT( rsa_pkcs1_encrypt( &ctx, RSA_PUBLIC, msg_len, message_str, output ) == {result} );
+    TEST_ASSERT( rsa_pkcs1_encrypt( &ctx, &myrand, NULL, RSA_PUBLIC, msg_len, message_str, output ) == {result} );
     if( {result} == 0 )
     {
         hexify( output_str, output, ctx.len );
@@ -298,7 +298,7 @@
     rsa_context ctx;
     int msg_len;
 
-    rsa_init( &ctx, {padding_mode}, 0, &badrand, NULL );
+    rsa_init( &ctx, {padding_mode}, 0 );
     memset( message_str, 0x00, 1000 );
     memset( output, 0x00, 1000 );
     memset( output_str, 0x00, 1000 );
@@ -311,7 +311,7 @@
 
     msg_len = unhexify( message_str, {message_hex_string} );
 
-    TEST_ASSERT( rsa_pkcs1_encrypt( &ctx, RSA_PUBLIC, msg_len, message_str, output ) == {result} );
+    TEST_ASSERT( rsa_pkcs1_encrypt( &ctx, &badrand, NULL, RSA_PUBLIC, msg_len, message_str, output ) == {result} );
     if( {result} == 0 )
     {
         hexify( output_str, output, ctx.len );
@@ -332,7 +332,7 @@
     int output_len;
 
     mpi_init( &P1, &Q1, &H, &G, NULL );
-    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
+    rsa_init( &ctx, {padding_mode}, 0 );
 
     memset( message_str, 0x00, 1000 );
     memset( output, 0x00, 1000 );
@@ -376,7 +376,7 @@
     unsigned char output_str[1000];
     rsa_context ctx;
 
-    rsa_init( &ctx, RSA_PKCS_V15, 0, &myrand, NULL );
+    rsa_init( &ctx, RSA_PKCS_V15, 0 );
     memset( message_str, 0x00, 1000 );
     memset( output, 0x00, 1000 );
     memset( output_str, 0x00, 1000 );
@@ -409,7 +409,7 @@
     mpi P1, Q1, H, G;
 
     mpi_init( &P1, &Q1, &H, &G, NULL );
-    rsa_init( &ctx, RSA_PKCS_V15, 0, &myrand, NULL );
+    rsa_init( &ctx, RSA_PKCS_V15, 0 );
 
     memset( message_str, 0x00, 1000 );
     memset( output, 0x00, 1000 );
@@ -459,7 +459,7 @@
 {
     rsa_context ctx;
 
-    rsa_init( &ctx, RSA_PKCS_V15, 0, &myrand, NULL );
+    rsa_init( &ctx, RSA_PKCS_V15, 0 );
 
     if( strlen( {input_N} ) )
     {
@@ -479,7 +479,7 @@
 {
     rsa_context ctx;
 
-    rsa_init( &ctx, RSA_PKCS_V15, 0, &myrand, NULL );
+    rsa_init( &ctx, RSA_PKCS_V15, 0 );
 
     ctx.len = {mod} / 8;
     if( strlen( {input_P} ) )
@@ -514,9 +514,9 @@
     havege_state hs;
 
     havege_init( &hs );
-    rsa_init( &ctx, 0, 0, havege_rand, &hs );
+    rsa_init( &ctx, 0, 0 );
 
-    TEST_ASSERT( rsa_gen_key( &ctx, {nrbits}, {exponent} ) == {result} );
+    TEST_ASSERT( rsa_gen_key( &ctx, &havege_rand, &hs, {nrbits}, {exponent} ) == {result} );
     if( {result} == 0 )
     {
         TEST_ASSERT( rsa_check_privkey( &ctx ) == 0 );
