summaryrefslogtreecommitdiff
path: root/java/src/IceSSL/Instance.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2005-01-06 18:40:42 +0000
committerMark Spruiell <mes@zeroc.com>2005-01-06 18:40:42 +0000
commit452c92e3cd5f04494c98e6fd6b74f68aa2ffdad1 (patch)
tree937545a655542e73dda81b04f8b858d4639d4425 /java/src/IceSSL/Instance.java
parentadding ProtocolPluginFacade (diff)
downloadice-452c92e3cd5f04494c98e6fd6b74f68aa2ffdad1.tar.bz2
ice-452c92e3cd5f04494c98e6fd6b74f68aa2ffdad1.tar.xz
ice-452c92e3cd5f04494c98e6fd6b74f68aa2ffdad1.zip
refactoring; support for keystores, ciphersuites
Diffstat (limited to 'java/src/IceSSL/Instance.java')
-rw-r--r--java/src/IceSSL/Instance.java139
1 files changed, 139 insertions, 0 deletions
diff --git a/java/src/IceSSL/Instance.java b/java/src/IceSSL/Instance.java
new file mode 100644
index 00000000000..cd2247326d1
--- /dev/null
+++ b/java/src/IceSSL/Instance.java
@@ -0,0 +1,139 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+package IceSSL;
+
+class Instance
+{
+ Instance(Ice.Communicator communicator)
+ {
+ _facade = Ice.Util.getProtocolPluginFacade(communicator);
+ _securityTraceLevel = communicator.getProperties().getPropertyAsIntWithDefault("IceSSL.Trace.Security", 0);
+ _securityTraceCategory = "Security";
+
+ java.security.SecureRandom rand;
+ try
+ {
+ //
+ // Create a SecureRandom object. We call nextInt() in order to
+ // force the object to perform any time-consuming initialization tasks now.
+ //
+ rand = java.security.SecureRandom.getInstance("SHA1PRNG");
+
+ //
+ // We call nextInt() in order to force the object to perform any time-consuming
+ // initialization tasks now.
+ //
+ rand.nextInt();
+
+ }
+ catch(java.security.GeneralSecurityException ex)
+ {
+ Ice.PluginInitializationException e = new Ice.PluginInitializationException();
+ e.reason = "IceSSL: unable to initialize secure PRNG";
+ e.initCause(ex);
+ throw e;
+ }
+
+ try
+ {
+ _clientContext = createContext("Client", rand);
+ }
+ catch(java.security.GeneralSecurityException ex)
+ {
+ Ice.PluginInitializationException e = new Ice.PluginInitializationException();
+ e.reason = "IceSSL: unable to initialize client context";
+ e.initCause(ex);
+ throw e;
+ }
+
+ try
+ {
+ _serverContext = createContext("Server", rand);
+ }
+ catch(java.security.GeneralSecurityException ex)
+ {
+ Ice.PluginInitializationException e = new Ice.PluginInitializationException();
+ e.reason = "IceSSL: unable to initialize server context";
+ e.initCause(ex);
+ throw e;
+ }
+
+ _facade.addEndpointFactory(new SslEndpointFactory(this));
+ }
+
+ Ice.Communicator
+ communicator()
+ {
+ return _facade.getCommunicator();
+ }
+
+ String
+ defaultHost()
+ {
+ return _facade.getDefaultHost();
+ }
+
+ int
+ networkTraceLevel()
+ {
+ return _facade.getNetworkTraceLevel();
+ }
+
+ String
+ networkTraceCategory()
+ {
+ return _facade.getNetworkTraceCategory();
+ }
+
+ int
+ securityTraceLevel()
+ {
+ return _securityTraceLevel;
+ }
+
+ String
+ securityTraceCategory()
+ {
+ return _securityTraceCategory;
+ }
+
+ Context
+ clientContext()
+ {
+ return _clientContext;
+ }
+
+ Context
+ serverContext()
+ {
+ return _serverContext;
+ }
+
+ private Context
+ createContext(String mode, java.security.SecureRandom rand)
+ throws java.security.GeneralSecurityException
+ {
+ final String prefix = "IceSSL." + mode + ".";
+ Ice.Properties properties = communicator().getProperties();
+ String ciphers = properties.getProperty(prefix + "Ciphers");
+ String keyStore = properties.getProperty(prefix + "KeyStore");
+ String password = properties.getProperty(prefix + "Password");
+ String keyStorePassword = properties.getProperty(prefix + "KeyStorePassword");
+ String certs = properties.getProperty(prefix + "Certs");
+ String certsPassword = properties.getProperty(prefix + "CertsPassword");
+ return new Context(ciphers, keyStore, password, keyStorePassword, certs, certsPassword, rand);
+ }
+
+ private IceInternal.ProtocolPluginFacade _facade;
+ private int _securityTraceLevel;
+ private String _securityTraceCategory;
+ private Context _clientContext;
+ private Context _serverContext;
+}