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

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


The following commit(s) were added to refs/heads/main by this push:
     new 55aadf3929 Extract out some of the important macros for readability
55aadf3929 is described below

commit 55aadf3929996756282baf51f447097e38de6417
Author: remm <r...@apache.org>
AuthorDate: Wed Sep 6 21:07:51 2023 +0200

    Extract out some of the important macros for readability
    
    Also rename the compatibility class for consistency.
---
 .../util/net/openssl/panama/OpenSSLContext.java    |  22 ++--
 .../util/net/openssl/panama/OpenSSLEngine.java     |   2 +-
 .../util/net/openssl/panama/OpenSSLLibrary.java    |   3 +-
 .../net/openssl/panama/OpenSSLSessionContext.java  |  21 +---
 ..._compat_h.java => openssl_h_Compatibility.java} |   2 +-
 .../tomcat/util/openssl/openssl_h_Macros.java      | 136 +++++++++++++++++++++
 6 files changed, 152 insertions(+), 34 deletions(-)

diff --git 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
index 480d289794..c0bb643e4f 100644
--- 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
+++ 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
@@ -52,8 +52,9 @@ import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509KeyManager;
 import javax.net.ssl.X509TrustManager;
 
-import static org.apache.tomcat.util.openssl.openssl_compat_h.*;
 import static org.apache.tomcat.util.openssl.openssl_h.*;
+import static org.apache.tomcat.util.openssl.openssl_h_Compatibility.*;
+import static org.apache.tomcat.util.openssl.openssl_h_Macros.*;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.net.AbstractEndpoint;
@@ -280,9 +281,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                 prot = SSL3_VERSION();
             }
             maxTlsVersion = prot;
-            // # define SSL_CTX_set_max_proto_version(sslCtx, version) \
-            //          SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_MAX_PROTO_VERSION, 
version, NULL)
-            SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_MAX_PROTO_VERSION(), prot, 
MemorySegment.NULL);
+            SSL_CTX_set_max_proto_version(sslCtx, prot);
             if (prot == TLS1_3_VERSION() && (protocol & SSL_PROTOCOL_TLSV1_2) 
> 0) {
                 prot = TLS1_2_VERSION();
             }
@@ -296,9 +295,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                 prot = SSL3_VERSION();
             }
             minTlsVersion = prot;
-            //# define SSL_CTX_set_min_proto_version(sslCtx, version) \
-            //         SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_MIN_PROTO_VERSION, 
version, NULL)
-            SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_MIN_PROTO_VERSION(), prot, 
MemorySegment.NULL);
+            SSL_CTX_set_min_proto_version(sslCtx, prot);
 
             // Disable compression, usually unsafe
             SSL_CTX_set_options(sslCtx, SSL_OP_NO_COMPRESSION());
@@ -311,14 +308,10 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             SSL_CTX_set_options(sslCtx, SSL_OP_SINGLE_ECDH_USE());
 
             // Default session context id and cache size
-            // # define SSL_CTX_sess_set_cache_size(sslCtx,t) \
-            //          
SSL_CTX_ctrl(sslCtx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL)
-            SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_SESS_CACHE_SIZE(), 256, 
MemorySegment.NULL);
+            SSL_CTX_sess_set_cache_size(sslCtx, 256);
 
             // Session cache is disabled by default
-            // # define SSL_CTX_set_session_cache_mode(sslCtx,m) \
-            //          
SSL_CTX_ctrl(sslCtx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL)
-            SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_SESS_CACHE_MODE(), 
SSL_SESS_CACHE_OFF(), MemorySegment.NULL);
+            SSL_CTX_set_session_cache_mode(sslCtx, SSL_SESS_CACHE_OFF());
 
             // Longer session timeout
             SSL_CTX_set_timeout(sslCtx, 14400);
@@ -1287,8 +1280,7 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                     logLastError(localArena, 
"openssl.errorLoadingCertificate");
                     return;
                 }
