Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package netty-tcnative for openSUSE:Factory 
checked in at 2026-03-30 18:33:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/netty-tcnative (Old)
 and      /work/SRC/openSUSE:Factory/.netty-tcnative.new.1999 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "netty-tcnative"

Mon Mar 30 18:33:21 2026 rev:9 rq:1343666 version:2.0.75

Changes:
--------
--- /work/SRC/openSUSE:Factory/netty-tcnative/netty-tcnative.changes    
2025-10-24 17:23:58.600780471 +0200
+++ /work/SRC/openSUSE:Factory/.netty-tcnative.new.1999/netty-tcnative.changes  
2026-03-30 18:37:54.891651496 +0200
@@ -1,0 +2,7 @@
+Mon Mar 30 12:35:54 UTC 2026 - Fridrich Strba <[email protected]>
+
+- Upgrade to version 2.0.75 Final
+  * No formal changelog present
+  * Needed by netty >= 4.2.11
+
+-------------------------------------------------------------------

Old:
----
  netty-tcnative-parent-2.0.74.Final.tar.gz

New:
----
  netty-tcnative-parent-2.0.75.Final.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ netty-tcnative.spec ++++++
--- /var/tmp/diff_new_pack.hyo6GT/_old  2026-03-30 18:37:55.839691085 +0200
+++ /var/tmp/diff_new_pack.hyo6GT/_new  2026-03-30 18:37:55.839691085 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package netty-tcnative
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -22,7 +22,7 @@
 %define with_gcc 11
 %endif
 Name:           netty-tcnative
-Version:        2.0.74
+Version:        2.0.75
 Release:        0
 Summary:        Fork of Tomcat Native with improved OpenSSL and mavenized build
 License:        Apache-2.0

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.hyo6GT/_old  2026-03-30 18:37:55.951695762 +0200
+++ /var/tmp/diff_new_pack.hyo6GT/_new  2026-03-30 18:37:55.967696430 +0200
@@ -1,6 +1,6 @@
-mtime: 1760604727
-commit: 5cf3ae4a950af4d1a90e853a81ef758ba8db733cc7432ef8f2f4bfe1aabf20a6
+mtime: 1774874211
+commit: cef0961fe81b4ea806eadf622e954423b07e78db220bc004f28e9ed2598c6199
 url: https://src.opensuse.org/java-packages/netty-tcnative.git
-revision: 5cf3ae4a950af4d1a90e853a81ef758ba8db733cc7432ef8f2f4bfe1aabf20a6
+revision: cef0961fe81b4ea806eadf622e954423b07e78db220bc004f28e9ed2598c6199
 projectscmsync: https://src.opensuse.org/java-packages/_ObsPrj
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-03-30 14:42:17.000000000 +0200
@@ -0,0 +1 @@
+.osc


++++++ netty-tcnative-parent-2.0.74.Final.tar.gz -> 
netty-tcnative-parent-2.0.75.Final.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/.github/workflows/ci-deploy.yml
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/.github/workflows/ci-deploy.yml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/.github/workflows/ci-deploy.yml
       2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/.github/workflows/ci-deploy.yml
       2026-02-04 08:42:18.000000000 +0100
@@ -74,7 +74,7 @@
       matrix:
         include:
           - setup: macos-x86_64
-            os: macos-13
+            os: macos-15-intel
           - setup: macos-aarch64
             os: macos-15
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/.github/workflows/ci-pr.yml
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/.github/workflows/ci-pr.yml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/.github/workflows/ci-pr.yml
   2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/.github/workflows/ci-pr.yml
   2026-02-04 08:42:18.000000000 +0100
@@ -134,7 +134,7 @@
       matrix:
         include:
           - setup: macos-x86_64
-            os: macos-13
+            os: macos-15-intel
           - setup: macos-aarch64
             os: macos-15
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/.github/workflows/ci-release.yml
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/.github/workflows/ci-release.yml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/.github/workflows/ci-release.yml
      2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/.github/workflows/ci-release.yml
      2026-02-04 08:42:18.000000000 +0100
@@ -259,7 +259,7 @@
       matrix:
         include:
           - setup: macos-x86_64
-            os: macos-13
+            os: macos-15-intel
           - setup: macos-aarch64
             os: macos-15
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/boringssl-static/pom.xml 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/boringssl-static/pom.xml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/boringssl-static/pom.xml  
    2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/boringssl-static/pom.xml  
    2026-02-04 08:42:18.000000000 +0100
@@ -19,9 +19,9 @@
   <parent>
     <groupId>io.netty</groupId>
     <artifactId>netty-tcnative-parent</artifactId>
-    <version>2.0.74.Final</version>
+    <version>2.0.75.Final</version>
   </parent>
-  <artifactId>netty-tcnative-boringssl-static</artifactId>
+  <artifactId>${project.artifactId}</artifactId>
   <packaging>jar</packaging>
 
   <name>Netty/TomcatNative [BoringSSL - Static]</name>
