]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
no-engine: fix signing with legacy app method based keys
authorMatthias St. Pierre <matthias.st.pierre@ncp-e.com>
Thu, 21 Sep 2023 14:43:43 +0000 (16:43 +0200)
committerTodd Short <todd.short@me.com>
Fri, 22 Sep 2023 19:07:49 +0000 (15:07 -0400)
Signing with an app method based key (i.e. an `EVP_PKEY` which wraps an
`RSA` key with an application defined `RSA_METHOD`) used to work in 1.1.1.
That feature was broken in commit 60488d2434, but later on fixed by @t8m
in commit b247113c05 (see #14859).

This commit corrects a  minor flaw of the fix, which affects only
`no-engine` builds: the special treatment for foreign keys is guarded
by an `OPENSSL_NO_ENGINE` check.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Todd Short <todd.short@me.com>
(Merged from https://github.com/openssl/openssl/pull/22163)

crypto/evp/pmeth_lib.c

index 6bd999407263295b45ca0007acd60f3fef32bdcb..268b1617e37993f98f857e7a8e320137babdcb5d 100644 (file)
@@ -247,10 +247,11 @@ static EVP_PKEY_CTX *int_ctx_new(OSSL_LIB_CTX *libctx,
      */
     if (e != NULL)
         pmeth = ENGINE_get_pkey_meth(e, id);
-    else if (pkey != NULL && pkey->foreign)
+    else
+# endif /* OPENSSL_NO_ENGINE */
+    if (pkey != NULL && pkey->foreign)
         pmeth = EVP_PKEY_meth_find(id);
     else
-# endif
         app_pmeth = pmeth = evp_pkey_meth_find_added_by_application(id);
 
     /* END legacy */