Author: akarpe Date: Mon Apr 12 14:05:39 2010 New Revision: 933241 URL: http://svn.apache.org/viewvc?rev=933241&view=rev Log: CAMEL-2625 - Made updates to make TrustManager optional and add options for Keystore format and Security Provider
Modified: camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ClientPipelineFactory.java camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ServerPipelineFactory.java camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ssl/SSLEngineFactory.java Modified: camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ClientPipelineFactory.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ClientPipelineFactory.java?rev=933241&r1=933240&r2=933241&view=diff ============================================================================== --- camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ClientPipelineFactory.java (original) +++ camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ClientPipelineFactory.java Mon Apr 12 14:05:39 2010 @@ -80,6 +80,8 @@ public class ClientPipelineFactory imple LOG.debug("passphrase is null"); } SSLEngineFactory sslEngineFactory = new SSLEngineFactory( + producer.getConfiguration().getKeyStoreFormat(), + producer.getConfiguration().getSecurityProvider(), producer.getConfiguration().getKeyStoreFile(), producer.getConfiguration().getTrustStoreFile(), producer.getConfiguration().getPassphrase().toCharArray()); Modified: camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java?rev=933241&r1=933240&r2=933241&view=diff ============================================================================== --- camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java (original) +++ camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java Mon Apr 12 14:05:39 2010 @@ -52,6 +52,8 @@ public class NettyConfiguration { private long receiveBufferSize; private int corePoolSize; private int maxPoolSize; + private String keyStoreFormat; + private String securityProvider; public NettyConfiguration() { setKeepAlive(true); @@ -80,6 +82,8 @@ public class NettyConfiguration { sslHandler = component.resolveAndRemoveReferenceParameter(parameters, "sslHandler", SslHandler.class, null); passphrase = component.resolveAndRemoveReferenceParameter(parameters, "passphrase", String.class, null); + keyStoreFormat = component.getAndRemoveParameter(parameters, "keyStoreFormat", String.class, "JKS"); + securityProvider = component.getAndRemoveParameter(parameters, "securityProvider", String.class, "SunX509"); keyStoreFile = component.resolveAndRemoveReferenceParameter(parameters, "keyStoreFile", File.class, null); trustStoreFile = component.resolveAndRemoveReferenceParameter(parameters, "trustStoreFile", File.class, null); encoder = component.resolveAndRemoveReferenceParameter(parameters, "encoder", ChannelDownstreamHandler.class, new ObjectEncoder()); @@ -299,6 +303,22 @@ public class NettyConfiguration { public void setMaxPoolSize(int maxPoolSize) { this.maxPoolSize = maxPoolSize; + } + + public String getKeyStoreFormat() { + return keyStoreFormat; + } + + public void setKeyStoreFormat(String keyStoreFormat) { + this.keyStoreFormat = keyStoreFormat; + } + + public String getSecurityProvider() { + return securityProvider; + } + + public void setSecurityProvider(String securityProvider) { + this.securityProvider = securityProvider; } } Modified: camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ServerPipelineFactory.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ServerPipelineFactory.java?rev=933241&r1=933240&r2=933241&view=diff ============================================================================== --- camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ServerPipelineFactory.java (original) +++ camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ServerPipelineFactory.java Mon Apr 12 14:05:39 2010 @@ -64,10 +64,12 @@ public class ServerPipelineFactory imple if (consumer.getConfiguration().getSslHandler() != null) { return consumer.getConfiguration().getSslHandler(); } else { - SSLEngineFactory sslEngineFactory = - new SSLEngineFactory(consumer.getConfiguration().getKeyStoreFile(), - consumer.getConfiguration().getTrustStoreFile(), - consumer.getConfiguration().getPassphrase().toCharArray()); + SSLEngineFactory sslEngineFactory = new SSLEngineFactory( + consumer.getConfiguration().getKeyStoreFormat(), + consumer.getConfiguration().getSecurityProvider(), + consumer.getConfiguration().getKeyStoreFile(), + consumer.getConfiguration().getTrustStoreFile(), + consumer.getConfiguration().getPassphrase().toCharArray()); SSLEngine sslEngine = sslEngineFactory.createServerSSLEngine(); return new SslHandler(sslEngine); } Modified: camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ssl/SSLEngineFactory.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ssl/SSLEngineFactory.java?rev=933241&r1=933240&r2=933241&view=diff ============================================================================== --- camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ssl/SSLEngineFactory.java (original) +++ camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/ssl/SSLEngineFactory.java Mon Apr 12 14:05:39 2010 @@ -31,23 +31,27 @@ public class SSLEngineFactory { private static final String SSL_PROTOCOL = "TLS"; private static SSLContext sslContext; - public SSLEngineFactory(File keyStoreFile, File trustStoreFile, char[] passphrase) throws Exception { + public SSLEngineFactory(String keyStoreFormat, String securityProvider, File keyStoreFile, File trustStoreFile, char[] passphrase) throws Exception { super(); - KeyStore ks = KeyStore.getInstance("JKS"); - KeyStore ts = KeyStore.getInstance("JKS"); + KeyStore ks = KeyStore.getInstance(keyStoreFormat); ks.load(IOConverter.toInputStream(keyStoreFile), passphrase); - ts.load(IOConverter.toInputStream(trustStoreFile), passphrase); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); + KeyManagerFactory kmf = KeyManagerFactory.getInstance(securityProvider); kmf.init(ks, passphrase); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); - tmf.init(ts); - sslContext = SSLContext.getInstance(SSL_PROTOCOL); - sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + + if (trustStoreFile != null) { + KeyStore ts = KeyStore.getInstance(keyStoreFormat); + ts.load(IOConverter.toInputStream(trustStoreFile), passphrase); + TrustManagerFactory tmf = TrustManagerFactory.getInstance(securityProvider); + tmf.init(ts); + sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + } else { + sslContext.init(kmf.getKeyManagers(), null, null); + } } public SSLEngine createServerSSLEngine() {