From 1db1fe9927346ea874d81a2b0778195edd13786b Mon Sep 17 00:00:00 2001 From: chrjohn <6644028+chrjohn@users.noreply.github.com> Date: Fri, 23 Oct 2026 14:11:20 +0000 Subject: [PATCH 1/2] Vendor MINA bogus trust manager Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../mina/ssl/BogusTrustManagerFactory.java | 84 +++++++++++++++++++ .../quickfix/mina/ssl/SSLContextFactory.java | 1 - 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 quickfixj-core/src/main/java/quickfix/mina/ssl/BogusTrustManagerFactory.java diff --git a/quickfixj-core/src/main/java/quickfix/mina/ssl/BogusTrustManagerFactory.java b/quickfixj-core/src/main/java/quickfix/mina/ssl/BogusTrustManagerFactory.java new file mode 100644 index 0000000000..cc0574c5c1 --- /dev/null +++ b/quickfixj-core/src/main/java/quickfix/mina/ssl/BogusTrustManagerFactory.java @@ -0,0 +1,84 @@ +/* + * 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 quickfix.mina.ssl; + +import java.security.InvalidAlgorithmParameterException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.Provider; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +import javax.net.ssl.ManagerFactoryParameters; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.TrustManagerFactorySpi; +import javax.net.ssl.X509TrustManager; + +/** + * Bogus {@link TrustManagerFactory} which creates {@link X509TrustManager} + * accepting all certificates. Copied from Apache MINA (removed in MINA 2.2.x). + * Only used when no trust store is configured. + */ +class BogusTrustManagerFactory extends TrustManagerFactory { + private static final X509TrustManager X509 = new X509TrustManager() { + @Override + public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { + // Do nothing + } + + @Override + public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { + // Do nothing + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } + }; + + private static final TrustManager[] X509_MANAGERS = new TrustManager[] { X509 }; + + @SuppressWarnings("deprecation") + BogusTrustManagerFactory() { + super(new BogusTrustManagerFactorySpi(), new Provider("MinaBogus", 1.0, "") { + private static final long serialVersionUID = -4024169055312053827L; + }, "MinaBogus"); + } + + private static class BogusTrustManagerFactorySpi extends TrustManagerFactorySpi { + @Override + protected TrustManager[] engineGetTrustManagers() { + return X509_MANAGERS; + } + + @Override + protected void engineInit(KeyStore keystore) throws KeyStoreException { + // noop + } + + @Override + protected void engineInit(ManagerFactoryParameters managerFactoryParameters) + throws InvalidAlgorithmParameterException { + // noop + } + } +} diff --git a/quickfixj-core/src/main/java/quickfix/mina/ssl/SSLContextFactory.java b/quickfixj-core/src/main/java/quickfix/mina/ssl/SSLContextFactory.java index 513f35b154..4330edc67e 100644 --- a/quickfixj-core/src/main/java/quickfix/mina/ssl/SSLContextFactory.java +++ b/quickfixj-core/src/main/java/quickfix/mina/ssl/SSLContextFactory.java @@ -19,7 +19,6 @@ package quickfix.mina.ssl; -import org.apache.mina.filter.ssl.BogusTrustManagerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import quickfix.FileUtil; From 4887ae7c24be35b1d5cd0a018525c9b741e46cf3 Mon Sep 17 00:00:00 2001 From: Christoph John Date: Fri, 23 Oct 2026 17:31:28 +0200 Subject: [PATCH 2/2] Fix comment version reference in BogusTrustManagerFactory Updated comment to reflect the correct version of Apache MINA from which the code was copied. --- .../main/java/quickfix/mina/ssl/BogusTrustManagerFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickfixj-core/src/main/java/quickfix/mina/ssl/BogusTrustManagerFactory.java b/quickfixj-core/src/main/java/quickfix/mina/ssl/BogusTrustManagerFactory.java index cc0574c5c1..99658ae455 100644 --- a/quickfixj-core/src/main/java/quickfix/mina/ssl/BogusTrustManagerFactory.java +++ b/quickfixj-core/src/main/java/quickfix/mina/ssl/BogusTrustManagerFactory.java @@ -34,7 +34,7 @@ /** * Bogus {@link TrustManagerFactory} which creates {@link X509TrustManager} - * accepting all certificates. Copied from Apache MINA (removed in MINA 2.2.x). + * accepting all certificates. Copied from Apache MINA (removed in MINA 2.2.10). * Only used when no trust store is configured. */ class BogusTrustManagerFactory extends TrustManagerFactory {