-                // # define SSL_CTX_add0_chain_cert(sslCtx,x509) 
SSL_CTX_ctrl(sslCtx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))
-                if (SSL_CTX_ctrl(state.sslCtx, SSL_CTRL_CHAIN_CERT(), 0, 
x509certChain) <= 0) {
+                if (SSL_CTX_add0_chain_cert(state.sslCtx, x509certChain) <= 0) 
{
                     logLastError(localArena, "openssl.errorAddingCertificate");
                     return;
                 }
diff --git 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLEngine.java
 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLEngine.java
index f002731dbd..a4af1edc5f 100644
--- 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLEngine.java
+++ 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLEngine.java
@@ -57,8 +57,8 @@ import javax.net.ssl.SSLSessionBindingEvent;
 import javax.net.ssl.SSLSessionBindingListener;
 import javax.net.ssl.SSLSessionContext;
 
-import static org.apache.tomcat.util.openssl.openssl_compat_h.*;
 import static org.apache.tomcat.util.openssl.openssl_h.*;
+import static org.apache.tomcat.util.openssl.openssl_h_Compatibility.*;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.buf.Asn1Parser;
diff --git 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLLibrary.java
 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLLibrary.java
index 5acc053016..ae1d2ff12c 100644
--- 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLLibrary.java
+++ 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLLibrary.java
@@ -24,9 +24,8 @@ import java.security.SecureRandom;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.apache.tomcat.util.openssl.openssl_compat_h.FIPS_mode;
-import static org.apache.tomcat.util.openssl.openssl_compat_h.FIPS_mode_set;
 import static org.apache.tomcat.util.openssl.openssl_h.*;
+import static org.apache.tomcat.util.openssl.openssl_h_Compatibility.*;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import 
org.apache.tomcat.util.net.openssl.ciphers.OpenSSLCipherConfigurationParser;
diff --git 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLSessionContext.java
 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLSessionContext.java
index b6583f6511..b14eb60d44 100644
--- 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLSessionContext.java
+++ 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLSessionContext.java
@@ -25,6 +25,7 @@ import javax.net.ssl.SSLSession;
 import javax.net.ssl.SSLSessionContext;
 
 import static org.apache.tomcat.util.openssl.openssl_h.*;
+import static org.apache.tomcat.util.openssl.openssl_h_Macros.*;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
@@ -68,9 +69,7 @@ public class OpenSSLSessionContext implements 
SSLSessionContext {
         }
         try (var memorySession = Arena.ofConfined()) {
             var array = memorySession.allocateFrom(ValueLayout.JAVA_BYTE, 
keys);
-            // #define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen)
-            //     SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLSEXT_TICKET_KEYS, 
(keylen), (keys))
-            SSL_CTX_ctrl(context.getSSLContext(), 
SSL_CTRL_SET_TLSEXT_TICKET_KEYS(), TICKET_KEYS_SIZE, array);
+            SSL_CTX_set_tlsext_ticket_keys(context.getSSLContext(), array, 
TICKET_KEYS_SIZE);
         }
     }
 
