This is an automated email from the ASF dual-hosted git repository.

dsoumis pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 7df07b0b6a61432bf64a0738afbbf6244b670d6c
Author: Dimitris Soumis <[email protected]>
AuthorDate: Thu Oct 29 14:51:29 2026 +0200

    Reuse SSLHostConfigCertificate.chooseServerAlias in the OpenSSL contexts
---
 .../tomcat/util/net/openssl/OpenSSLContext.java    | 32 ++--------------------
 .../util/net/openssl/panama/OpenSSLContext.java    | 31 ++-------------------
 2 files changed, 4 insertions(+), 59 deletions(-)

diff --git a/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java 
b/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java
index 2efcec9c2e..085809b221 100644
--- a/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java
+++ b/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java
@@ -30,9 +30,7 @@ import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Base64;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
@@ -634,7 +632,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             }
             X509Certificate[] chain = 
x509KeyManager.getCertificateChain(alias);
             if (chain == null) {
-                alias = findAlias(x509KeyManager, certificate);
+                alias = certificate.chooseServerAlias(x509KeyManager);
                 chain = x509KeyManager.getCertificateChain(alias);
             }
             PrivateKey key = x509KeyManager.getPrivateKey(alias);
@@ -670,32 +668,6 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
     }
 
 
-    /*
-     * Find a valid alias when none was specified in the config.
-     */
-    private static String findAlias(X509KeyManager keyManager, 
SSLHostConfigCertificate certificate) {
-
-        Type type = certificate.getType();
-        String result = null;
-
-        List<Type> candidateTypes = new ArrayList<>();
-        if (Type.UNDEFINED.equals(type)) {
-            // Try all types to find a suitable alias
-            candidateTypes.addAll(Arrays.asList(Type.values()));
-            candidateTypes.remove(Type.UNDEFINED);
-        } else {
-            // Look for the specific type to find a suitable alias
-            candidateTypes.add(type);
-        }
-
-        Iterator<Type> iter = candidateTypes.iterator();
-        while (result == null && iter.hasNext()) {
-            result = keyManager.chooseServerAlias(iter.next().getKeyType(), 
null, null);
-        }
-
-        return result;
-    }
-
     private static X509TrustManager chooseTrustManager(TrustManager[] 
managers) {
         for (TrustManager m : managers) {
             if (m instanceof X509TrustManager) {
@@ -752,7 +724,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             }
             chain = x509KeyManager.getCertificateChain(alias);
             if (chain == null) {
-                alias = findAlias(x509KeyManager, certificate);
+                alias = certificate.chooseServerAlias(x509KeyManager);
                 chain = x509KeyManager.getCertificateChain(alias);
             }
         }
diff --git a/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java 
b/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
index 06fab40470..264549ced5 100644
--- a/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
+++ b/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
@@ -30,7 +30,6 @@ import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -1206,7 +1205,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             }
             X509Certificate[] chain = 
x509KeyManager.getCertificateChain(alias);
             if (chain == null) {
-                alias = findAlias(x509KeyManager, certificate);
+                alias = certificate.chooseServerAlias(x509KeyManager);
                 chain = x509KeyManager.getCertificateChain(alias);
             }
             // Convert the in-memory key manager entry to native objects with
@@ -1321,32 +1320,6 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
     }
 
 
-    /*
-     * Find a valid alias when none was specified in the config.
-     */
-    private static String findAlias(X509KeyManager keyManager, 
SSLHostConfigCertificate certificate) {
-
-        Type type = certificate.getType();
-        String result = null;
-
-        List<Type> candidateTypes = new ArrayList<>();
-        if (Type.UNDEFINED.equals(type)) {
-            // Try all types to find a suitable alias
-            candidateTypes.addAll(Arrays.asList(Type.values()));
-            candidateTypes.remove(Type.UNDEFINED);
-        } else {
-            // Look for the specific type to find a suitable alias
-            candidateTypes.add(type);
-        }
-
-        Iterator<Type> iter = candidateTypes.iterator();
-        while (result == null && iter.hasNext()) {
-            result = keyManager.chooseServerAlias(iter.next().getKeyType(), 
null, null);
-        }
-
-        return result;
-    }
-
     private static X509TrustManager chooseTrustManager(TrustManager[] 
managers) {
         for (TrustManager m : managers) {
             if (m instanceof X509TrustManager) {
@@ -1414,7 +1387,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             }
             chain = x509KeyManager.getCertificateChain(alias);
             if (chain == null) {
-                alias = findAlias(x509KeyManager, certificate);
+                alias = certificate.chooseServerAlias(x509KeyManager);
                 chain = x509KeyManager.getCertificateChain(alias);
             }
         } else {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to