@@ -99,6 +99,7 @@
     <!-- 10.13 is the minimum required by BoringSSL -->
     
<macOsxDeploymentTarget>MACOSX_DEPLOYMENT_TARGET=10.13</macOsxDeploymentTarget>
     
<cmakeOsxDeploymentTarget>-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13</cmakeOsxDeploymentTarget>
+    <project.artifactId>netty-tcnative-boringssl-static</project.artifactId>
   </properties>
 
   <dependencies>
@@ -118,12 +119,13 @@
         
<boringsslCheckoutDir>${project.build.directory}/boringssl-${boringsslBranch}/boringssl</boringsslCheckoutDir>
         <boringsslBuildDir>${boringsslCheckoutDir}/build</boringsslBuildDir>
         <!--   Latest FIPS compliant boringSSL commit   -->
-        
<boringsslBranch>853ca1ea1168dff08011e5d42d94609cc0ca2e27</boringsslBranch>
+        
<boringsslBranch>6d503ae1cf8b2e25162435225610b8c1f063d6f4</boringsslBranch>
         <linkStatic>true</linkStatic>
         
<msvcSslIncludeDirs>${boringsslCheckoutDir}/include</msvcSslIncludeDirs>
-        <msvcSslLibDirs>${boringsslBuildDir}</msvcSslLibDirs>
-        <msvcSslLibs>ssl.lib;crypto.lib</msvcSslLibs>
+        
<msvcSslLibDirs>${boringsslBuildDir}/ssl;${boringsslBuildDir}/crypto;${boringsslBuildDir}/decrepit</msvcSslLibDirs>
+        <msvcSslLibs>ssl.lib;crypto.lib;decrepit.lib</msvcSslLibs>
         <jniArch>${os.detected.arch}</jniArch>
+        
<project.artifactId>netty-tcnative-boringssl-static-fips</project.artifactId>
       </properties>
 
       <build>
@@ -177,6 +179,7 @@
                 <Apr-Version>${aprVersion}</Apr-Version>
                 
<BoringSSL-Revision>${boringsslBuildNumber}</BoringSSL-Revision>
                 <BoringSSL-Branch>${boringsslBranch}</BoringSSL-Branch>
+                <BoringSSL-FIPS-Compliant>true</BoringSSL-FIPS-Compliant>
               </instructions>
             </configuration>
           </plugin>
@@ -233,10 +236,9 @@
                         </if>
                         <exec executable="cmake" failonerror="true" 
dir="${boringsslBuildDir}" resolveexecutable="true">
                           <arg value="-DCMAKE_BUILD_TYPE=Release" />
-                          <arg value="-DCMAKE_POSITION_INDEPENDENT_CODE=TRUE" 
/>
                           <arg 
value="-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded" />
-                          <arg value="-DCMAKE_C_COMPILER=clang" />
-                          <arg value="-DCMAKE_CXX_COMPILER=clang++" />
+                          <arg value="-DCMAKE_C_COMPILER=clang-12" />
+                          <arg value="-DCMAKE_CXX_COMPILER=clang++-12" />
                           <arg value="-DFIPS=1" />
                           <arg value="-GNinja" />
                           <arg value="${boringsslCheckoutDir}" />
@@ -258,7 +260,7 @@
                             <!-- This is needed to generate bssl execute file 
to verify isfips property-->
                             <exec executable="${ninjaExecutable}" 
failonerror="true" dir="${boringsslBuildDir}" resolveexecutable="true">
                             </exec>
-                            <exec executable="./tool/bssl" failonerror="false" 
dir="${boringsslBuildDir}" outputproperty="boringssl.isfips.result">
+                            <exec executable="./bssl" failonerror="false" 
dir="${boringsslBuildDir}" outputproperty="boringssl.isfips.result">
                               <arg value="isfips" />
                             </exec>
                             <if>
@@ -376,7 +378,7 @@
                     
<configureArg>--libdir=${project.build.directory}/native-build/target/lib</configureArg>
                     <configureArg>CFLAGS=-O3 -Werror -fno-omit-frame-pointer 
-fvisibility=hidden -Wunused -Wno-unused-value</configureArg>
                     <configureArg>CPPFLAGS=-DHAVE_OPENSSL 
-I${boringsslCheckoutDir}/include</configureArg>
-                    <configureArg>LDFLAGS=-L${boringsslBuildDir} -lssl 
-lcrypto</configureArg>
+                    <configureArg>LDFLAGS=-L${boringsslBuildDir} -lssl 
-lcrypto -ldecrepit -lstdc++</configureArg>
                   </configureArgs>
                 </configuration>
               </execution>
@@ -444,6 +446,7 @@
                 <Apr-Version>${aprVersion}</Apr-Version>
                 <BoringSSL-Revision>${boringsslCommitSha}</BoringSSL-Revision>
                 <BoringSSL-Branch>${boringsslBranch}</BoringSSL-Branch>
