rsa/rsa_ossl.c: make RSAerr call in rsa_ossl_private_decrypt unconditional.
authorAndy Polyakov <appro@openssl.org>
Fri, 14 Sep 2018 10:17:43 +0000 (12:17 +0200)
committerMatt Caswell <matt@openssl.org>
Fri, 30 Nov 2018 12:51:58 +0000 (12:51 +0000)
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(cherry picked from commit 89072e0c2a483f2ad678e723e112712567b0ceb1)

crypto/rsa/rsa_ossl.c

index 09762b7d3340cd837e4cb999314522787f0395b3..465134257fcc7d5ecd8e9c5d0690a03bb40e4c0c 100644 (file)
@@ -10,6 +10,7 @@
 #include "internal/cryptlib.h"
 #include "internal/bn_int.h"
 #include "rsa_locl.h"
+#include "internal/constant_time_locl.h"
 
 static int rsa_ossl_public_encrypt(int flen, const unsigned char *from,
                                   unsigned char *to, RSA *rsa, int padding);
@@ -479,8 +480,8 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
         RSAerr(RSA_F_RSA_OSSL_PRIVATE_DECRYPT, RSA_R_UNKNOWN_PADDING_TYPE);
         goto err;
     }
-    if (r < 0)
-        RSAerr(RSA_F_RSA_OSSL_PRIVATE_DECRYPT, RSA_R_PADDING_CHECK_FAILED);
+    RSAerr(RSA_F_RSA_OSSL_PRIVATE_DECRYPT, RSA_R_PADDING_CHECK_FAILED);
+    err_clear_last_constant_time(r >= 0);
 
  err:
     if (ctx != NULL)