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

remm pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new 684498fe46 Cleanups
684498fe46 is described below

commit 684498fe46a9d27e6d2e03cd816220a050be733d
Author: remm <r...@apache.org>
AuthorDate: Thu Mar 13 21:13:49 2025 +0100

    Cleanups
---
 .../util/net/openssl/panama/OpenSSLContext.java    | 124 +++++++++------------
 .../util/net/openssl/panama/OpenSSLEngine.java     |  58 ++++------
 .../util/net/openssl/panama/OpenSSLLibrary.java    |   6 +-
 3 files changed, 75 insertions(+), 113 deletions(-)

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 2fa18d1e6d..96eddb04ff 100644
--- a/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
+++ b/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
@@ -67,6 +67,7 @@ import 
org.apache.tomcat.util.openssl.SSL_CTX_set_alpn_select_cb$cb;
 import org.apache.tomcat.util.openssl.SSL_CTX_set_cert_verify_callback$cb;
 import org.apache.tomcat.util.openssl.SSL_CTX_set_tmp_dh_callback$dh;
 import org.apache.tomcat.util.openssl.SSL_CTX_set_verify$callback;
+import org.apache.tomcat.util.openssl.openssl_h;
 import org.apache.tomcat.util.openssl.openssl_h_Compatibility;
 import org.apache.tomcat.util.openssl.pem_password_cb;
 import org.apache.tomcat.util.res.StringManager;
@@ -86,7 +87,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
     private static final int SSL_AIDX_MAX     = 4;
 
     public static final int SSL_PROTOCOL_NONE  = 0;
-    public static final int SSL_PROTOCOL_SSLV2 = (1<<0);
+    public static final int SSL_PROTOCOL_SSLV2 = 1;
     public static final int SSL_PROTOCOL_SSLV3 = (1<<1);
     public static final int SSL_PROTOCOL_TLSV1 = (1<<2);
     public static final int SSL_PROTOCOL_TLSV1_1 = (1<<3);
@@ -269,7 +270,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             SSL_CTX_set_default_passwd_cb(sslCtx,
                     pem_password_cb.allocate(new PasswordCallback(null), 
contextArena));
 
