--- SslSocketConnector.java.orig 2007-11-03 13:22:39.000000000 +0000 +++ SslSocketConnector.java 2007-11-03 15:05:16.000000000 +0000 @@ -17,6 +17,7 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; @@ -198,30 +199,31 @@ } KeyManager[] keyManagers = null; + InputStream keystoreInputStream = null; if (_keystore != null) - { - KeyStore keyStore = KeyStore.getInstance(_keystoreType); - if (_password == null) - throw new SSLException("_password is not set"); - keyStore.load(Resource.newResource(_keystore).getInputStream(), _password.toString().toCharArray()); - - KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(_sslKeyManagerFactoryAlgorithm); - if (_keyPassword == null) - throw new SSLException("_keypassword is not set"); - keyManagerFactory.init(keyStore,_keyPassword.toString().toCharArray()); - keyManagers = keyManagerFactory.getKeyManagers(); - } + keystoreInputStream = Resource.newResource(_keystore).getInputStream(); + KeyStore keyStore = KeyStore.getInstance(_keystoreType); + if (_password == null) + throw new SSLException("_password is not set"); + keyStore.load(keystoreInputStream, _password.toString().toCharArray()); + + KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(_sslKeyManagerFactoryAlgorithm); + if (_keyPassword == null) + throw new SSLException("_keypassword is not set"); + keyManagerFactory.init(keyStore,_keyPassword.toString().toCharArray()); + keyManagers = keyManagerFactory.getKeyManagers(); TrustManager[] trustManagers = null; + InputStream truststoreInputStream = null; if (_truststore != null) - { - KeyStore trustStore = KeyStore.getInstance(_truststoreType); - trustStore.load(Resource.newResource(_truststore).getInputStream(), _trustPassword.toString().toCharArray()); - - TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(_sslTrustManagerFactoryAlgorithm); - trustManagerFactory.init(trustStore); - trustManagers = trustManagerFactory.getTrustManagers(); - } + truststoreInputStream = Resource.newResource(_truststore).getInputStream(); + KeyStore trustStore = KeyStore.getInstance(_truststoreType); + trustStore.load(truststoreInputStream, _trustPassword.toString().toCharArray()); + + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(_sslTrustManagerFactoryAlgorithm); + trustManagerFactory.init(trustStore); + trustManagers = trustManagerFactory.getTrustManagers(); + SecureRandom secureRandom = _secureRandomAlgorithm==null?null:SecureRandom.getInstance(_secureRandomAlgorithm);