diff --git a/library/rsa.c b/library/rsa.c
index e789fff..a51d4f7 100644
--- a/library/rsa.c
+++ b/library/rsa.c
@@ -701,6 +701,14 @@
 #define RSA_PT  "\xAA\xBB\xCC\x03\x02\x01\x00\xFF\xFF\xFF\xFF\xFF" \
                 "\x11\x22\x33\x0A\x0B\x0C\xCC\xDD\xDD\xDD\xDD\xDD"
 
+static int myrand( void *rng_state )
+{
+    if( rng_state != NULL )
+        rng_state  = NULL;
+
+    return( rand() );
+}
+
 /*
  * Checkup routine
  */
@@ -713,7 +721,7 @@
     unsigned char rsa_decrypted[PT_LEN];
     unsigned char rsa_ciphertext[KEY_LEN];
 
-    memset( &rsa, 0, sizeof( rsa_context ) );
+    rsa_init( &rsa, RSA_PKCS_V15, 0, &myrand, NULL );
 
     rsa.len = KEY_LEN;
     mpi_read_string( &rsa.N , 16, RSA_N  );
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} ) )