+                <BoringSSL-FIPS-Compliant>false</BoringSSL-FIPS-Compliant>
               </instructions>
             </configuration>
           </plugin>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/Dockerfile.centos6 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/Dockerfile.centos6
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/Dockerfile.centos6 
    2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/Dockerfile.centos6 
    2026-02-04 08:42:18.000000000 +0100
@@ -38,7 +38,7 @@
 WORKDIR $SOURCE_DIR
 
 RUN wget -q 
https://github.com/ninja-build/ninja/releases/download/v$NINJA_VERSION/ninja-linux.zip
 && unzip ninja-linux.zip && mkdir -p /opt/ninja-$NINJA_VERSION/bin && mv ninja 
/opt/ninja-$NINJA_VERSION/bin && echo 
'PATH=/opt/ninja-$NINJA_VERSION/bin:$PATH' >> ~/.bashrc
-RUN wget -q 
https://storage.googleapis.com/golang/go$GO_VERSION.linux-amd64.tar.gz && tar 
zxf go$GO_VERSION.linux-amd64.tar.gz && mv go /opt/ && echo 
'PATH=/opt/go/bin:$PATH' >> ~/.bashrc && echo 'export GOROOT=/opt/go/' >> 
~/.bashrc
+RUN wget -q https://go.dev/dl/go$GO_VERSION.linux-amd64.tar.gz && tar zxf 
go$GO_VERSION.linux-amd64.tar.gz && mv go /opt/ && echo 
'PATH=/opt/go/bin:$PATH' >> ~/.bashrc && echo 'export GOROOT=/opt/go/' >> 
~/.bashrc
 RUN curl -s 
https://cmake.org/files/v$CMAKE_VERSION_BASE/cmake-$CMAKE_VERSION-linux-x86_64.tar.gz
 --output cmake-$CMAKE_VERSION-linux-x86_64.tar.gz && tar zvxf 
cmake-$CMAKE_VERSION-linux-x86_64.tar.gz && mv 
cmake-$CMAKE_VERSION-linux-x86_64 /opt/ && echo 
'PATH=/opt/cmake-$CMAKE_VERSION-linux-x86_64/bin:$PATH' >> ~/.bashrc
 
 RUN yum install -y centos-release-scl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/Dockerfile.cross_compile_aarch64
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/Dockerfile.cross_compile_aarch64
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/Dockerfile.cross_compile_aarch64
       2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/Dockerfile.cross_compile_aarch64
       2026-02-04 08:42:18.000000000 +0100
@@ -18,7 +18,7 @@
 RUN sed -i -e 's/^mirrorlist/#mirrorlist/g' -e 
's/^#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\//baseurl=https:\/\/linuxsoft.cern.ch\/centos-vault\/\/7.6.1810\//g'
 /etc/yum.repos.d/CentOS-Base.repo
 
 # We want to have git 2.x for the maven scm plugin and also for boringssl
-RUN yum install -y 
http://opensource.wandisco.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm
+RUN yum install -y 
https://opensource.blueoptima.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm
 
 # Install requirements
 RUN  set -x && \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/Dockerfile.debian 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/Dockerfile.debian
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/Dockerfile.debian  
    2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/Dockerfile.debian  
    2026-02-04 08:42:18.000000000 +0100
@@ -49,7 +49,7 @@
 
 RUN wget -q --no-check-certificate 
https://github.com/ninja-build/ninja/releases/download/v$NINJA_VERSION/ninja-linux.zip
 && unzip ninja-linux.zip && mkdir -p /opt/ninja-$NINJA_VERSION/bin && mv ninja 
/opt/ninja-$NINJA_VERSION/bin && echo 
'PATH=/opt/ninja-$NINJA_VERSION/bin:$PATH' >> ~/.bashrc
 
-RUN wget -q 
http://storage.googleapis.com/golang/go$GO_VERSION.linux-amd64.tar.gz && tar 
zxf go$GO_VERSION.linux-amd64.tar.gz && mv go /opt/ && echo 
'PATH=/opt/go/bin:$PATH' >> ~/.bashrc && echo 'export GOROOT=/opt/go/' >> 
~/.bashrc
+RUN wget -q https://go.dev/dl/go$GO_VERSION.linux-amd64.tar.gz && tar zxf 
go$GO_VERSION.linux-amd64.tar.gz && mv go /opt/ && echo 
'PATH=/opt/go/bin:$PATH' >> ~/.bashrc && echo 'export GOROOT=/opt/go/' >> 
~/.bashrc
 
 RUN wget -q --no-check-certificate 
https://github.com/netty/netty-tcnative/releases/download/gcc-precompile/gcc-$GCC_VERSION.tar.gz
 && tar zxf gcc-$GCC_VERSION.tar.gz && mv gcc-$GCC_VERSION /opt/ && echo 
'PATH=/opt/gcc-$GCC_VERSION/bin:$PATH' >> ~/.bashrc && echo 'export 
CC=/opt/gcc-$GCC_VERSION/bin/gcc' >> ~/.bashrc && echo 'export 
CXX=/opt/gcc-$GCC_VERSION/bin/g++' >> ~/.bashrc
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/docker-compose.centos-6.18.yaml
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/docker-compose.centos-6.18.yaml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/docker-compose.centos-6.18.yaml
        2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/docker-compose.centos-6.18.yaml
        2026-02-04 08:42:18.000000000 +0100
