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 3a70074a97 Modernize and add FFM
3a70074a97 is described below
commit 3a70074a9714f410b844e18cea5d226896f39e92
Author: remm <[email protected]>
AuthorDate: Thu May 16 16:48:14 2024 +0200
Modernize and add FFM
---
.../tomcat/util/net/openssl/TestOpenSSLConf.java | 65 ++++++++++++++++------
1 file changed, 48 insertions(+), 17 deletions(-)
diff --git a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
index 74e8f3b608..f614b0d18c 100644
--- a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
+++ b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
@@ -16,8 +16,12 @@
*/
package org.apache.tomcat.util.net.openssl;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.hamcrest.CoreMatchers;
@@ -26,9 +30,13 @@ import org.hamcrest.MatcherAssert;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.core.AprLifecycleListener;
+import org.apache.catalina.core.OpenSSLLifecycleListener;
import org.apache.catalina.core.StandardServer;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
@@ -36,8 +44,24 @@ import org.apache.tomcat.jni.SSLContext;
import org.apache.tomcat.util.net.SSLHostConfig;
import org.apache.tomcat.util.net.TesterSupport;
+@RunWith(Parameterized.class)
public class TestOpenSSLConf extends TomcatBaseTest {
+ @Parameterized.Parameters(name = "{0}")
+ public static Collection<Object[]> parameters() {
+ List<Object[]> parameterSets = new ArrayList<>();
+ parameterSets.add(
+ new Object[] {
"org.apache.tomcat.util.net.openssl.OpenSSLImplementation" });
+ parameterSets.add(
+ new Object[] {
"org.apache.tomcat.util.net.openssl.panama.OpenSSLImplementation" });
+
+ return parameterSets;
+ }
+
+ @Parameter(0)
+ public String sslImplementationName;
+
+
private static final String ENABLED_CIPHER = "AES256-SHA256";
private static final String[] EXPECTED_CIPHERS = {ENABLED_CIPHER};
private static final String[] ENABLED_PROTOCOLS = {"TLSv1.1"};
@@ -61,7 +85,19 @@ public class TestOpenSSLConf extends TomcatBaseTest {
TesterSupport.initSsl(tomcat);
- Assert.assertTrue(connector.setProperty("sslImplementationName",
OpenSSLImplementation.class.getName()));
+
Assert.assertTrue(tomcat.getConnector().setProperty("sslImplementationName",
sslImplementationName));
+
+ if
(OpenSSLImplementation.class.getName().equals(sslImplementationName)) {
+ AprLifecycleListener listener = new AprLifecycleListener();
+ Assume.assumeTrue(AprLifecycleListener.isAprAvailable());
+ StandardServer server = (StandardServer) tomcat.getServer();
+ server.addLifecycleListener(listener);
+ } else if
("org.apache.tomcat.util.net.openssl.panama.OpenSSLImplementation".equals(sslImplementationName))
{
+ OpenSSLLifecycleListener listener = new OpenSSLLifecycleListener();
+ Assume.assumeTrue(OpenSSLLifecycleListener.isAvailable());
+ StandardServer server = (StandardServer) tomcat.getServer();
+ server.addLifecycleListener(listener);
+ }
OpenSSLConf conf = new OpenSSLConf();
for (int i = 0; i < commands.length;) {
@@ -95,7 +131,17 @@ public class TestOpenSSLConf extends TomcatBaseTest {
String[] ciphers = sslHostConfig.getEnabledCiphers();
MatcherAssert.assertThat("Wrong HostConfig ciphers", ciphers,
CoreMatchers.is(EXPECTED_CIPHERS));
- ciphers =
SSLContext.getCiphers(sslHostConfig.getOpenSslContext().longValue());
+ if
(OpenSSLImplementation.class.getName().equals(sslImplementationName)) {
+ ciphers =
SSLContext.getCiphers(sslHostConfig.getOpenSslContext().longValue());
+ } else {
+ Class<?> memorySegmentClass =
Class.forName("java.lang.foreign.MemorySegment");
+ Object ssxCtxSegment = memorySegmentClass.getMethod("ofAddress",
Long.TYPE)
+ .invoke(null, sslHostConfig.getOpenSslContext());
+ Method getCiphersMethod =
Class.forName("org.apache.tomcat.util.net.openssl.panama.OpenSSLContext")
+ .getDeclaredMethod("getCiphers", memorySegmentClass);
+ getCiphersMethod.setAccessible(true);
+ ciphers = (String[]) getCiphersMethod.invoke(null, ssxCtxSegment);
+ }
MatcherAssert.assertThat("Wrong native SSL context ciphers", ciphers,
CoreMatchers.is(EXPECTED_CIPHERS));
}
@@ -130,19 +176,4 @@ public class TestOpenSSLConf extends TomcatBaseTest {
}
}
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
-
- // Tests are only intended for OpenSSL
- Assume.assumeTrue(TesterSupport.isOpensslAvailable());
-
- Tomcat tomcat = getTomcatInstance();
-
- AprLifecycleListener listener = new AprLifecycleListener();
- Assume.assumeTrue(AprLifecycleListener.isAprAvailable());
- StandardServer server = (StandardServer) tomcat.getServer();
- server.addLifecycleListener(listener);
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]