-            if (negotiableProtocols != null && negotiableProtocols.size() > 0) 
{
+            if (negotiableProtocols != null && !negotiableProtocols.isEmpty()) 
{
                 alpn = true;
                 negotiableProtocolsBytes = new 
ArrayList<>(negotiableProtocols.size() + 1);
                 for (String negotiableProtocol : negotiableProtocols) {
@@ -322,7 +323,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
     }
 
 
-    private boolean checkConf(OpenSSLConf conf) throws Exception {
+    private boolean checkConf(OpenSSLConf conf) {
         boolean result = true;
         OpenSSLConfCmd cmd;
         String name;
@@ -392,7 +393,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
     }
 
 
-    private boolean applyConf(OpenSSLConf conf) throws Exception {
+    private boolean applyConf(OpenSSLConf conf) {
         boolean result = true;
         SSL_CONF_CTX_set_ssl_ctx(state.confCtx, state.sslCtx);
         OpenSSLConfCmd cmd;
@@ -465,7 +466,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             log.warn(sm.getString("openssl.doubleInit"));
             return;
         }
-        boolean success = true;
+        boolean success;
         Exception cause = null;
         try (var localArena = Arena.ofConfined()) {
             if (sslHostConfig.getInsecureRenegotiation()) {
@@ -518,21 +519,12 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             success = addCertificate(certificate, localArena);
 
             // Client certificate verification
-            int value = 0;
-            switch (sslHostConfig.getCertificateVerification()) {
-            case NONE:
-                value = SSL_VERIFY_NONE();
-                break;
-            case OPTIONAL:
-                value = SSL_VERIFY_PEER();
-                break;
-            case OPTIONAL_NO_CA:
-                value = OPTIONAL_NO_CA;
-                break;
-            case REQUIRED:
-                value = SSL_VERIFY_FAIL_IF_NO_PEER_CERT();
-                break;
-            }
+            int value = switch (sslHostConfig.getCertificateVerification()) {
+                case NONE -> SSL_VERIFY_NONE();
+                case OPTIONAL -> SSL_VERIFY_PEER();
+                case OPTIONAL_NO_CA -> OPTIONAL_NO_CA;
+                case REQUIRED -> SSL_VERIFY_FAIL_IF_NO_PEER_CERT();
+            };
 
             // Set int verify_callback(int preverify_ok, X509_STORE_CTX 
*x509_ctx) callback
             SSL_CTX_set_verify(state.sslCtx, value,
@@ -591,7 +583,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                 }
             }
 
-            if (negotiableProtocols != null && negotiableProtocols.size() > 0) 
{
+            if (negotiableProtocols != null && !negotiableProtocols.isEmpty()) 
{
                 SSL_CTX_set_alpn_select_cb(state.sslCtx,
                         SSL_CTX_set_alpn_select_cb$cb.allocate(new 
ALPNSelectCallback(negotiableProtocols), contextArena), state.sslCtx);
             }
@@ -837,44 +829,27 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
     private static final String SSL_TXT_ECDSA = "ECDSA";
 
     private static String getCipherAuthenticationMethod(int auth, int kx) {
-        switch (kx) {
-        case NID_kx_rsa:
-            return SSL_TXT_RSA;
-        case SSL_kDHr:
-            return SSL_TXT_DH + "_" + SSL_TXT_RSA;
-        case SSL_kDHd:
-            return SSL_TXT_DH + "_" + SSL_TXT_DSS;
-        case SSL_kDHE:
-            switch (auth) {
-            case SSL_aDSS:
-                return "DHE_" + SSL_TXT_DSS;
-            case SSL_aRSA:
-                return "DHE_" + SSL_TXT_RSA;
-            case SSL_aNULL:
-                return SSL_TXT_DH + "_anon";
-            default:
-                return "UNKNOWN";
-            }
-        case SSL_kKRB5:
-            return SSL_TXT_KRB5;
-        case SSL_kECDHr:
-            return SSL_TXT_ECDH + "_" + SSL_TXT_RSA;
-        case SSL_kECDHe:
-            return SSL_TXT_ECDH + "_" + SSL_TXT_ECDSA;
-        case SSL_kECDHE:
-            switch (auth) {
-            case SSL_aECDSA:
-                return "ECDHE_" + SSL_TXT_ECDSA;
-            case SSL_aRSA:
-                return "ECDHE_" + SSL_TXT_RSA;
-            case SSL_aNULL:
-                return SSL_TXT_ECDH + "_anon";
-            default:
-                return "UNKNOWN";
-            }
-        default:
-            return "UNKNOWN";
-        }
+        return switch (kx) {
+            case NID_kx_rsa -> SSL_TXT_RSA;
+            case SSL_kDHr -> SSL_TXT_DH + "_" + SSL_TXT_RSA;
+            case SSL_kDHd -> SSL_TXT_DH + "_" + SSL_TXT_DSS;
+            case SSL_kDHE -> switch (auth) {
+                case SSL_aDSS -> "DHE_" + SSL_TXT_DSS;
+                case SSL_aRSA -> "DHE_" + SSL_TXT_RSA;
+                case SSL_aNULL -> SSL_TXT_DH + "_anon";
+                default -> "UNKNOWN";
+            };
+            case SSL_kKRB5 -> SSL_TXT_KRB5;
+            case SSL_kECDHr -> SSL_TXT_ECDH + "_" + SSL_TXT_RSA;
+            case SSL_kECDHe -> SSL_TXT_ECDH + "_" + SSL_TXT_ECDSA;
+            case SSL_kECDHE -> switch (auth) {
+                case SSL_aECDSA -> "ECDHE_" + SSL_TXT_ECDSA;
+                case SSL_aRSA -> "ECDHE_" + SSL_TXT_RSA;
+                case SSL_aNULL -> SSL_TXT_ECDH + "_anon";
+                default -> "UNKNOWN";
+            };
+            default -> "UNKNOWN";
+        };
     }
 
     private static class PasswordCallback implements pem_password_cb.Function {
@@ -887,7 +862,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             if (log.isTraceEnabled()) {
                 log.trace("Return password for certificate");
             }
-            if (callbackPassword != null && callbackPassword.length() > 0) {
+            if (callbackPassword != null && !callbackPassword.isEmpty()) {
                 try (var localArena = Arena.ofConfined()) {
                     MemorySegment callbackPasswordNative = 
localArena.allocateFrom(callbackPassword);
                     if (callbackPasswordNative.byteSize() > bufsiz) {
@@ -910,7 +885,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
         // Load Server key and certificate
         if (certificate.getCertificateFile() != null) {
             // Pick right key password
-            String keyPassToUse = null;
+            String keyPassToUse;
             String keyPass = certificate.getCertificateKeyPassword();
             if (keyPass == null) {
                 keyPass = certificate.getCertificateKeystorePassword();
@@ -933,7 +908,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                 keyPassToUse = keyPass;
             }
             // Set certificate
-            byte[] certificateFileBytes = null;
+            byte[] certificateFileBytes;
             try (Resource resource = 
ConfigFileLoader.getSource().getResource(certificate.getCertificateFile())) {
                 certificateFileBytes = 
resource.getInputStream().readAllBytes();
             } catch (IOException e) {
@@ -948,8 +923,8 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                             certificate.getCertificateFile(), 
OpenSSLLibrary.getLastError()));
                     return false;
                 }
-                MemorySegment cert = MemorySegment.NULL;
-                MemorySegment key = MemorySegment.NULL;
+                MemorySegment cert;
+                MemorySegment key;
                 if (certificate.getCertificateFile().endsWith(".pkcs12")) {
                     // Load pkcs12
                     MemorySegment p12 = d2i_PKCS12_bio(certificateBIO, 
MemorySegment.NULL);
@@ -960,7 +935,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                     }
                     MemorySegment passwordAddress = MemorySegment.NULL;
                     int passwordLength = 0;
-                    if (keyPassToUse != null && keyPassToUse.length() > 0) {
+                    if (keyPassToUse != null && !keyPassToUse.isEmpty()) {
                         passwordAddress = 
localArena.allocateFrom(keyPassToUse);
                         passwordLength = (int) (passwordAddress.byteSize() - 
1);
                     }
@@ -986,7 +961,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                     String certificateKeyFileName = 
(certificate.getCertificateKeyFile() == null)
                             ? certificate.getCertificateFile() : 
certificate.getCertificateKeyFile();
                     // Load key
-                    byte[] certificateKeyFileBytes = null;
+                    byte[] certificateKeyFileBytes;
                     try (Resource resource = 
ConfigFileLoader.getSource().getResource(certificateKeyFileName)) {
                         certificateKeyFileBytes = 
resource.getInputStream().readAllBytes();
                     } catch (IOException e) {
@@ -1118,7 +1093,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                 }
                 // Set certificate chain file
                 if (certificate.getCertificateChainFile() != null) {
-                    byte[] certificateChainBytes = null;
+                    byte[] certificateChainBytes;
                     try (Resource resource = 
ConfigFileLoader.getSource().getResource(certificate.getCertificateChainFile()))
 {
                         certificateChainBytes = 
resource.getInputStream().readAllBytes();
                     } catch (IOException e) {
@@ -1191,12 +1166,13 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                 alias = findAlias(x509KeyManager, certificate);
                 chain = x509KeyManager.getCertificateChain(alias);
             }
-            StringBuilder sb = new StringBuilder(BEGIN_KEY);
-            sb.append(Base64.getMimeEncoder(64, new byte[] 
{'\n'}).encodeToString(x509KeyManager.getPrivateKey(alias).getEncoded()));
-            sb.append(END_KEY);
+            String sb =
+                BEGIN_KEY +
+                Base64.getMimeEncoder(64, new 
byte[]{'\n'}).encodeToString(x509KeyManager.getPrivateKey(alias).getEncoded()) +
+                END_KEY;
             var rawCertificate = 
localArena.allocateFrom(ValueLayout.JAVA_BYTE, chain[0].getEncoded());
             var rawCertificatePointer = 
localArena.allocateFrom(ValueLayout.ADDRESS, rawCertificate);
-            var rawKey = localArena.allocateFrom(ValueLayout.JAVA_BYTE, 
sb.toString().getBytes(StandardCharsets.US_ASCII));
+            var rawKey = localArena.allocateFrom(ValueLayout.JAVA_BYTE, 
sb.getBytes(StandardCharsets.US_ASCII));
             var x509cert = d2i_X509(MemorySegment.NULL, rawCertificatePointer, 
rawCertificate.byteSize());
             if (MemorySegment.NULL.equals(x509cert)) {
                 logLastError("openssl.errorLoadingCertificate");
@@ -1268,7 +1244,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
 
 
     private static int getCertificateIndex(SSLHostConfigCertificate 
certificate) {
-        int result = -1;
+        int result;
         // If the type is undefined there will only be one certificate 
(enforced
         // in SSLHostConfig) so use the RSA slot.
         if (certificate.getType() == Type.RSA || certificate.getType() == 
Type.UNDEFINED) {
@@ -1399,10 +1375,10 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             // Use another arena to avoid keeping a reference through segments
             // This also allows making further accesses to the main pointers 
safer
             this.sslCtx = sslCtx.reinterpret(ValueLayout.ADDRESS.byteSize(), 
stateArena,
-                    (MemorySegment t) -> SSL_CTX_free(t));
+                openssl_h::SSL_CTX_free);
             if (!MemorySegment.NULL.equals(confCtx)) {
                 this.confCtx = 
confCtx.reinterpret(ValueLayout.ADDRESS.byteSize(), stateArena,
-                        (MemorySegment t) -> SSL_CONF_CTX_free(t));
+                    openssl_h::SSL_CONF_CTX_free);
             } else {
                 this.confCtx = MemorySegment.NULL;
             }
diff --git a/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLEngine.java 
b/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLEngine.java
index 8aece600dc..044d5910fa 100644
--- a/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLEngine.java
+++ b/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLEngine.java
@@ -63,6 +63,7 @@ import 
org.apache.tomcat.util.net.openssl.ciphers.OpenSSLCipherConfigurationPars
 import org.apache.tomcat.util.openssl.SSL_CTX_set_verify$callback;
 import org.apache.tomcat.util.openssl.SSL_set_info_callback$cb;
 import org.apache.tomcat.util.openssl.SSL_set_verify$callback;
+import org.apache.tomcat.util.openssl.openssl_h;
 import org.apache.tomcat.util.openssl.openssl_h_Compatibility;
 import org.apache.tomcat.util.res.StringManager;
 
@@ -120,7 +121,7 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
     private final EngineState state;
     private final Arena engineArena;
     private final Cleanable cleanable;
-    private MemorySegment bufSegment = null;
+    private MemorySegment bufSegment;
 
     private enum Accepted { NOT, IMPLICIT, EXPLICIT }
     private Accepted accepted = Accepted.NOT;
@@ -230,7 +231,6 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
 
     /**
      * Write plain text data to the OpenSSL internal BIO
-     *
      * Calling this function with src.remaining == 0 is undefined.
      * @throws SSLException if the OpenSSL error check fails
      */
@@ -388,7 +388,7 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
             }
             while (src.hasRemaining()) {
 
-                int bytesWritten = 0;
+                int bytesWritten;
                 // Write plain text application data to the SSL engine
                 try {
                     bytesWritten = writePlaintextData(state.ssl, src);
@@ -476,7 +476,7 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
         }
 
         // Write encrypted data to network BIO
-        int written = 0;
+        int written;
         try {
             written = writeEncryptedData(state.networkBIO, src);
         } catch (Exception e) {
@@ -641,8 +641,7 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
 
     @Override
     public String[] getSupportedCipherSuites() {
-        Set<String> availableCipherSuites = AVAILABLE_CIPHER_SUITES;
-        return availableCipherSuites.toArray(new String[0]);
+        return AVAILABLE_CIPHER_SUITES.toArray(new String[0]);
     }
 
     @Override
@@ -651,17 +650,13 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
             return new String[0];
         }
         String[] enabled = OpenSSLLibrary.getCiphers(state.ssl);
-        if (enabled == null) {
-            return new String[0];
-        } else {
-            for (int i = 0; i < enabled.length; i++) {
-                String mapped = 
OpenSSLCipherConfigurationParser.openSSLToJsse(enabled[i]);
-                if (mapped != null) {
-                    enabled[i] = mapped;
-                }
+        for (int i = 0; i < enabled.length; i++) {
+            String mapped = 
OpenSSLCipherConfigurationParser.openSSLToJsse(enabled[i]);
+            if (mapped != null) {
+                enabled[i] = mapped;
             }
-            return enabled;
         }
+        return enabled;
     }
 
     @Override
@@ -692,7 +687,7 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
             buf.append(':');
         }
 
-        if (buf.length() == 0) {
+        if (buf.isEmpty()) {
             throw new 
IllegalArgumentException(sm.getString("engine.emptyCipherSuite"));
         }
         buf.setLength(buf.length() - 1);
@@ -738,11 +733,7 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
             enabled.add(Constants.SSL_PROTO_SSLv3);
         }
         int size = enabled.size();
-        if (size == 0) {
-            return new String[0];
-        } else {
-            return enabled.toArray(new String[size]);
-        }
+        return enabled.toArray(new String[size]);
     }
 
     @Override
@@ -767,18 +758,13 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
             if (!IMPLEMENTED_PROTOCOLS_SET.contains(p)) {
                 throw new 
IllegalArgumentException(sm.getString("engine.unsupportedProtocol", p));
             }
-            if (p.equals(Constants.SSL_PROTO_SSLv2)) {
-                sslv2 = true;
-            } else if (p.equals(Constants.SSL_PROTO_SSLv3)) {
-                sslv3 = true;
-            } else if (p.equals(Constants.SSL_PROTO_TLSv1)) {
-                tlsv1 = true;
-            } else if (p.equals(Constants.SSL_PROTO_TLSv1_1)) {
-                tlsv1_1 = true;
-            } else if (p.equals(Constants.SSL_PROTO_TLSv1_2)) {
-                tlsv1_2 = true;
-            } else if (p.equals(Constants.SSL_PROTO_TLSv1_3)) {
-                tlsv1_3 = true;
+            switch (p) {
+                case Constants.SSL_PROTO_SSLv2 -> sslv2 = true;
+                case Constants.SSL_PROTO_SSLv3 -> sslv3 = true;
+                case Constants.SSL_PROTO_TLSv1 -> tlsv1 = true;
+                case Constants.SSL_PROTO_TLSv1_1 -> tlsv1_1 = true;
+                case Constants.SSL_PROTO_TLSv1_2 -> tlsv1_2 = true;
+                case Constants.SSL_PROTO_TLSv1_3 -> tlsv1_3 = true;
             }
         }
         // Enable all and then disable what we not want
@@ -1340,7 +1326,7 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
                 return V_OCSP_CERTSTATUS_UNKNOWN();
             }
             InputStream is = connection.getInputStream();
-            int read = 0;
+            int read;
             byte[] responseBuf = new byte[1024];
             while ((read = is.read(responseBuf)) > 0) {
                 baos.write(responseBuf, 0, read);
@@ -1684,9 +1670,9 @@ public final class OpenSSLEngine extends SSLEngine 
implements SSLUtil.ProtocolIn
             // Use another arena to avoid keeping a reference through segments
             // This also allows making further accesses to the main pointers 
safer
             this.ssl = ssl.reinterpret(ValueLayout.ADDRESS.byteSize(), 
stateArena,
-                    (MemorySegment t) -> SSL_free(t));
+                openssl_h::SSL_free);
             this.networkBIO = 
networkBIO.reinterpret(ValueLayout.ADDRESS.byteSize(), stateArena,
-                    (MemorySegment t) -> BIO_free(t));
+                openssl_h::BIO_free);
         }
 
         @Override
diff --git a/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLLibrary.java 
b/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLLibrary.java
index e6320133bb..6f4f972aff 100644
--- a/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLLibrary.java
+++ b/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLLibrary.java
@@ -229,7 +229,7 @@ public class OpenSSLLibrary {
 
                 // Set the random seed, translated to the Java way
                 boolean seedDone = false;
-                if (SSLRandomSeed != null && SSLRandomSeed.length() != 0 && 
!"builtin".equals(SSLRandomSeed)) {
+                if (SSLRandomSeed != null && !SSLRandomSeed.isEmpty() && 
!"builtin".equals(SSLRandomSeed)) {
                     var randomSeed = memorySession.allocateFrom(SSLRandomSeed);
                     seedDone = RAND_load_file(randomSeed, 128) > 0;
                     if (!seedDone) {
@@ -440,7 +440,7 @@ public class OpenSSLLibrary {
                 try {
                     for (String c : getCiphers(ssl)) {
                         // Filter out bad input.
-                        if (c == null || c.length() == 0 || 
ciphersList.contains(c)) {
+                        if (c == null || c.isEmpty() || 
ciphersList.contains(c)) {
                             continue;
                         }
                         
ciphersList.add(OpenSSLCipherConfigurationParser.openSSLToJsse(c));
@@ -461,7 +461,7 @@ public class OpenSSLLibrary {
         MemorySegment sk = SSL_get_ciphers(ssl);
         int len = openssl_h_Compatibility.OPENSSL_sk_num(sk);
         if (len <= 0) {
-            return null;
+            return new String[0];
         }
         ArrayList<String> ciphers = new ArrayList<>(len);
         for (int i = 0; i < len; i++) {


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to