Repository: qpid-proton-j Updated Branches: refs/heads/master b49969c1f -> b845e479f
PROTON-1451 : Only register BouncyCastle provider if not already present Project: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/commit/b845e479 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/tree/b845e479 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton-j/diff/b845e479 Branch: refs/heads/master Commit: b845e479f946cac019fe92327a8bc3ca16263050 Parents: b49969c Author: rgodfrey <rgodf...@apache.org> Authored: Wed Mar 29 12:18:31 2017 +0200 Committer: rgodfrey <rgodf...@apache.org> Committed: Wed Mar 29 12:18:31 2017 +0200 ---------------------------------------------------------------------- .../engine/impl/ssl/SslEngineFacadeFactory.java | 22 ++++++++++++++++---- .../impl/ssl/SslEngineFacadeFactoryTest.java | 16 ++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton-j/blob/b845e479/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java index 64eb2ca..4efc055 100644 --- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java +++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactory.java @@ -130,10 +130,7 @@ public class SslEngineFacadeFactory PrivateKeyInfoClassResult = Class.forName("org.bouncycastle.asn1.pkcs.PrivateKeyInfo"); getPrivateKeyMethodResult = jcaPEMKeyConverterClass.getMethod("getPrivateKey", PrivateKeyInfoClassResult); - // Try loading BC as a provider - Class<?> klass = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider"); - Provider provider = (Provider) klass.getConstructor().newInstance(); - Security.addProvider(provider); + registerBouncyCastleProvider(); } catch (Exception e) { @@ -155,6 +152,23 @@ public class SslEngineFacadeFactory } } + static void registerBouncyCastleProvider() + throws ClassNotFoundException, InstantiationException, IllegalAccessException, + InvocationTargetException, NoSuchMethodException + { + // Try loading BC as a provider + Class<?> klass = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider"); + + Provider bouncyCastleProvider = (Provider) klass.getConstructor().newInstance(); + synchronized (Security.class) + { + if(Security.getProvider(bouncyCastleProvider.getName()) == null) + { + Security.addProvider(bouncyCastleProvider); + } + } + } + SslEngineFacadeFactory() { } http://git-wip-us.apache.org/repos/asf/qpid-proton-j/blob/b845e479/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java ---------------------------------------------------------------------- diff --git a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java index 84ba8cb..e43988e 100644 --- a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java +++ b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java @@ -18,6 +18,7 @@ */ package org.apache.qpid.proton.engine.impl.ssl; +import static junit.framework.TestCase.fail; import static org.junit.Assert.assertNotNull; import java.net.URL; @@ -29,6 +30,21 @@ public class SslEngineFacadeFactoryTest { private static final String PASSWORD = "unittest"; @Test + public void testDuplicateRegistrationOfSecurityProvider() { + // ensure the provider is already registered + SslEngineFacadeFactory factory = new SslEngineFacadeFactory(); + + try + { + SslEngineFacadeFactory.registerBouncyCastleProvider(); + } + catch (Exception e) + { + fail("Exception thrown when re-registering BouncyCastle provider " + e.getMessage()); + } + } + + @Test public void testCertifcateLoad() { String ipFile = resolveFilename("cert.pem.txt"); SslEngineFacadeFactory factory = new SslEngineFacadeFactory(); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org