Avoid creating invalid rsa pss params
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Sun, 31 Mar 2019 11:56:23 +0000 (13:56 +0200)
committerBernd Edlinger <bernd.edlinger@hotmail.de>
Wed, 10 Apr 2019 18:21:57 +0000 (20:21 +0200)
Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/8621)

crypto/rsa/rsa_ameth.c
test/recipes/80-test_cms.t

index 139415e60edb41bb83cd7931eaedb86d9abc82a8..82d1d56d0a19e0eeec9e76c401a4a8bc29bc4a73 100644 (file)
@@ -583,10 +583,12 @@ static RSA_PSS_PARAMS *rsa_ctx_to_pss(EVP_PKEY_CTX *pkctx)
         return NULL;
     if (saltlen == -1) {
         saltlen = EVP_MD_size(sigmd);
-    } else if (saltlen == -2) {
+    } else if (saltlen == -2 || saltlen == -3) {
         saltlen = EVP_PKEY_size(pk) - EVP_MD_size(sigmd) - 2;
         if ((EVP_PKEY_bits(pk) & 0x7) == 1)
             saltlen--;
+        if (saltlen < 0)
+            return NULL;
     }
 
     return rsa_pss_params_create(sigmd, mgf1md, saltlen);
index 76f1ec20afe6273ed2b6e843183f70b4def4db3b..7beebcc067569eb34d74091d759f432a01a970b0 100644 (file)
@@ -324,6 +324,14 @@ my @smime_cms_param_tests = (
        "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
     ],
 
+    [ "signed content test streaming PEM format, RSA keys, PSS signature, saltlen=-3",
+      [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
+       "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
+       "-keyopt", "rsa_pss_saltlen:-3", "-out", "test.cms" ],
+      [ "-verify", "-in", "test.cms", "-inform", "PEM",
+       "-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
+    ],
+
     [ "signed content test streaming PEM format, RSA keys, PSS signature, no attributes",
       [ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", "-noattr",
        "-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",