diff --git a/library/rsa.c b/library/rsa.c
index 2cb3742..47884f9 100644
--- a/library/rsa.c
+++ b/library/rsa.c
@@ -265,13 +265,15 @@
     int ret;
     size_t olen;
     mpi T, T1, T2;
-    ((void) f_rng);
-    ((void) p_rng);
+    mpi A, X;
+
+    if( f_rng == NULL )
+        return( POLARSSL_ERR_RSA_BAD_INPUT_DATA );
 
     mpi_init( &T ); mpi_init( &T1 ); mpi_init( &T2 );
+    mpi_init( &A ); mpi_init( &X );
 
     MPI_CHK( mpi_read_binary( &T, input, ctx->len ) );
-
     if( mpi_cmp_mpi( &T, &ctx->N ) >= 0 )
     {
         mpi_free( &T );
@@ -282,6 +284,16 @@
     MPI_CHK( mpi_exp_mod( &T, &T, &ctx->D, &ctx->N, &ctx->RN ) );
 #else
     /*
+     * RSA Blinding
+     * A = rnd MPI
+     * T = A^E * T mod N
+     */
+    MPI_CHK( mpi_fill_random( &A, ctx->len - 1, f_rng, p_rng ) );
+    MPI_CHK( mpi_exp_mod( &X, &A, &ctx->E, &ctx->N, NULL ) );
+    MPI_CHK( mpi_mul_mpi( &X, &X, &T ) );
+    MPI_CHK( mpi_mod_mpi( &T, &X, &ctx->N ) );
+
+    /*
      * faster decryption using the CRT
      *
      * T1 = input ^ dP mod P
@@ -298,10 +310,18 @@
     MPI_CHK( mpi_mod_mpi( &T, &T1, &ctx->P ) );
 
     /*
-     * output = T2 + T * Q
+     * X = T2 + T * Q
      */
     MPI_CHK( mpi_mul_mpi( &T1, &T, &ctx->Q ) );
-    MPI_CHK( mpi_add_mpi( &T, &T2, &T1 ) );
+    MPI_CHK( mpi_add_mpi( &X, &T2, &T1 ) );
+
+    /*
+     * Unblind
+     * T = X / A mod N
+     */
+    MPI_CHK( mpi_inv_mod( &A, &A, &ctx->N ) );
+    MPI_CHK( mpi_mul_mpi( &T, &X, &A ) );
+    MPI_CHK( mpi_mod_mpi( &T, &T, &ctx->N ) );
 #endif
 
     olen = ctx->len;
@@ -310,6 +330,7 @@
 cleanup:
 
     mpi_free( &T ); mpi_free( &T1 ); mpi_free( &T2 );
+    mpi_free( &A ); mpi_free( &X );
 
     if( ret != 0 )
         return( POLARSSL_ERR_RSA_PRIVATE_FAILED + ret );
@@ -1410,7 +1431,7 @@
 
     sha1( rsa_plaintext, PT_LEN, sha1sum );
 
-    if( rsa_pkcs1_sign( &rsa, NULL, NULL, RSA_PRIVATE, POLARSSL_MD_SHA1, 0,
+    if( rsa_pkcs1_sign( &rsa, myrand, NULL, RSA_PRIVATE, POLARSSL_MD_SHA1, 0,
                         sha1sum, rsa_ciphertext ) != 0 )
     {
         if( verbose != 0 )