@@ -7,7 +7,7 @@
     build:
       args:
         centos_version : "6"
-        java_version : "8.0.412-zulu"
+        java_version : "8.0.472-zulu"
 
   build:
     image: netty-tcnative-centos:centos-6-1.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/docker-compose.debian-7.18.yaml
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/docker-compose.debian-7.18.yaml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/docker/docker-compose.debian-7.18.yaml
        2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/docker/docker-compose.debian-7.18.yaml
        2026-02-04 08:42:18.000000000 +0100
@@ -7,7 +7,7 @@
     build:
       args:
         debian_version : "7"
-        java_version : "8.0.412-zulu"
+        java_version : "8.0.472-zulu"
 
   deploy-dynamic-only:
     image: netty-tcnative-debian:debian-7-1.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/libressl-static/pom.xml 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/libressl-static/pom.xml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/libressl-static/pom.xml   
    2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/libressl-static/pom.xml   
    2026-02-04 08:42:18.000000000 +0100
@@ -19,7 +19,7 @@
   <parent>
     <groupId>io.netty</groupId>
     <artifactId>netty-tcnative-parent</artifactId>
-    <version>2.0.74.Final</version>
+    <version>2.0.75.Final</version>
   </parent>
   <artifactId>netty-tcnative-libressl-static</artifactId>
   <packaging>jar</packaging>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-classes/pom.xml 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-classes/pom.xml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-classes/pom.xml   
    2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-classes/pom.xml   
    2026-02-04 08:42:18.000000000 +0100
@@ -19,7 +19,7 @@
   <parent>
     <groupId>io.netty</groupId>
     <artifactId>netty-tcnative-parent</artifactId>
-    <version>2.0.74.Final</version>
+    <version>2.0.75.Final</version>
   </parent>
   <artifactId>netty-tcnative-classes</artifactId>
   <packaging>jar</packaging>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-classes/src/main/java/io/netty/internal/tcnative/SSLCredential.java
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-classes/src/main/java/io/netty/internal/tcnative/SSLCredential.java
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-classes/src/main/java/io/netty/internal/tcnative/SSLCredential.java
   2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-classes/src/main/java/io/netty/internal/tcnative/SSLCredential.java
   2026-02-04 08:42:18.000000000 +0100
@@ -85,16 +85,16 @@
 
     /**
      * Set the certificate chain for an SSL_CREDENTIAL.
-     * 
-     * <p>This is a BoringSSL-specific feature. See 
+     *
+     * <p>This is a BoringSSL-specific feature. See
      * <a 
href="https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#SSL_CREDENTIAL_set1_cert_chain";>SSL_CREDENTIAL_set1_cert_chain</a>
      * for detailed documentation.</p>
-     * 
+     *
      * @param cred the SSL_CREDENTIAL instance (SSL_CREDENTIAL *)
-     * @param chain the certificate chain (STACK_OF(X509) *)
+     * @param chain the certificate chain (STACK_OF(CRYPTO_BUFFER) *)
      * @throws Exception if an error occurred
      */
-    public static native void setCertChain(long cred, long[] chain) throws 
Exception;
+    public static native void setCertChain(long cred, long chain) throws 
Exception;
 
     /**
      * Set the OCSP response for an SSL_CREDENTIAL.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/pom.xml 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/pom.xml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/pom.xml   
    2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/pom.xml   
    2026-02-04 08:42:18.000000000 +0100
@@ -19,7 +19,7 @@
   <parent>
     <groupId>io.netty</groupId>
     <artifactId>netty-tcnative-parent</artifactId>
-    <version>2.0.74.Final</version>
+    <version>2.0.75.Final</version>
   </parent>
   <artifactId>netty-tcnative</artifactId>
   <packaging>jar</packaging>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/jnilib.c
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/jnilib.c
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/jnilib.c
   2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/jnilib.c
   2026-02-04 08:42:18.000000000 +0100
@@ -48,6 +48,7 @@
 #include "ssl.h"
 #include "sslcontext.h"
 #include "sslsession.h"
+#include "sslcredential.h"
 #include "error.h"
 
 apr_pool_t *tcn_global_pool = NULL;
@@ -158,6 +159,7 @@
     int sessionOnLoadCalled = 0;
     int sslOnLoadCalled = 0;
     int contextOnLoadCalled = 0;
+    int credentialOnLoadCalled = 0;
 
     if (netty_jni_util_register_natives(env, packagePrefix, LIBRARY_CLASSNAME, 
method_table, method_table_size) != 0) {
         goto error;
@@ -194,6 +196,11 @@
     }
     sessionOnLoadCalled = 1;
 
+    if (netty_internal_tcnative_SSLCredential_JNI_OnLoad(env, packagePrefix) 
== JNI_ERR) {
+        goto error;
+    }
+    credentialOnLoadCalled = 1;
+
     apr_version_t apv;
     int apvn;
 
@@ -250,6 +257,9 @@
     if (sessionOnLoadCalled == 1) {
         netty_internal_tcnative_SSLSession_JNI_OnUnLoad(env, packagePrefix);
     }
+    if (credentialOnLoadCalled == 1) {
+        netty_internal_tcnative_SSLCredential_JNI_OnUnLoad(env, packagePrefix);
+    }
     return JNI_ERR;
 }
 
@@ -267,6 +277,7 @@
     netty_internal_tcnative_SSL_JNI_OnUnLoad(env, staticPackagePrefix);
     netty_internal_tcnative_SSLContext_JNI_OnUnLoad(env, staticPackagePrefix);
     netty_internal_tcnative_SSLSession_JNI_OnUnLoad(env, staticPackagePrefix);
+    netty_internal_tcnative_SSLCredential_JNI_OnUnLoad(env, 
staticPackagePrefix);
     free((void *) staticPackagePrefix);
     staticPackagePrefix = NULL;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/ssl.c
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/ssl.c
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/ssl.c
      2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/ssl.c
      2026-02-04 08:42:18.000000000 +0100
@@ -2670,26 +2670,26 @@
 }
 
 TCN_IMPLEMENT_CALL(void, SSL, addCredential)(TCN_STDARGS, jlong ssl, jlong 
cred) {
+    if (!check_credential_api(e)) return;
     SSL *ssl_ = J2P(ssl, SSL *);
     TCN_CHECK_NULL(ssl_, ssl, /* void */);
-    
+
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* credential = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(credential, credential, /* void */);
-    
+
     int result = SSL_add1_credential(ssl_, credential);
     if (result == 0) {
         tcn_Throw(e, "Failed to add credential to SSL");
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL API is only 
supported by BoringSSL");
-#endif // OPENSSL_IS_BORINGSSL
+#endif
 }
 
 TCN_IMPLEMENT_CALL(jlong, SSL, getSelectedCredential)(TCN_STDARGS, jlong ssl) {
+    if (!check_credential_api(e)) return 0;
     SSL *ssl_ = J2P(ssl, SSL *);
     TCN_CHECK_NULL(ssl_, ssl, 0);
-    
+
 #ifdef OPENSSL_IS_BORINGSSL
     const SSL_CREDENTIAL* credential = SSL_get0_selected_credential(ssl_);
     if (credential == NULL) {
@@ -2697,9 +2697,8 @@
     }
     return (jlong)(intptr_t)credential;
 #else
-    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL API is only 
supported by BoringSSL");
-    return 0;
-#endif // OPENSSL_IS_BORINGSSL
+    return 0;  // Unreachable - check_credential_api throws
+#endif
 }
 
 // JNI Method Registration Table Begin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/ssl_private.h
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/ssl_private.h
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/ssl_private.h
      2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/ssl_private.h
      2026-02-04 08:42:18.000000000 +0100
@@ -518,4 +518,42 @@
 #define tcn_SSL_set1_curves(s, glist, glistlen) SSL_ctrl(s, 
SSL_CTRL_SET_GROUPS, glistlen,(char *)(glist))
 #endif // defined(OPENSSL_IS_BORINGSSL) || defined(OPENSSL_IS_AWSLC)
 
+// SSL_CREDENTIAL API runtime detection for FIPS compatibility
+#ifdef OPENSSL_IS_BORINGSSL
+// Use weak symbols to detect if SSL_CREDENTIAL API is available at runtime
+// FIPS BoringSSL builds (fips-20230428 and earlier) don't have these symbols
+__attribute__((weak)) extern SSL_CREDENTIAL* SSL_CREDENTIAL_new_x509(void);
+__attribute__((weak)) extern SSL_CREDENTIAL* 
SSL_CREDENTIAL_new_delegated(void);
+__attribute__((weak)) extern void SSL_CREDENTIAL_free(SSL_CREDENTIAL*);
+__attribute__((weak)) extern void SSL_CREDENTIAL_up_ref(SSL_CREDENTIAL*);
+__attribute__((weak)) extern int 
SSL_CREDENTIAL_set1_private_key(SSL_CREDENTIAL*, EVP_PKEY*);
+__attribute__((weak)) extern int 
SSL_CREDENTIAL_set1_cert_chain(SSL_CREDENTIAL*, CRYPTO_BUFFER *const*, size_t);
+__attribute__((weak)) extern int 
SSL_CREDENTIAL_set1_trust_anchor_id(SSL_CREDENTIAL*, const uint8_t*, size_t);
+__attribute__((weak)) extern void 
SSL_CREDENTIAL_set_must_match_issuer(SSL_CREDENTIAL*, int);
+__attribute__((weak)) extern int 
SSL_CREDENTIAL_set1_ocsp_response(SSL_CREDENTIAL*, CRYPTO_BUFFER*);
+__attribute__((weak)) extern int 
SSL_CREDENTIAL_set1_signed_cert_timestamp_list(SSL_CREDENTIAL*, CRYPTO_BUFFER*);
+__attribute__((weak)) extern int 
SSL_CREDENTIAL_set1_certificate_properties(SSL_CREDENTIAL*, CRYPTO_BUFFER*);
+__attribute__((weak)) extern int 
SSL_CREDENTIAL_set1_signing_algorithm_prefs(SSL_CREDENTIAL*, const uint16_t*, 
size_t);
+__attribute__((weak)) extern int 
SSL_CREDENTIAL_set1_delegated_credential(SSL_CREDENTIAL*, CRYPTO_BUFFER*);
+__attribute__((weak)) extern int SSL_add1_credential(SSL*, SSL_CREDENTIAL*);
+__attribute__((weak)) extern int SSL_CTX_add1_credential(SSL_CTX*, 
SSL_CREDENTIAL*);
+__attribute__((weak)) extern const SSL_CREDENTIAL* 
SSL_get0_selected_credential(const SSL*);
+
+// Check if credential API is available and throw if not
+// Returns 1 if available, 0 if not (with exception thrown)
+static inline int check_credential_api(JNIEnv* e) {
+    if (SSL_CREDENTIAL_new_x509 == NULL) {
+        tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL API not 
available.");
+        return 0;
+    }
+    return 1;
+}
+
+#else
+__attribute__((unused)) static inline int check_credential_api(JNIEnv* e) {
+    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL API not 
available.");
+    return 0;
+}
+#endif // OPENSSL_IS_BORINGSSL
+
 #endif /* SSL_PRIVATE_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/sslcontext.c
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/sslcontext.c
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/sslcontext.c
       2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/sslcontext.c
       2026-02-04 08:42:18.000000000 +0100
@@ -2945,6 +2945,7 @@
 }
 
 TCN_IMPLEMENT_CALL(void, SSLContext, addCredential)(TCN_STDARGS, jlong ctx, 
jlong cred) {
+    if (!check_credential_api(e)) return;
     tcn_ssl_ctxt_t *c = J2P(ctx, tcn_ssl_ctxt_t *);
     TCN_CHECK_NULL(c, ctx, /* void */);
 
@@ -2956,9 +2957,7 @@
     if (result == 0) {
         tcn_Throw(e, "Failed to add credential to SSL_CTX");
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL API is only 
supported by BoringSSL");
-#endif // OPENSSL_IS_BORINGSSL
+#endif
 }
 
 // JNI Method Registration Table Begin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/sslcredential.c
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/sslcredential.c
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-dynamic/src/main/c/sslcredential.c
    2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-dynamic/src/main/c/sslcredential.c
    2026-02-04 08:42:18.000000000 +0100
@@ -43,39 +43,38 @@
 
 // Core SSL_CREDENTIAL functions
 TCN_IMPLEMENT_CALL(jlong, SSLCredential, newX509)(TCN_STDARGS) {
+    if (!check_credential_api(e)) return 0;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* cred = SSL_CREDENTIAL_new_x509();
     TCN_CHECK_NULL(cred, credential, 0);
     return (jlong)(intptr_t)cred;
 #else
-    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL_new_x509 is not 
supported. SSL_CREDENTIAL API is a BoringSSL-specific feature.");
-    return 0;
+    return 0;  // Unreachable - check_credential_api throws
 #endif
 }
 
 TCN_IMPLEMENT_CALL(void, SSLCredential, upRef)(TCN_STDARGS, jlong cred) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(c, credential, /* void */);
     SSL_CREDENTIAL_up_ref(c);
-#else
-    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL_up_ref is not 
supported. SSL_CREDENTIAL API is a BoringSSL-specific feature.");
 #endif
 }
 
 TCN_IMPLEMENT_CALL(void, SSLCredential, free)(TCN_STDARGS, jlong cred) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     if (c != NULL) {
         SSL_CREDENTIAL_free(c);
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL_free is not 
supported. SSL_CREDENTIAL API is a BoringSSL-specific feature.");
 #endif
 }
 
 // SSL_CREDENTIAL configuration methods
 TCN_IMPLEMENT_CALL(void, SSLCredential, setPrivateKey)(TCN_STDARGS, jlong 
cred, jlong key) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     EVP_PKEY* pkey = (EVP_PKEY*)(intptr_t)key;
@@ -86,51 +85,43 @@
     if (SSL_CREDENTIAL_set1_private_key(c, pkey) == 0) {
         throw_openssl_error(e, "Failed to set private key");
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL_set1_private_key 
is not supported. SSL_CREDENTIAL API is a BoringSSL-specific feature.");
 #endif
 }
 
-TCN_IMPLEMENT_CALL(void, SSLCredential, setCertChain)(TCN_STDARGS, jlong cred, 
jlongArray certs) {
+TCN_IMPLEMENT_CALL(void, SSLCredential, setCertChain)(TCN_STDARGS, jlong cred, 
jlong certChainStack) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(c, credential, /* void */);
-    TCN_CHECK_NULL(certs, certificateArray, /* void */);
 
-    jsize len = (*e)->GetArrayLength(e, certs);
+    STACK_OF(CRYPTO_BUFFER)* stack = 
(STACK_OF(CRYPTO_BUFFER)*)(intptr_t)certChainStack;
+    TCN_CHECK_NULL(stack, certificateChainStack, /* void */);
+
+    int len = sk_CRYPTO_BUFFER_num(stack);
     if (len == 0) {
-        tcn_Throw(e, "Certificate array is empty");
+        tcn_Throw(e, "Certificate chain stack is empty");
         return;
     }
 
+    // Extract CRYPTO_BUFFER pointers from stack
     CRYPTO_BUFFER** cert_buffers = OPENSSL_malloc(sizeof(CRYPTO_BUFFER*) * 
len);
     TCN_CHECK_NULL(cert_buffers, certificateBuffers, /* void */);
 
-    jlong* certs_elems = (*e)->GetLongArrayElements(e, certs, NULL);
-    if (certs_elems == NULL) {
-        OPENSSL_free(cert_buffers);
-        return;
-    }
-
-    for (jsize i = 0; i < len; i++) {
-        cert_buffers[i] = (CRYPTO_BUFFER*)(intptr_t)certs_elems[i];
+    for (int i = 0; i < len; i++) {
+        cert_buffers[i] = sk_CRYPTO_BUFFER_value(stack, i);
     }
 
     int result = SSL_CREDENTIAL_set1_cert_chain(c, cert_buffers, len);
-    
-    // Clean up
-    (*e)->ReleaseLongArrayElements(e, certs, certs_elems, JNI_ABORT);
     OPENSSL_free(cert_buffers);
 
     if (result == 0) {
         throw_openssl_error(e, "Failed to set certificate chain");
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL_set1_cert_chain 
is not supported. SSL_CREDENTIAL API is a BoringSSL-specific feature.");
 #endif
 }
 
 TCN_IMPLEMENT_CALL(void, SSLCredential, setOcspResponse)(TCN_STDARGS, jlong 
cred, jbyteArray ocsp) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(c, credential, /* void */);
@@ -156,12 +147,11 @@
     if (result == 0) {
         throw_openssl_error(e, "Failed to set OCSP response");
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, 
"SSL_CREDENTIAL_set1_ocsp_response is not supported. SSL_CREDENTIAL API is a 
BoringSSL-specific feature.");
 #endif
 }
 
 TCN_IMPLEMENT_CALL(void, SSLCredential, setSigningAlgorithmPrefs)(TCN_STDARGS, 
jlong cred, jintArray prefs) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(c, credential, /* void */);
@@ -194,12 +184,11 @@
     if (result == 0) {
         throw_openssl_error(e, "Failed to set signing algorithm preferences");
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, 
"SSL_CREDENTIAL_set1_signing_algorithm_prefs is not supported. SSL_CREDENTIAL 
API is a BoringSSL-specific feature.");
 #endif
 }
 
 TCN_IMPLEMENT_CALL(void, SSLCredential, setCertificateProperties)(TCN_STDARGS, 
jlong cred, jbyteArray cert_props) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(c, credential, /* void */);
@@ -225,12 +214,11 @@
     if (result == 0) {
         throw_openssl_error(e, "Failed to set certificate properties");
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, 
"SSL_CREDENTIAL_set1_certificate_properties is not supported. SSL_CREDENTIAL 
API is a BoringSSL-specific feature.");
 #endif
 }
 
 TCN_IMPLEMENT_CALL(void, SSLCredential, 
setSignedCertTimestampList)(TCN_STDARGS, jlong cred, jbyteArray sct_list) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(c, credential, /* void */);
@@ -256,23 +244,21 @@
     if (result == 0) {
         throw_openssl_error(e, "Failed to set signed certificate timestamp 
list");
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, 
"SSL_CREDENTIAL_set1_signed_cert_timestamp_list is not supported. 
SSL_CREDENTIAL API is a BoringSSL-specific feature.");
 #endif
 }
 
 TCN_IMPLEMENT_CALL(void, SSLCredential, setMustMatchIssuer)(TCN_STDARGS, jlong 
cred, jboolean match) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(c, credential, /* void */);
     SSL_CREDENTIAL_set_must_match_issuer(c, match == JNI_TRUE ? 1 : 0);
-#else
-    tcn_ThrowUnsupportedOperationException(e, 
"SSL_CREDENTIAL_set_must_match_issuer is not supported. SSL_CREDENTIAL API is a 
BoringSSL-specific feature.");
 #endif
 }
 
 // Trust anchor configuration
 TCN_IMPLEMENT_CALL(void, SSLCredential, setTrustAnchorId)(TCN_STDARGS, jlong 
cred, jbyteArray id) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(c, credential, /* void */);
@@ -294,13 +280,12 @@
         throw_openssl_error(e, "Failed to set trust anchor ID");
         return;
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, 
"SSL_CREDENTIAL_set1_trust_anchor_id is not supported. SSL_CREDENTIAL API is a 
BoringSSL-specific feature.");
 #endif
 }
 
 // Delegated credentials
 TCN_IMPLEMENT_CALL(jlong, SSLCredential, newDelegated)(TCN_STDARGS) {
+    if (!check_credential_api(e)) return 0;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* credential = SSL_CREDENTIAL_new_delegated();
     if (credential == NULL) {
@@ -309,12 +294,12 @@
     }
     return (jlong)(intptr_t)credential;
 #else
-    tcn_ThrowUnsupportedOperationException(e, "SSL_CREDENTIAL_new_delegated is 
not supported. SSL_CREDENTIAL API is a BoringSSL-specific feature.");
-    return 0;
+    return 0;  // Unreachable - check_credential_api throws
 #endif
 }
 
 TCN_IMPLEMENT_CALL(void, SSLCredential, setDelegatedCredential)(TCN_STDARGS, 
jlong cred, jbyteArray dc) {
+    if (!check_credential_api(e)) return;
 #ifdef OPENSSL_IS_BORINGSSL
     SSL_CREDENTIAL* c = (SSL_CREDENTIAL*)(intptr_t)cred;
     TCN_CHECK_NULL(c, credential, /* void */);
@@ -341,8 +326,6 @@
         throw_openssl_error(e, "Failed to set delegated credential");
         return;
     }
-#else
-    tcn_ThrowUnsupportedOperationException(e, 
"SSL_CREDENTIAL_set1_delegated_credential is not supported. SSL_CREDENTIAL API 
is a BoringSSL-specific feature.");
 #endif
 }
 
@@ -355,7 +338,7 @@
     
     // Configuration
     { TCN_METHOD_TABLE_ENTRY(setPrivateKey, (JJ)V, SSLCredential) },
-    { TCN_METHOD_TABLE_ENTRY(setCertChain, (J[J)V, SSLCredential) },
+    { TCN_METHOD_TABLE_ENTRY(setCertChain, (JJ)V, SSLCredential) },
     { TCN_METHOD_TABLE_ENTRY(setOcspResponse, (J[B)V, SSLCredential) },
     { TCN_METHOD_TABLE_ENTRY(setSigningAlgorithmPrefs, (J[I)V, SSLCredential) 
},
     { TCN_METHOD_TABLE_ENTRY(setCertificateProperties, (J[B)V, SSLCredential) 
},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-static/pom.xml 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-static/pom.xml
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/openssl-static/pom.xml    
    2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/openssl-static/pom.xml    
    2026-02-04 08:42:18.000000000 +0100
@@ -19,7 +19,7 @@
   <parent>
     <groupId>io.netty</groupId>
     <artifactId>netty-tcnative-parent</artifactId>
-    <version>2.0.74.Final</version>
+    <version>2.0.75.Final</version>
   </parent>
   <artifactId>netty-tcnative-openssl-static</artifactId>
   <packaging>jar</packaging>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/pom.xml 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/pom.xml
--- old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/pom.xml       
2025-09-22 10:25:46.000000000 +0200
+++ new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/pom.xml       
2026-02-04 08:42:18.000000000 +0100
@@ -24,7 +24,7 @@
 
   <groupId>io.netty</groupId>
   <artifactId>netty-tcnative-parent</artifactId>
-  <version>2.0.74.Final</version>
+  <version>2.0.75.Final</version>
   <packaging>pom</packaging>
 
   <name>Netty/TomcatNative [Parent]</name>
@@ -302,6 +302,9 @@
             
<breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
             
<breakBuildOnSourceIncompatibleModifications>true</breakBuildOnSourceIncompatibleModifications>
             <oldVersionPattern>\d+\.\d+\.\d+\.Final</oldVersionPattern>
+            <excludes>
+              
<exclude>io.netty.internal.tcnative.SSLCredential#setCertChain(long,long[])</exclude>
+            </excludes>
           </parameter>
           <skip>${skipJapicmp}</skip>
         </configuration>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/vs2010.vcxproj.static.template
 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/vs2010.vcxproj.static.template
--- 
old/netty-tcnative-netty-tcnative-parent-2.0.74.Final/vs2010.vcxproj.static.template
        2025-09-22 10:25:46.000000000 +0200
+++ 
new/netty-tcnative-netty-tcnative-parent-2.0.75.Final/vs2010.vcxproj.static.template
        2026-02-04 08:42:18.000000000 +0100
@@ -194,6 +194,7 @@
     <ClCompile Include=".\src\native_constants.c" />
     <ClCompile Include=".\src\ssl.c" />
     <ClCompile Include=".\src\sslcontext.c" />
+    <ClCompile Include=".\src\sslcredential.c" />
     <ClCompile Include=".\src\sslsession.c" />
     <ClCompile Include=".\src\sslutils.c" />
   </ItemGroup>

Reply via email to