@@ -81,9 +80,7 @@ public class OpenSSLSessionContext implements 
SSLSessionContext {
      */
     public void setSessionCacheEnabled(boolean enabled) {
         long mode = enabled ? SSL_SESS_CACHE_SERVER() : SSL_SESS_CACHE_OFF();
-        // # define SSL_CTX_set_session_cache_mode(ctx,m) \
-        //     SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL)
-        SSL_CTX_ctrl(context.getSSLContext(), SSL_CTRL_SET_SESS_CACHE_MODE(), 
mode, null);
+        SSL_CTX_set_session_cache_mode(context.getSSLContext(), mode);
     }
 
     /**
@@ -91,9 +88,7 @@ public class OpenSSLSessionContext implements 
SSLSessionContext {
      *         otherwise.
      */
     public boolean isSessionCacheEnabled() {
-        // # define SSL_CTX_get_session_cache_mode(ctx) \
-        //    SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL)
-        return SSL_CTX_ctrl(context.getSSLContext(), 
SSL_CTRL_GET_SESS_CACHE_MODE(), 0, null) == SSL_SESS_CACHE_SERVER();
+        return SSL_CTX_get_session_cache_mode(context.getSSLContext()) == 
SSL_SESS_CACHE_SERVER();
     }
 
     /**
@@ -121,16 +116,12 @@ public class OpenSSLSessionContext implements 
SSLSessionContext {
         if (size < 0) {
             throw new IllegalArgumentException();
         }
-        // # define SSL_CTX_sess_set_cache_size(ctx,t) \
-        //     SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL)
-        SSL_CTX_ctrl(context.getSSLContext(), SSL_CTRL_SET_SESS_CACHE_SIZE(), 
size, null);
+        SSL_CTX_sess_set_cache_size(context.getSSLContext(), size);
     }
 
     @Override
     public int getSessionCacheSize() {
-        // # define SSL_CTX_sess_get_cache_size(ctx) \
-        //     SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL)
-        return (int) SSL_CTX_ctrl(context.getSSLContext(), 
SSL_CTRL_GET_SESS_CACHE_SIZE(), 0, null);
+        return (int) SSL_CTX_sess_get_cache_size(context.getSSLContext());
     }
 
     /**
diff --git 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/openssl/openssl_compat_h.java
 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/openssl/openssl_h_Compatibility.java
similarity index 99%
rename from 
modules/openssl-foreign/src/main/java/org/apache/tomcat/util/openssl/openssl_compat_h.java
rename to 
modules/openssl-foreign/src/main/java/org/apache/tomcat/util/openssl/openssl_h_Compatibility.java
index 776ee9e06a..841a581ee8 100644
--- 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/openssl/openssl_compat_h.java
+++ 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/openssl/openssl_h_Compatibility.java
@@ -24,7 +24,7 @@ import static java.lang.foreign.ValueLayout.*;
 /**
  * Methods used present in older OpenSSL versions but not in the current major 
version.
  */
-public class openssl_compat_h  {
+public class openssl_h_Compatibility  {
 
     // OpenSSL 1.1 FIPS_mode
     static final FunctionDescriptor FIPS_mode$FUNC = FunctionDescriptor
diff --git 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/openssl/openssl_h_Macros.java
 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/openssl/openssl_h_Macros.java
new file mode 100644
index 0000000000..03f55e2a4b
--- /dev/null
+++ 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/openssl/openssl_h_Macros.java
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomcat.util.openssl;
+
+import java.lang.foreign.MemorySegment;
+
+import static org.apache.tomcat.util.openssl.openssl_h.*;
+
+/**
+ * Functional macros not handled by jextract.
+ */
+public class openssl_h_Macros {
+
+
+    /**
+     * Set maximum protocol version on the given context.
+     * # define SSL_CTX_set_max_proto_version(sslCtx, version) \
+     *          SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, 
NULL)
+     * @param sslCtx the SSL context
+     * @param version the maximum version
+     * @return > 0 if successful
+     */
+    public static long SSL_CTX_set_max_proto_version(MemorySegment sslCtx, 
long version) {
+        return SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_MAX_PROTO_VERSION(), version, 
MemorySegment.NULL);
+    }
+
+
+    /**
+     * Set minimum protocol version on the given context.
+     * # define SSL_CTX_set_min_proto_version(sslCtx, version) \
+     *          SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, 
NULL)
+     * @param sslCtx the SSL context
+     * @param version the maximum version
+     * @return > 0 if successful
+     */
+    public static long SSL_CTX_set_min_proto_version(MemorySegment sslCtx, 
long version) {
+        return SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_MIN_PROTO_VERSION(), version, 
MemorySegment.NULL);
+    }
+
+
+    /**
+     * Get the session cache size.
+     * # define SSL_CTX_sess_get_cache_size(sslCtx) \
+     *          SSL_CTX_ctrl(sslCtx, SSL_CTRL_GET_SESS_CACHE_SIZE, 0, NULL)
+     * @param sslCtx the SSL context
+     * @param cacheSize the session cache size
+     * @return > 0 if successful
+     */
+    public static long SSL_CTX_sess_get_cache_size(MemorySegment sslCtx) {
+        return SSL_CTX_ctrl(sslCtx, SSL_CTRL_GET_SESS_CACHE_SIZE(), 0, 
MemorySegment.NULL);
+    }
+
+
+    /**
+     * Set the session cache size.
+     * # define SSL_CTX_sess_set_cache_size(sslCtx, t) \
+     *          SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_SESS_CACHE_SIZE, t, NULL)
+     * @param sslCtx the SSL context
+     * @param cacheSize the session cache size
+     * @return > 0 if successful
+     */
+    public static long SSL_CTX_sess_set_cache_size(MemorySegment sslCtx, long 
cacheSize) {
+        return SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_SESS_CACHE_SIZE(), cacheSize, 
MemorySegment.NULL);
+    }
+
+
+    /**
+     * Get the session cache mode.
+     * # define SSL_CTX_get_session_cache_mode(sslCtx) \
+     *          SSL_CTX_ctrl(sslCtx, SSL_CTRL_GET_SESS_CACHE_MODE, 0, NULL)
+     * @param sslCtx the SSL context
+     * @return > 0 if successful
+     */
+    public static long SSL_CTX_get_session_cache_mode(MemorySegment sslCtx) {
+        return SSL_CTX_ctrl(sslCtx, SSL_CTRL_GET_SESS_CACHE_MODE(), 0, 
MemorySegment.NULL);
+    }
+
+
+    /**
+     * Set the session cache mode.
+     * # define SSL_CTX_set_session_cache_mode(sslCtx, m) \
+     *          SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_SESS_CACHE_MODE, m, NULL)
+     * @param sslCtx the SSL context
+     * @param cacheMode the cache mode, SSL_SESS_CACHE_OFF to disable
+     * @return > 0 if successful
+     */
+    public static long SSL_CTX_set_session_cache_mode(MemorySegment sslCtx, 
long cacheMode) {
+        return SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_SESS_CACHE_MODE(), cacheMode, 
MemorySegment.NULL);
+    }
+
+
+    /**
+     * Set the certificate.
+     * # define SSL_CTX_add0_chain_cert(sslCtx,x509) \
+     *          SSL_CTX_ctrl(sslCtx, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509))
+     * @param sslCtx the SSL context
+     * @param x509 the certificate
+     * @return > 0 if successful
+     */
+    public static long SSL_CTX_add0_chain_cert(MemorySegment sslCtx, 
MemorySegment x509) {
+        return SSL_CTX_ctrl(sslCtx, SSL_CTRL_CHAIN_CERT(), 0, x509);
+    }
+
+
+    /**
+     * Set ticket keys.
+     * # define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \
+     *          SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLSEXT_TICKET_KEYS, (keylen), 
(keys))
+     * @param sslCtx the SSL context
+     * @param keys the keys
+     * @param keyLength the length
+     * @return > 0 if successful
+     */
+    public static long SSL_CTX_set_tlsext_ticket_keys(MemorySegment sslCtx, 
MemorySegment keys, long keyLength) {
+        return SSL_CTX_ctrl(sslCtx, SSL_CTRL_SET_TLSEXT_TICKET_KEYS(), 
keyLength, keys);
+    }
+
+
+}
+
+


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

Reply via email to