Allow RSA-PSS also in EVP_PKEY_assign() and EVP_PKEY_can_sign()
authorIngo Franzki <ifranzki@linux.ibm.com>
Wed, 23 Aug 2023 13:08:51 +0000 (15:08 +0200)
committerTomas Mraz <tomas@openssl.org>
Thu, 24 Aug 2023 16:07:08 +0000 (18:07 +0200)
Treat keys with EVP_PKEY_RSA_PSS the same as EVP_PKEY_RSA in EVP_PKEY_can_sign()
and detect_foreign_key() which is called by EVP_PKEY_assign().

Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21819)

crypto/evp/p_lib.c

index 0fab07c5dacf1fb2c7a3464e83f55ca345afb687..0fce412c372d5b124fee4cf4c2dd4066f544d7e4 100644 (file)
@@ -717,6 +717,7 @@ static void detect_foreign_key(EVP_PKEY *pkey)
 {
     switch (pkey->type) {
     case EVP_PKEY_RSA:
+    case EVP_PKEY_RSA_PSS:
         pkey->foreign = pkey->pkey.rsa != NULL
                         && ossl_rsa_is_foreign(pkey->pkey.rsa);
         break;
@@ -1075,6 +1076,7 @@ int EVP_PKEY_can_sign(const EVP_PKEY *pkey)
     if (pkey->keymgmt == NULL) {
         switch (EVP_PKEY_get_base_id(pkey)) {
         case EVP_PKEY_RSA:
+        case EVP_PKEY_RSA_PSS:
             return 1;
 # ifndef OPENSSL_NO_DSA
         case EVP_PKEY_DSA: