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>
