diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function
index ed6cbf0..896eebb 100644
--- a/tests/suites/test_suite_rsa.function
+++ b/tests/suites/test_suite_rsa.function
@@ -8,6 +8,14 @@
 #include <polarssl/sha2.h>
 #include <polarssl/sha4.h>
 #include <polarssl/havege.h>
+
+static int myrand( void *rng_state )
+{
+    if( rng_state != NULL )
+        rng_state  = NULL;
+
+    return( rand() );
+}
 END_HEADER
 
 BEGIN_CASE
@@ -22,7 +30,7 @@
     int msg_len;
 
     mpi_init( &P1, &Q1, &H, &G, NULL );
-    rsa_init( &ctx, {padding_mode}, 0, NULL, NULL );
+    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
 
     memset( message_str, 0x00, 1000 );
     memset( hash_result, 0x00, 1000 );
@@ -107,7 +115,7 @@
     rsa_context ctx;
     int msg_len;
 
-    rsa_init( &ctx, {padding_mode}, 0, NULL, NULL );
+    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
     memset( message_str, 0x00, 1000 );
     memset( hash_result, 0x00, 1000 );
     memset( result_str, 0x00, 1000 );
@@ -178,7 +186,7 @@
     int msg_len, hash_len;
 
     mpi_init( &P1, &Q1, &H, &G, NULL );
-    rsa_init( &ctx, {padding_mode}, 0, NULL, NULL );
+    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
 
     memset( message_str, 0x00, 1000 );
     memset( hash_result, 0x00, 1000 );
@@ -222,7 +230,7 @@
     rsa_context ctx;
     int msg_len, hash_len;
 
-    rsa_init( &ctx, {padding_mode}, 0, NULL, NULL );
+    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
     memset( message_str, 0x00, 1000 );
     memset( hash_result, 0x00, 1000 );
     memset( result_str, 0x00, 1000 );
@@ -250,7 +258,7 @@
     rsa_context ctx;
     int msg_len;
 
-    rsa_init( &ctx, {padding_mode}, 0, NULL, NULL );
+    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
     memset( message_str, 0x00, 1000 );
     memset( output, 0x00, 1000 );
     memset( output_str, 0x00, 1000 );
@@ -284,7 +292,7 @@
     int output_len;
 
     mpi_init( &P1, &Q1, &H, &G, NULL );
-    rsa_init( &ctx, {padding_mode}, 0, NULL, NULL );
+    rsa_init( &ctx, {padding_mode}, 0, &myrand, NULL );
 
     memset( message_str, 0x00, 1000 );
     memset( output, 0x00, 1000 );
@@ -328,7 +336,7 @@
     unsigned char output_str[1000];
     rsa_context ctx;
 
-    rsa_init( &ctx, RSA_PKCS_V15, 0, NULL, NULL );
+    rsa_init( &ctx, RSA_PKCS_V15, 0, &myrand, NULL );
     memset( message_str, 0x00, 1000 );
     memset( output, 0x00, 1000 );
     memset( output_str, 0x00, 1000 );
@@ -361,7 +369,7 @@
     mpi P1, Q1, H, G;
 
     mpi_init( &P1, &Q1, &H, &G, NULL );
-    rsa_init( &ctx, RSA_PKCS_V15, 0, NULL, NULL );
+    rsa_init( &ctx, RSA_PKCS_V15, 0, &myrand, NULL );
 
     memset( message_str, 0x00, 1000 );
     memset( output, 0x00, 1000 );
@@ -411,7 +419,7 @@
 {
     rsa_context ctx;
 
-    rsa_init( &ctx, RSA_PKCS_V15, 0, NULL, NULL );
+    rsa_init( &ctx, RSA_PKCS_V15, 0, &myrand, NULL );
 
     if( strlen( {input_N} ) )
     {
@@ -431,7 +439,7 @@
 {
     rsa_context ctx;
 
-    rsa_init( &ctx, RSA_PKCS_V15, 0, NULL, NULL );
+    rsa_init( &ctx, RSA_PKCS_V15, 0, &myrand, NULL );
 
     ctx.len = {mod} / 8;
     if( strlen( {input_P} ) )
