]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
libtls: call create_public_enumerator() with key_type
authorAndreas Steffen <andreas.steffen@strongswan.org>
Wed, 24 Aug 2022 10:01:51 +0000 (12:01 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 26 Aug 2022 10:17:22 +0000 (12:17 +0200)
src/libtls/tls_server.c

index 97c4c40daf764048445071bbfa885defb18456fd..f1119884cf85f7c5febbaa82ba7c62739225a097 100644 (file)
@@ -176,14 +176,21 @@ public_key_t *tls_find_public_key(auth_cfg_t *peer_auth, identification_t *id)
 {
        public_key_t *public = NULL, *current;
        certificate_t *cert, *found;
+       key_type_t key_type = KEY_ANY;
        enumerator_t *enumerator;
        auth_cfg_t *auth;
 
        cert = peer_auth->get(peer_auth, AUTH_HELPER_SUBJECT_CERT);
        if (cert)
        {
+               public = cert->get_public_key(cert);
+               if (public)
+               {
+                       key_type = public->get_type(public);
+                       public->destroy(public);
+               }
                enumerator = lib->credmgr->create_public_enumerator(lib->credmgr,
-                                                                                               KEY_ANY, id, peer_auth, TRUE);
+                                                                                       key_type, id, peer_auth, TRUE);
                while (enumerator->enumerate(enumerator, &current, &auth))
                {
                        found = auth->get(auth, AUTH_RULE_SUBJECT_CERT);