diff options
author | Mark Spruiell <mes@zeroc.com> | 2005-01-06 18:40:42 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2005-01-06 18:40:42 +0000 |
commit | 452c92e3cd5f04494c98e6fd6b74f68aa2ffdad1 (patch) | |
tree | 937545a655542e73dda81b04f8b858d4639d4425 /java/src/IceSSL/Instance.java | |
parent | adding ProtocolPluginFacade (diff) | |
download | ice-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.java | 139 |
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; +} |