Browse Source

KeyStore param uses InputStream instead of String

master
Nikita 13 years ago
parent
commit
965bc2e858
  1. 13
      src/main/java/com/corundumstudio/socketio/Configuration.java
  2. 10
      src/main/java/com/corundumstudio/socketio/SocketIOPipelineFactory.java

13
src/main/java/com/corundumstudio/socketio/Configuration.java

@ -15,6 +15,7 @@
*/
package com.corundumstudio.socketio;
import java.io.InputStream;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@ -41,7 +42,7 @@ public class Configuration {
private String hostname;
private int port;
private String keyStorePath;
private InputStream keyStore;
private String keyStorePassword;
private JsonSupport jsonSupport = new JacksonJsonSupport(this);
@ -69,7 +70,7 @@ public class Configuration {
setPollingDuration(conf.getPollingDuration());
setJsonTypeFieldName(conf.getJsonTypeFieldName());
setKeyStorePassword(conf.getKeyStorePassword());
setKeyStorePath(conf.getKeyStorePath());
setKeyStore(conf.getKeyStore());
}
public String getJsonTypeFieldName() {
@ -220,11 +221,11 @@ public class Configuration {
return keyStorePassword;
}
public void setKeyStorePath(String keyStorePath) {
this.keyStorePath = keyStorePath;
public void setKeyStore(InputStream keyStore) {
this.keyStore = keyStore;
}
public String getKeyStorePath() {
return keyStorePath;
public InputStream getKeyStore() {
return keyStore;
}
}

10
src/main/java/com/corundumstudio/socketio/SocketIOPipelineFactory.java

@ -18,6 +18,7 @@ package com.corundumstudio.socketio;
import static org.jboss.netty.channel.Channels.pipeline;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.Security;
@ -85,10 +86,10 @@ public class SocketIOPipelineFactory implements ChannelPipelineFactory, Disconne
String connectPath = configuration.getContext() + "/" + protocol + "/";
boolean isSsl = configuration.getKeyStorePath() != null;
boolean isSsl = configuration.getKeyStore() != null;
if (isSsl) {
try {
sslContext = createSSLContext(configuration.getKeyStorePath(), configuration.getKeyStorePassword());
sslContext = createSSLContext(configuration.getKeyStore(), configuration.getKeyStorePassword());
} catch (Exception e) {
throw new IllegalStateException(e);
}
@ -131,15 +132,14 @@ public class SocketIOPipelineFactory implements ChannelPipelineFactory, Disconne
return pipeline;
}
private SSLContext createSSLContext(String keyStoreFilePath, String keyStoreFilePassword) throws Exception {
private SSLContext createSSLContext(InputStream keyStoreFile, String keyStoreFilePassword) throws Exception {
String algorithm = Security.getProperty("ssl.KeyManagerFactory.algorithm");
if (algorithm == null) {
algorithm = "SunX509";
}
KeyStore ks = KeyStore.getInstance("JKS");
FileInputStream fin = new FileInputStream(keyStoreFilePath);
ks.load(fin, keyStoreFilePassword.toCharArray());
ks.load(keyStoreFile, keyStoreFilePassword.toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(algorithm);
kmf.init(ks, keyStoreFilePassword.toCharArray());

Loading…
Cancel
Save