summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Freeze/.depend6
-rw-r--r--cpp/src/Glacier/CertVerifier.cpp114
-rw-r--r--cpp/src/Glacier/CertVerifier.h33
-rw-r--r--cpp/src/Glacier/GlacierI.cpp25
-rw-r--r--cpp/src/Glacier/GlacierI.h1
-rw-r--r--cpp/src/Glacier/GlacierRouter.cpp16
-rw-r--r--cpp/src/Glacier/Makefile3
-rw-r--r--cpp/src/Glacier/RouterI.cpp1
-rw-r--r--cpp/src/Ice/.depend37
-rw-r--r--cpp/src/Ice/CryptKey.h11
-rw-r--r--cpp/src/Ice/Cryptor.h13
-rw-r--r--cpp/src/Ice/LoggerI.cpp4
-rw-r--r--cpp/src/Ice/Makefile20
-rw-r--r--cpp/src/Ice/MessageAuthenticator.h15
-rw-r--r--cpp/src/Ice/SUdpClient.h16
-rw-r--r--cpp/src/Ice/SUdpClientControlChannel.cpp5
-rw-r--r--cpp/src/Ice/SUdpClientControlChannel.h28
-rw-r--r--cpp/src/Ice/SUdpControlChannel.cpp5
-rw-r--r--cpp/src/Ice/SUdpControlChannel.h26
-rw-r--r--cpp/src/Ice/SUdpServerControlChannel.cpp4
-rw-r--r--cpp/src/Ice/SUdpServerControlChannel.h39
-rw-r--r--cpp/src/Ice/SUdpTransceiver.h19
-rw-r--r--cpp/src/Ice/SecurityException2.cpp6
-rw-r--r--cpp/src/Ice/SslAcceptor.cpp2
-rw-r--r--cpp/src/Ice/SslBaseCerts.h14
-rw-r--r--cpp/src/Ice/SslCertificateAuthority.h16
-rw-r--r--cpp/src/Ice/SslCertificateDesc.h28
-rw-r--r--cpp/src/Ice/SslConfig.h33
-rw-r--r--cpp/src/Ice/SslConfigErrorReporter.h15
-rw-r--r--cpp/src/Ice/SslConnection.cpp20
-rw-r--r--cpp/src/Ice/SslConnection.h27
-rw-r--r--cpp/src/Ice/SslConnectionOpenSSL.cpp447
-rw-r--r--cpp/src/Ice/SslConnectionOpenSSL.h101
-rw-r--r--cpp/src/Ice/SslConnectionOpenSSLClient.cpp16
-rw-r--r--cpp/src/Ice/SslConnectionOpenSSLClient.h10
-rw-r--r--cpp/src/Ice/SslConnectionOpenSSLServer.cpp21
-rw-r--r--cpp/src/Ice/SslConnectionOpenSSLServer.h10
-rw-r--r--cpp/src/Ice/SslConnector.cpp2
-rw-r--r--cpp/src/Ice/SslFactory.cpp45
-rw-r--r--cpp/src/Ice/SslFactory.h36
-rw-r--r--cpp/src/Ice/SslGeneralConfig.h33
-rw-r--r--cpp/src/Ice/SslIceUtils.cpp34
-rw-r--r--cpp/src/Ice/SslIceUtils.h32
-rw-r--r--cpp/src/Ice/SslOpenSSLUtils.h8
-rw-r--r--cpp/src/Ice/SslRSACertificateGen.cpp6
-rw-r--r--cpp/src/Ice/SslRSAKeyPair.cpp40
-rw-r--r--cpp/src/Ice/SslRSAPrivateKey.cpp97
-rw-r--r--cpp/src/Ice/SslRSAPublicKey.cpp102
-rw-r--r--cpp/src/Ice/SslSystem.cpp97
-rw-r--r--cpp/src/Ice/SslSystem.h38
-rw-r--r--cpp/src/Ice/SslSystemOpenSSL.cpp418
-rw-r--r--cpp/src/Ice/SslSystemOpenSSL.h76
-rw-r--r--cpp/src/Ice/SslTempCerts.h14
-rw-r--r--cpp/src/IcePack/.depend2
54 files changed, 1453 insertions, 834 deletions
diff --git a/cpp/src/Freeze/.depend b/cpp/src/Freeze/.depend
index a6612f905dd..fc8c8736946 100644
--- a/cpp/src/Freeze/.depend
+++ b/cpp/src/Freeze/.depend
@@ -1 +1,7 @@
+DB.o: DB.cpp ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../../include/Freeze/DB.h ../../include/Ice/CommunicatorF.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/ObjectFactory.h
DBException.o: DBException.cpp ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../../include/Freeze/DBException.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/ObjectFactory.h
+Evictor.o: Evictor.cpp ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../../include/Freeze/Evictor.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Object.h ../../include/Ice/ObjectFactory.h
+DBI.o: DBI.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/Buffer.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Freeze/DBException.h ../Freeze/DBI.h ../../include/IceUtil/IceUtil.h ../../include/IceUtil/Functional.h ../../include/IceUtil/Unicode.h ../../include/IceUtil/UUID.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/RWRecMutex.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Base64.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Freeze/DB.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../Freeze/EvictorI.h ../../include/Freeze/Evictor.h ../Freeze/IdentityObjectDict.h ../../include/Freeze/Map.h ../../include/Freeze/Initialize.h
+EvictorI.o: EvictorI.cpp ../../include/Ice/Object.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Lock.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/StreamF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../Freeze/EvictorI.h ../../include/IceUtil/IceUtil.h ../../include/IceUtil/Functional.h ../../include/IceUtil/Unicode.h ../../include/IceUtil/UUID.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/RWRecMutex.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Base64.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Freeze/Evictor.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../Freeze/IdentityObjectDict.h ../../include/Freeze/Map.h ../../include/Freeze/DB.h ../../include/Freeze/EvictorF.h
+IdentityObjectDict.o: IdentityObjectDict.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/Buffer.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/IceXML/StreamI.h ../../include/Ice/Stream.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/CommunicatorF.h ../../include/IceUtil/OutputUtil.h ../Freeze/IdentityObjectDict.h ../../include/Freeze/Map.h ../../include/Freeze/DB.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/PropertiesF.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h
+Application.o: Application.cpp ../../include/Freeze/Application.h ../../include/Ice/Application.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Freeze/Freeze.h ../../include/Freeze/Initialize.h ../../include/Freeze/DBF.h ../../include/Freeze/DB.h ../../include/Freeze/DBException.h ../../include/Freeze/EvictorF.h ../../include/Freeze/Evictor.h ../../include/Freeze/Map.h
diff --git a/cpp/src/Glacier/CertVerifier.cpp b/cpp/src/Glacier/CertVerifier.cpp
new file mode 100644
index 00000000000..f99ee3ae277
--- /dev/null
+++ b/cpp/src/Glacier/CertVerifier.cpp
@@ -0,0 +1,114 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#include <Glacier/CertVerifier.h>
+#include <openssl/err.h>
+#include <algorithm>
+#include <iostream>
+
+using namespace std;
+
+CertVerifier::CertVerifier(const ByteSeq& publicKey) :
+ _publicKey(publicKey)
+{
+}
+
+int
+CertVerifier::verify(int preVerifyOkay, X509_STORE_CTX* x509StoreContext, SSL* sslConnection)
+{
+ // Short circuit - if the peer cert wasn't good enough for OpenSSL,
+ // it's not good enough for us to bother checking.
+ if (preVerifyOkay != 1)
+ {
+ return preVerifyOkay;
+ }
+
+ // For getting the CA certificate
+ X509* trustedCert = 0;
+ X509_OBJECT trustedObject;
+
+ // Get the peer certificate offered by whoever we're talking to.
+ X509* peerCertificate = x509StoreContext->cert;
+
+ // We only bother to do the rest of this if we have something to verify.
+ if (peerCertificate)
+ {
+ // Get the subject name (Not a memory leak, this is how this is used).
+ X509_NAME* peerCertName = X509_get_subject_name(peerCertificate);
+
+ // The Trusted Certificate by the same name.
+ int retCode = X509_STORE_get_by_subject(x509StoreContext,
+ X509_LU_X509,
+ peerCertName,
+ &trustedObject);
+
+ switch (retCode)
+ {
+ case X509_LU_X509:
+ {
+ trustedCert = trustedObject.data.x509;
+ break;
+ }
+
+ case X509_LU_RETRY:
+ {
+ // Log the error properly.
+ X509err(X509_F_X509_VERIFY_CERT, X509_R_SHOULD_RETRY);
+
+ // Drop through intended.
+ }
+
+ default :
+ {
+ // Regardless of error, if we can't look up the trusted
+ // certificate, then we fail out.
+
+ preVerifyOkay = 0;
+ break;
+ }
+ }
+ }
+
+ // Compare, only if we have both.
+ if (trustedCert)
+ {
+ ByteSeq peerByteSeq = toByteSeq(peerCertificate);
+ ByteSeq trustedByteSeq = toByteSeq(trustedCert);
+
+ // The presented certificate must exactly match one that is in
+ // the certificate store, and that must be the expected certificate.
+
+ preVerifyOkay = (peerByteSeq == trustedByteSeq) &&
+ (_publicKey == peerByteSeq);
+
+ X509_OBJECT_free_contents(&trustedObject);
+ }
+
+ return preVerifyOkay;
+}
+
+ByteSeq
+CertVerifier::toByteSeq(X509* certificate)
+{
+ ByteSeq certByteSeq;
+
+ // Convert the X509 to a unsigned char buffer.
+ unsigned int certSize = i2d_X509(certificate, 0);
+ unsigned char* certBuffer = new unsigned char[certSize];
+ unsigned char* certPtr = certBuffer;
+ i2d_X509(certificate, &certPtr);
+
+ // Yet another conversion to a ByteSeq (easy comparison this way).
+ copy(certBuffer, (certBuffer + certSize), back_inserter(certByteSeq));
+ delete []certBuffer;
+
+ return certByteSeq;
+}
+
diff --git a/cpp/src/Glacier/CertVerifier.h b/cpp/src/Glacier/CertVerifier.h
new file mode 100644
index 00000000000..d0b8490a614
--- /dev/null
+++ b/cpp/src/Glacier/CertVerifier.h
@@ -0,0 +1,33 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#ifndef GLACIER_CERT_VERIFIER_H
+#define GLACIER_CERT_VERIFIER_H
+
+#include <Ice/BuiltinSequences.h>
+#include <Ice/SslCertificateVerifierOpenSSL.h>
+
+using Ice::ByteSeq;
+
+class CertVerifier : public IceSecurity::Ssl::OpenSSL::CertificateVerifier
+{
+public:
+ CertVerifier(const ByteSeq&);
+
+ virtual int verify(int, X509_STORE_CTX*, SSL*);
+
+ ByteSeq toByteSeq(X509* certificate);
+
+protected:
+ ByteSeq _publicKey;
+};
+
+#endif
+
diff --git a/cpp/src/Glacier/GlacierI.cpp b/cpp/src/Glacier/GlacierI.cpp
index ac63f0eefd6..d70be2d3dd6 100644
--- a/cpp/src/Glacier/GlacierI.cpp
+++ b/cpp/src/Glacier/GlacierI.cpp
@@ -56,7 +56,7 @@ Glacier::StarterI::destroy()
}
RouterPrx
-Glacier::StarterI::startRouter(const string& userId, const string& password, ByteSeq& privateKey, ByteSeq& publicKey, const Current&)
+Glacier::StarterI::startRouter(const string& userId, const string& password, ByteSeq& privateKey, ByteSeq& publicKey, ByteSeq& routerCert, const Current&)
{
assert(_communicator); // Destroyed?
@@ -70,14 +70,9 @@ Glacier::StarterI::startRouter(const string& userId, const string& password, Byt
RSAKeyPairPtr clientKeyPair = _certificateGenerator.generate(_certContext);
RSAKeyPairPtr routerKeyPair = _certificateGenerator.generate(_certContext);
- // NOTE: These will probably be returned from this method, I would assume.
- ByteSeq clientPrivateKey;
- ByteSeq clientCertificate;
- ByteSeq routerCertificate;
-
clientKeyPair->keyToByteSeq(privateKey);
clientKeyPair->certToByteSeq(publicKey);
- routerKeyPair->certToByteSeq(routerCertificate);
+ routerKeyPair->certToByteSeq(routerCert);
// routerPrivateKeyBase64 and routerCertificateBase64 are passed to the
// router as the values for the properties
@@ -154,6 +149,11 @@ Glacier::StarterI::startRouter(const string& userId, const string& password, Byt
//
StringSeq args = _properties->getCommandLineOptions();
args.push_back("--Glacier.Router.Identity=" + uuid);
+ args.push_back("--Ice.Security.Ssl.Overrides.Server.RSA.PrivateKey=" + routerPrivateKeyBase64);
+ args.push_back("--Ice.Security.Ssl.Overrides.Server.RSA.Certificate=" + routerCertificateBase64);
+ args.push_back("--Ice.Security.Ssl.Overrides.Client.RSA.PrivateKey=" + routerPrivateKeyBase64);
+ args.push_back("--Ice.Security.Ssl.Overrides.Client.RSA.Certificate=" + routerCertificateBase64);
+ args.push_back("--Glacier.Router.AcceptCert=" + clientCertificateBase64);
ostringstream s;
s << "--Glacier.Router.PrintProxyOnFd=" << fds[1];
args.push_back(s.str());
@@ -188,6 +188,15 @@ Glacier::StarterI::startRouter(const string& userId, const string& password, Byt
args.push_back(arg);
}
}
+
+/*
+ StringSeq::iterator seqElem = args.begin();
+ while (seqElem != args.end())
+ {
+ cout << *seqElem << endl;
+ seqElem++;
+ }
+*/
//
// Convert to standard argc/argv.
@@ -204,7 +213,7 @@ Glacier::StarterI::startRouter(const string& userId, const string& password, Byt
assert(i == argc);
argv[0] = strdup(path.c_str());
argv[argc] = 0;
-
+
//
// Try to start the router.
//
diff --git a/cpp/src/Glacier/GlacierI.h b/cpp/src/Glacier/GlacierI.h
index 70bdad973dd..fa535758276 100644
--- a/cpp/src/Glacier/GlacierI.h
+++ b/cpp/src/Glacier/GlacierI.h
@@ -33,6 +33,7 @@ public:
const std::string&,
Ice::ByteSeq&,
Ice::ByteSeq&,
+ Ice::ByteSeq&,
const Ice::Current&);
private:
diff --git a/cpp/src/Glacier/GlacierRouter.cpp b/cpp/src/Glacier/GlacierRouter.cpp
index 792c13af8aa..f1e720bc54f 100644
--- a/cpp/src/Glacier/GlacierRouter.cpp
+++ b/cpp/src/Glacier/GlacierRouter.cpp
@@ -13,6 +13,9 @@
#include <Glacier/RouterI.h>
#include <Glacier/ClientBlobject.h>
#include <Glacier/ServerBlobject.h>
+#include <IceUtil/Base64.h>
+#include <Ice/Security.h>
+#include <Glacier/CertVerifier.h>
using namespace std;
using namespace Ice;
@@ -119,6 +122,19 @@ Glacier::Router::run(int argc, char* argv[])
PropertiesPtr properties = communicator()->getProperties();
//
+ // Set up our CertificateVerifier
+ //
+ string clientCertBase64 = properties->getProperty("Glacier.Router.AcceptCert");
+ Ice::ByteSeq clientCert = IceUtil::Base64::decode(clientCertBase64);
+ string sysIdentifier = properties->getProperty("Ice.Security.Ssl.Config");
+ IceSecurity::Ssl::SslContextType contextType = IceSecurity::Ssl::ClientServer;
+ IceSecurity::Ssl::CertificateVerifierPtr certVerifier = new CertVerifier(clientCert);
+ IceSecurity::Ssl::setSystemCertificateVerifier(sysIdentifier, contextType, certVerifier);
+
+ properties->setProperty("Ice.Security.Ssl.Overrides.Server.CACertificate", clientCertBase64);
+// IceSecurity::Ssl::setSystemCertAuthCertificate(sysIdentifier, contextType, clientCertBase64);
+
+ //
// Create routing table
//
IceInternal::RoutingTablePtr routingTable = new IceInternal::RoutingTable;
diff --git a/cpp/src/Glacier/Makefile b/cpp/src/Glacier/Makefile
index dc426d8540b..24874c031cd 100644
--- a/cpp/src/Glacier/Makefile
+++ b/cpp/src/Glacier/Makefile
@@ -26,7 +26,8 @@ OBJS = Glacier.o
ROBJS = GlacierRouter.o \
RouterI.o \
ClientBlobject.o \
- ServerBlobject.o
+ ServerBlobject.o \
+ CertVerifier.o
SOBJS = GlacierStarter.o \
GlacierI.o
diff --git a/cpp/src/Glacier/RouterI.cpp b/cpp/src/Glacier/RouterI.cpp
index b2e1ef3b395..1351081d683 100644
--- a/cpp/src/Glacier/RouterI.cpp
+++ b/cpp/src/Glacier/RouterI.cpp
@@ -10,6 +10,7 @@
#include <Ice/RoutingTable.h>
#include <Glacier/RouterI.h>
+#include <iostream>
using namespace std;
using namespace Ice;
diff --git a/cpp/src/Ice/.depend b/cpp/src/Ice/.depend
index 509f11df34c..536b53d58ce 100644
--- a/cpp/src/Ice/.depend
+++ b/cpp/src/Ice/.depend
@@ -53,33 +53,36 @@ TcpAcceptor.o: TcpAcceptor.cpp ../Ice/TcpAcceptor.h ../Ice/TransceiverF.h ../../
TcpTransceiver.o: TcpTransceiver.cpp ../Ice/TcpTransceiver.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Instance.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../../include/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../Ice/TraceLevels.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Buffer.h ../Ice/Network.h
SecurityException.o: SecurityException.cpp ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/SecurityException.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/ObjectFactory.h
SecurityException2.o: SecurityException2.cpp ../../include/Ice/SecurityException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h
-SslConnector.o: SslConnector.cpp ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../Ice/SslCertificateVerifierF.h ../Ice/SslSystem.h ../../include/IceUtil/Shared.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../Ice/TraceLevelsF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h ../Ice/SslConnector.h ../Ice/TransceiverF.h ../../include/Ice/InstanceF.h ../Ice/Connector.h ../Ice/ConnectorF.h ../Ice/SslTransceiver.h ../Ice/Transceiver.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../../include/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/Logger.h ../Ice/Network.h ../../include/Ice/SecurityException.h
-SslAcceptor.o: SslAcceptor.cpp ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../Ice/SslCertificateVerifierF.h ../Ice/SslSystem.h ../../include/IceUtil/Shared.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../Ice/TraceLevelsF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h ../Ice/SslAcceptor.h ../Ice/TransceiverF.h ../../include/Ice/InstanceF.h ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/SslTransceiver.h ../Ice/Transceiver.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../../include/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/Logger.h ../Ice/Network.h ../../include/Ice/SecurityException.h
-SslTransceiver.o: SslTransceiver.cpp ../Ice/Security.h ../Ice/SslConnection.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/Ice/Buffer.h ../../include/Ice/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../Ice/SslConnectionF.h ../Ice/SslCertificateVerifierF.h ../Ice/SslTransceiver.h ../../include/Ice/InstanceF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Instance.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../../include/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../Ice/TraceLevels.h ../../include/Ice/Logger.h ../Ice/Network.h
+SslConnector.o: SslConnector.cpp ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/SslCertificateVerifierF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/Security.h ../Ice/SslSystem.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../Ice/TraceLevelsF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h ../Ice/SslConnector.h ../Ice/TransceiverF.h ../../include/Ice/InstanceF.h ../Ice/Connector.h ../Ice/ConnectorF.h ../Ice/SslTransceiver.h ../Ice/Transceiver.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../../include/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/Logger.h ../Ice/Network.h ../../include/Ice/SecurityException.h
+SslAcceptor.o: SslAcceptor.cpp ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/SslCertificateVerifierF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/Security.h ../Ice/SslSystem.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../Ice/TraceLevelsF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h ../Ice/SslAcceptor.h ../Ice/TransceiverF.h ../../include/Ice/InstanceF.h ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/SslTransceiver.h ../Ice/Transceiver.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../../include/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/Logger.h ../Ice/Network.h ../../include/Ice/SecurityException.h
+SslTransceiver.o: SslTransceiver.cpp ../Ice/OpenSSL.h ../Ice/SslConnection.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/Ice/Buffer.h ../../include/Ice/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../Ice/SslConnectionF.h ../../include/Ice/SslCertificateVerifierF.h ../Ice/SslTransceiver.h ../../include/Ice/InstanceF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Instance.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../../include/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../Ice/TraceLevels.h ../../include/Ice/Logger.h ../Ice/Network.h
SslBaseCerts.o: SslBaseCerts.cpp ../Ice/SslBaseCerts.h ../Ice/SslCertificateDesc.h
SslCertificateAuthority.o: SslCertificateAuthority.cpp ../Ice/SslCertificateAuthority.h
SslCertificateDesc.o: SslCertificateDesc.cpp ../Ice/SslCertificateDesc.h
-SslConfig.o: SslConfig.cpp ../Ice/Security.h ../../include/Ice/SecurityException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslConfigErrorReporter.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../Ice/SslConfig.h ../Ice/SslCertificateDesc.h ../Ice/SslGeneralConfig.h ../Ice/SslSystemOpenSSL.h ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../Ice/SslCertificateVerifierF.h ../Ice/SslSystem.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../Ice/SslCertificateAuthority.h ../Ice/SslBaseCerts.h ../Ice/SslTempCerts.h
-SslConfigErrorReporter.o: SslConfigErrorReporter.cpp ../Ice/SslConfigErrorReporter.h ../Ice/TraceLevelsF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../../include/Ice/Logger.h ../Ice/Security.h
-SslConnection.o: SslConnection.cpp ../Ice/SslConnection.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/Ice/Buffer.h ../../include/Ice/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../Ice/SslConnectionF.h ../Ice/SslCertificateVerifierF.h
-SslConnectionOpenSSLClient.o: SslConnectionOpenSSLClient.cpp ../Ice/Network.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/Security.h ../../include/Ice/SecurityException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslConnectionOpenSSLClient.h ../Ice/SslConnectionOpenSSL.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslConnection.h ../../include/Ice/Buffer.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../Ice/SslConnectionF.h ../Ice/SslCertificateVerifierF.h ../Ice/SslSystemF.h ../Ice/SslConnectionOpenSSLF.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../../include/Ice/Logger.h
-SslConnectionOpenSSL.o: SslConnectionOpenSSL.cpp ../Ice/Network.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/Security.h ../../include/Ice/SecurityException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../Ice/SslCertificateVerifierF.h ../Ice/SslConnection.h ../../include/Ice/Buffer.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../Ice/SslConnectionF.h ../Ice/SslConnectionOpenSSL.h ../Ice/SslConnectionOpenSSLF.h ../Ice/SslSystemOpenSSL.h ../Ice/SslSystem.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../Ice/SslGeneralConfig.h ../Ice/SslCertificateDesc.h ../Ice/SslCertificateAuthority.h ../Ice/SslBaseCerts.h ../Ice/SslTempCerts.h ../Ice/SslCertificateVerifierOpenSSL.h ../Ice/SslCertificateVerifier.h ../Ice/SslOpenSSLUtils.h ../../include/Ice/Logger.h
-SslConnectionOpenSSLServer.o: SslConnectionOpenSSLServer.cpp ../Ice/Network.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/Security.h ../../include/Ice/SecurityException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslConnectionOpenSSLServer.h ../Ice/SslConnectionOpenSSL.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslConnection.h ../../include/Ice/Buffer.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../Ice/SslConnectionF.h ../Ice/SslCertificateVerifierF.h ../Ice/SslSystemF.h ../Ice/SslConnectionOpenSSLF.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../../include/Ice/Logger.h
-SslFactory.o: SslFactory.cpp ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../Ice/SslCertificateVerifierF.h ../Ice/SslSystemOpenSSL.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslSystem.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../Ice/SslGeneralConfig.h ../Ice/SslCertificateDesc.h ../Ice/SslCertificateAuthority.h ../Ice/SslBaseCerts.h ../Ice/SslTempCerts.h ../Ice/Security.h
-SslGeneralConfig.o: SslGeneralConfig.cpp ../Ice/SslGeneralConfig.h ../Ice/SslSystemOpenSSL.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../Ice/SslCertificateVerifierF.h ../Ice/SslSystem.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../Ice/SslCertificateDesc.h ../Ice/SslCertificateAuthority.h ../Ice/SslBaseCerts.h ../Ice/SslTempCerts.h
-SslSystem.o: SslSystem.cpp ../Ice/SslSystem.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../Ice/SslConnectionF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/Properties.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/SslSystemF.h ../Ice/SslCertificateVerifierF.h ../Ice/TraceLevels.h ../Ice/TraceLevelsF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h
+SslConfig.o: SslConfig.cpp ../Ice/OpenSSL.h ../../include/Ice/SecurityException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslConfigErrorReporter.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../Ice/SslConfig.h ../Ice/SslCertificateDesc.h ../Ice/SslGeneralConfig.h ../Ice/SslSystemOpenSSL.h ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../../include/Ice/SslCertificateVerifierF.h ../../include/Ice/Security.h ../Ice/SslSystem.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../Ice/SslCertificateAuthority.h ../Ice/SslBaseCerts.h ../Ice/SslTempCerts.h
+SslConfigErrorReporter.o: SslConfigErrorReporter.cpp ../Ice/SslConfigErrorReporter.h ../Ice/TraceLevelsF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../../include/Ice/Logger.h ../Ice/OpenSSL.h
+SslConnection.o: SslConnection.cpp ../Ice/SslConnection.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/Ice/Buffer.h ../../include/Ice/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../Ice/SslConnectionF.h ../../include/Ice/SslCertificateVerifierF.h
+SslConnectionOpenSSLClient.o: SslConnectionOpenSSLClient.cpp ../Ice/Network.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/OpenSSL.h ../../include/Ice/SecurityException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslConnectionOpenSSLClient.h ../Ice/SslConnectionOpenSSL.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslConnection.h ../../include/Ice/Buffer.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../Ice/SslConnectionF.h ../../include/Ice/SslCertificateVerifierF.h ../Ice/SslSystemF.h ../Ice/SslConnectionOpenSSLF.h ../../include/Ice/SslCertificateVerifier.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../../include/Ice/Logger.h
+SslConnectionOpenSSL.o: SslConnectionOpenSSL.cpp ../Ice/Network.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/OpenSSL.h ../../include/Ice/SecurityException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../../include/Ice/SslCertificateVerifierF.h ../../include/Ice/Security.h ../Ice/SslConnection.h ../../include/Ice/Buffer.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../Ice/SslConnectionF.h ../Ice/SslConnectionOpenSSL.h ../Ice/SslConnectionOpenSSLF.h ../../include/Ice/SslCertificateVerifier.h ../Ice/SslSystemOpenSSL.h ../Ice/SslSystem.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../Ice/SslGeneralConfig.h ../Ice/SslCertificateDesc.h ../Ice/SslCertificateAuthority.h ../Ice/SslBaseCerts.h ../Ice/SslTempCerts.h ../../include/Ice/SslCertificateVerifierOpenSSL.h ../Ice/SslOpenSSLUtils.h ../../include/Ice/Logger.h
+SslConnectionOpenSSLServer.o: SslConnectionOpenSSLServer.cpp ../Ice/Network.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/OpenSSL.h ../../include/Ice/SecurityException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslConnectionOpenSSLServer.h ../Ice/SslConnectionOpenSSL.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslConnection.h ../../include/Ice/Buffer.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../Ice/SslConnectionF.h ../../include/Ice/SslCertificateVerifierF.h ../Ice/SslSystemF.h ../Ice/SslConnectionOpenSSLF.h ../../include/Ice/SslCertificateVerifier.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../../include/Ice/Logger.h
+SslFactory.o: SslFactory.cpp ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/SslCertificateVerifierF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/Security.h ../Ice/SslSystemOpenSSL.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../Ice/SslSystem.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../Ice/SslGeneralConfig.h ../Ice/SslCertificateDesc.h ../Ice/SslCertificateAuthority.h ../Ice/SslBaseCerts.h ../Ice/SslTempCerts.h ../Ice/OpenSSL.h
+SslGeneralConfig.o: SslGeneralConfig.cpp ../Ice/SslGeneralConfig.h ../Ice/SslSystemOpenSSL.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SslFactory.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../Ice/SslSystemF.h ../../include/Ice/SslCertificateVerifierF.h ../../include/Ice/Security.h ../Ice/SslSystem.h ../Ice/SslConnectionF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../Ice/TraceLevels.h ../../include/Ice/PropertiesF.h ../Ice/SslCertificateDesc.h ../Ice/SslCertificateAuthority.h ../Ice/SslBaseCerts.h ../Ice/SslTempCerts.h
+SslSystem.o: SslSystem.cpp ../Ice/SslSystem.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../Ice/SslConnectionF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/Properties.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/SslSystemF.h ../../include/Ice/SslCertificateVerifierF.h ../Ice/TraceLevels.h ../Ice/TraceLevelsF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h
+SslSystemOpenSSL.o: SslSystemOpenSSL.cpp ../../include/IceUtil/Config.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Lock.h ../Ice/OpenSSL.h ../Ice/SslSystem.h ../../include/IceUtil/Shared.h ../Ice/SslConnectionF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/Properties.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/SslSystemF.h ../../include/Ice/SslCertificateVerifierF.h ../Ice/TraceLevels.h ../Ice/TraceLevelsF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h ../../include/Ice/SecurityException.h ../Ice/SslConnectionOpenSSLClient.h ../Ice/SslConnectionOpenSSL.h ../Ice/SslConnection.h ../../include/Ice/Buffer.h ../Ice/SslConnectionOpenSSLF.h ../../include/Ice/SslCertificateVerifier.h ../Ice/SslConnectionOpenSSLServer.h ../Ice/SslConfig.h ../Ice/SslCertificateDesc.h ../Ice/SslGeneralConfig.h ../Ice/SslSystemOpenSSL.h ../Ice/SslFactory.h ../../include/Ice/Security.h ../Ice/SslCertificateAuthority.h ../Ice/SslBaseCerts.h ../Ice/SslTempCerts.h ../../include/Ice/SslRSAKeyPair.h ../../include/Ice/SslRSAKeyPairF.h ../../include/Ice/SslRSACertificateGenF.h ../Ice/SslJanitors.h ../../include/Ice/SslCertificateVerifierOpenSSL.h ../../include/Ice/Logger.h
SslTempCerts.o: SslTempCerts.cpp ../Ice/SslTempCerts.h ../Ice/SslCertificateDesc.h
-SslCertificateVerifier.o: SslCertificateVerifier.cpp ../Ice/SslCertificateVerifier.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../Ice/SslCertificateVerifierF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h
-SslCertificateVerifierOpenSSL.o: SslCertificateVerifierOpenSSL.cpp ../Ice/SslCertificateVerifierOpenSSL.h ../Ice/SslCertificateVerifier.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../Ice/SslCertificateVerifierF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h
+SslCertificateVerifier.o: SslCertificateVerifier.cpp ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/SslCertificateVerifier.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/ObjectFactory.h
+SslCertificateVerifierOpenSSL.o: SslCertificateVerifierOpenSSL.cpp ../../include/Ice/SslCertificateVerifierOpenSSL.h ../../include/Ice/SslCertificateVerifier.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h
SslJanitors.o: SslJanitors.cpp ../Ice/SslJanitors.h ../../include/IceUtil/Config.h
+SslRSACertificateGen.o: SslRSACertificateGen.cpp ../../include/IceUtil/Config.h ../../include/Ice/SslRSACertificateGen.h ../../include/Ice/SslRSAKeyPairF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../Ice/SslJanitors.h ../../include/Ice/SslRSAKeyPair.h ../../include/IceUtil/Shared.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/SslRSACertificateGenF.h
+SslRSAKeyPair.o: SslRSAKeyPair.cpp ../../include/IceUtil/Config.h ../../include/IceUtil/Base64.h ../../include/Ice/SslRSAKeyPair.h ../../include/IceUtil/Shared.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/SslRSAKeyPairF.h ../../include/Ice/SslRSACertificateGenF.h
SslOpenSSLUtils.o: SslOpenSSLUtils.cpp ../Ice/SslOpenSSLUtils.h
UdpTransceiver.o: UdpTransceiver.cpp ../Ice/UdpTransceiver.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Instance.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../../include/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../Ice/TraceLevels.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Buffer.h ../Ice/Network.h
Cryptor.o: Cryptor.cpp ../Ice/Cryptor.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/CryptKeyF.h ../Ice/CryptorF.h ../Ice/CryptKey.h
CryptKey.o: CryptKey.cpp ../Ice/CryptKey.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/CryptKeyF.h
MessageAuthenticator.o: MessageAuthenticator.cpp ../Ice/MessageAuthenticator.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/MessageAuthenticatorF.h
SUdpClient.o: SUdpClient.cpp ../Ice/SUdpClient.h ../../include/Ice/SecureUdpF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/Stream.h ../../include/Ice/BuiltinSequences.h ../Ice/SUdpClientF.h ../Ice/MessageAuthenticatorF.h ../Ice/CryptKeyF.h ../Ice/CryptKey.h ../Ice/MessageAuthenticator.h ../../include/Ice/SecureUdp.h
-SUdpTransceiver.o: SUdpTransceiver.cpp ../Ice/Security.h ../Ice/SUdpTransceiver.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SUdpControlChannelF.h ../../include/Ice/SecureUdpF.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/Stream.h ../../include/Ice/BuiltinSequences.h ../Ice/UdpTransceiver.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/SUdpTransceiverF.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../Ice/TraceLevels.h ../../include/Ice/Logger.h ../Ice/Network.h ../Ice/SUdpClientControlChannel.h ../Ice/SUdpControlChannel.h ../Ice/CryptorF.h ../../include/Ice/SecureUdp.h ../Ice/CryptKeyF.h ../Ice/MessageAuthenticatorF.h ../Ice/SUdpServerControlChannel.h ../Ice/SUdpClientF.h
+SUdpTransceiver.o: SUdpTransceiver.cpp ../Ice/OpenSSL.h ../Ice/SUdpTransceiver.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../Ice/TraceLevelsF.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/SUdpControlChannelF.h ../../include/Ice/SecureUdpF.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/Stream.h ../../include/Ice/BuiltinSequences.h ../Ice/UdpTransceiver.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/SUdpTransceiverF.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../Ice/TraceLevels.h ../../include/Ice/Logger.h ../Ice/Network.h ../Ice/SUdpClientControlChannel.h ../Ice/SUdpControlChannel.h ../Ice/CryptorF.h ../../include/Ice/SecureUdp.h ../Ice/CryptKeyF.h ../Ice/MessageAuthenticatorF.h ../Ice/SUdpServerControlChannel.h ../Ice/SUdpClientF.h
SUdpControlChannel.o: SUdpControlChannel.cpp ../../include/Ice/Logger.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../Ice/TraceLevels.h ../Ice/TraceLevelsF.h ../../include/Ice/PropertiesF.h ../Ice/SUdpControlChannel.h ../../include/Ice/InstanceF.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/LoggerF.h ../Ice/SUdpControlChannelF.h ../Ice/SUdpTransceiverF.h ../Ice/CryptorF.h ../Ice/Cryptor.h ../../include/Ice/Stream.h ../../include/Ice/BuiltinSequences.h ../Ice/CryptKeyF.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../../include/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h
-SUdpServerControlChannel.o: SUdpServerControlChannel.cpp ../Ice/Security.h ../../include/Ice/Buffer.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/SUdpServerControlChannel.h ../Ice/SUdpControlChannel.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../Ice/TraceLevelsF.h ../Ice/SUdpControlChannelF.h ../Ice/SUdpTransceiverF.h ../Ice/CryptorF.h ../../include/Ice/SecureUdp.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/Stream.h ../../include/Ice/BuiltinSequences.h ../Ice/SUdpClientF.h ../Ice/SUdpClient.h ../../include/Ice/SecureUdpF.h ../Ice/MessageAuthenticatorF.h ../Ice/CryptKeyF.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/Communicator.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/IdentityUtil.h ../Ice/SUdpTransceiver.h ../Ice/UdpTransceiver.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/MessageAuthenticator.h ../Ice/Cryptor.h ../Ice/TraceLevels.h ../../include/Ice/Logger.h
-SUdpClientControlChannel.o: SUdpClientControlChannel.cpp ../Ice/Security.h ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/SUdpClientControlChannel.h ../Ice/SUdpControlChannel.h ../../include/Ice/InstanceF.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/SUdpControlChannelF.h ../Ice/SUdpTransceiverF.h ../Ice/CryptorF.h ../../include/Ice/SecureUdp.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../Ice/CryptKeyF.h ../Ice/MessageAuthenticatorF.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/Communicator.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/IdentityUtil.h ../Ice/SUdpTransceiver.h ../../include/Ice/SecureUdpF.h ../Ice/UdpTransceiver.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/MessageAuthenticator.h ../Ice/Cryptor.h ../Ice/CryptKey.h ../Ice/TraceLevels.h ../../include/Ice/Logger.h
+SUdpServerControlChannel.o: SUdpServerControlChannel.cpp ../Ice/OpenSSL.h ../../include/Ice/Buffer.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../Ice/SUdpServerControlChannel.h ../Ice/SUdpControlChannel.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/LoggerF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/Ice/StreamF.h ../Ice/TraceLevelsF.h ../Ice/SUdpControlChannelF.h ../Ice/SUdpTransceiverF.h ../Ice/CryptorF.h ../../include/Ice/SecureUdp.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/Stream.h ../../include/Ice/BuiltinSequences.h ../Ice/SUdpClientF.h ../Ice/SUdpClient.h ../../include/Ice/SecureUdpF.h ../Ice/MessageAuthenticatorF.h ../Ice/CryptKeyF.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/Communicator.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/IdentityUtil.h ../Ice/SUdpTransceiver.h ../Ice/UdpTransceiver.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/MessageAuthenticator.h ../Ice/Cryptor.h ../Ice/TraceLevels.h ../../include/Ice/Logger.h
+SUdpClientControlChannel.o: SUdpClientControlChannel.cpp ../Ice/OpenSSL.h ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../Ice/SUdpClientControlChannel.h ../Ice/SUdpControlChannel.h ../../include/Ice/InstanceF.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/LoggerF.h ../Ice/TraceLevelsF.h ../Ice/SUdpControlChannelF.h ../Ice/SUdpTransceiverF.h ../Ice/CryptorF.h ../../include/Ice/SecureUdp.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../Ice/CryptKeyF.h ../Ice/MessageAuthenticatorF.h ../Ice/Instance.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/ObjectFactoryManagerF.h ../Ice/UserExceptionFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/Communicator.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/IdentityUtil.h ../Ice/SUdpTransceiver.h ../../include/Ice/SecureUdpF.h ../Ice/UdpTransceiver.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/MessageAuthenticator.h ../Ice/Cryptor.h ../Ice/CryptKey.h ../Ice/TraceLevels.h ../../include/Ice/Logger.h
SecureUdp.o: SecureUdp.cpp ../../include/Ice/Stream.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/SecureUdp.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ObjectFactory.h
diff --git a/cpp/src/Ice/CryptKey.h b/cpp/src/Ice/CryptKey.h
index d31e42c1519..a673d02d3f9 100644
--- a/cpp/src/Ice/CryptKey.h
+++ b/cpp/src/Ice/CryptKey.h
@@ -21,17 +21,14 @@ namespace IceSecurity
namespace SecureUdp
{
-using IceUtil::Shared;
-using Ice::ByteSeq;
-
-class CryptKey : public Shared
+class CryptKey : public IceUtil::Shared
{
public:
- CryptKey(const ByteSeq&);
+ CryptKey(const Ice::ByteSeq&);
virtual ~CryptKey();
- virtual const ByteSeq& toByteSeq() const;
+ virtual const Ice::ByteSeq& toByteSeq() const;
//
// Compare CryptKeys for sorting purposes
@@ -41,7 +38,7 @@ public:
virtual bool operator<(const CryptKey&) const;
protected:
- ByteSeq _keyBytes;
+ Ice::ByteSeq _keyBytes;
};
diff --git a/cpp/src/Ice/Cryptor.h b/cpp/src/Ice/Cryptor.h
index 105de9d3212..35554c96a35 100644
--- a/cpp/src/Ice/Cryptor.h
+++ b/cpp/src/Ice/Cryptor.h
@@ -23,12 +23,9 @@ namespace IceSecurity
namespace SecureUdp
{
-using IceUtil::Shared;
-using Ice::ByteSeq;
-
typedef std::vector<CryptKeyPtr> CryptKeys;
-class Cryptor : public Shared
+class Cryptor : public IceUtil::Shared
{
public:
@@ -37,13 +34,13 @@ public:
virtual const CryptKeyPtr getNewKey();
- virtual const CryptKeyPtr getKey(const ByteSeq&);
+ virtual const CryptKeyPtr getKey(const Ice::ByteSeq&);
- virtual const CryptKeyPtr getOrCreateKey(const ByteSeq&);
+ virtual const CryptKeyPtr getOrCreateKey(const Ice::ByteSeq&);
- virtual void encrypt(const CryptKeyPtr&, const ByteSeq&, ByteSeq&);
+ virtual void encrypt(const CryptKeyPtr&, const Ice::ByteSeq&, Ice::ByteSeq&);
- virtual void decrypt(const CryptKeyPtr&, const ByteSeq&, ByteSeq&);
+ virtual void decrypt(const CryptKeyPtr&, const Ice::ByteSeq&, Ice::ByteSeq&);
protected:
CryptKeys _cryptKeys;
diff --git a/cpp/src/Ice/LoggerI.cpp b/cpp/src/Ice/LoggerI.cpp
index 9bde275fded..e320af6b06c 100644
--- a/cpp/src/Ice/LoggerI.cpp
+++ b/cpp/src/Ice/LoggerI.cpp
@@ -18,7 +18,9 @@ void
Ice::LoggerI::trace(const string& category, const string& message)
{
IceUtil::Mutex::Lock sync(*this);
- string s = "[ " + category + ": " + message + " ]";
+ ostringstream thread;
+ thread << dec << getpid();
+ string s = "[ " + category + ": Thread(" + thread.str() + ") "+ message + " ]";
string::size_type idx = 0;
while ((idx = s.find("\n", idx)) != string::npos)
{
diff --git a/cpp/src/Ice/Makefile b/cpp/src/Ice/Makefile
index ad4b54c56ed..cac3f77defd 100644
--- a/cpp/src/Ice/Makefile
+++ b/cpp/src/Ice/Makefile
@@ -94,6 +94,9 @@ OBJS = Initialize.o \
SslCertificateVerifierOpenSSL.o \
SslJanitors.o \
SslRSACertificateGen.o \
+ SslIceUtils.o \
+ SslRSAPrivateKey.o \
+ SslRSAPublicKey.o \
SslRSAKeyPair.o \
SslOpenSSLUtils.o \
UdpTransceiver.o \
@@ -234,6 +237,23 @@ $(HDIR)/SecureUdpF.h: $(SDIR)/SecureUdpF.ice $(SLICE2CPP)
clean::
rm -f $(HDIR)/SecureUdpF.h
+$(HDIR)/SslCertificateVerifier.h SslCertificateVerifier.cpp: $(SDIR)/SslCertificateVerifier.ice $(SLICE2CPP)
+ rm -f $(HDIR)/SslCertificateVerifier.h SslCertificateVerifier.cpp
+ $(SLICECMD) $(SDIR)/SslCertificateVerifier.ice
+ mv SslCertificateVerifier.h $(HDIR)
+
+clean::
+ rm -f $(HDIR)/SslCertificateVerifier.h SslCertificateVerifier.cpp
+
+$(HDIR)/SslCertificateVerifierF.h: $(SDIR)/SslCertificateVerifierF.ice $(SLICE2CPP)
+ rm -f $(HDIR)/SslCertificateVerifierF.h SslCertificateVerifierF.cpp
+ $(SLICECMD) $(SDIR)/SslCertificateVerifierF.ice
+ mv SslCertificateVerifierF.h $(HDIR)
+ rm -f SslCertificateVerifierF.cpp
+
+clean::
+ rm -f $(HDIR)/SslCertificateVerifierF.h
+
$(HDIR)/ServantLocator.h ServantLocator.cpp: $(SDIR)/ServantLocator.ice $(SLICE2CPP)
rm -f $(HDIR)/ServantLocator.h ServantLocator.cpp
$(SLICECMD) $(SDIR)/ServantLocator.ice
diff --git a/cpp/src/Ice/MessageAuthenticator.h b/cpp/src/Ice/MessageAuthenticator.h
index 246961426e0..b20f4bbaa67 100644
--- a/cpp/src/Ice/MessageAuthenticator.h
+++ b/cpp/src/Ice/MessageAuthenticator.h
@@ -21,25 +21,22 @@ namespace IceSecurity
namespace SecureUdp
{
-using IceUtil::Shared;
-using Ice::ByteSeq;
-
-class MessageAuthenticator : public Shared
+class MessageAuthenticator : public IceUtil::Shared
{
public:
MessageAuthenticator();
- MessageAuthenticator(const ByteSeq&);
+ MessageAuthenticator(const Ice::ByteSeq&);
virtual ~MessageAuthenticator();
- virtual ByteSeq computeMAC(const ByteSeq&) const;
+ virtual Ice::ByteSeq computeMAC(const Ice::ByteSeq&) const;
- virtual bool authenticate(const ByteSeq&, const ByteSeq&);
+ virtual bool authenticate(const Ice::ByteSeq&, const Ice::ByteSeq&);
- virtual const ByteSeq& getMACKey() const;
+ virtual const Ice::ByteSeq& getMACKey() const;
protected:
- ByteSeq _macKeyBytes;
+ Ice::ByteSeq _macKeyBytes;
};
diff --git a/cpp/src/Ice/SUdpClient.h b/cpp/src/Ice/SUdpClient.h
index 5b8e5b39bac..b78ff63da07 100644
--- a/cpp/src/Ice/SUdpClient.h
+++ b/cpp/src/Ice/SUdpClient.h
@@ -24,15 +24,11 @@ namespace IceSecurity
namespace SecureUdp
{
-using Ice::Long;
-using Ice::ByteSeq;
-using IceUtil::Shared;
-
-class SUdpClient : public Shared
+class SUdpClient : public IceUtil::Shared
{
public:
- SUdpClient(Long, const ClientChannelPrx&, const MessageAuthenticatorPtr&);
+ SUdpClient(Ice::Long, const ClientChannelPrx&, const MessageAuthenticatorPtr&);
virtual ~SUdpClient();
void serverHello(const CryptKeyPtr&);
@@ -41,17 +37,17 @@ public:
void serverGoodbye();
- void setNewCryptKey(Long, const CryptKeyPtr&);
+ void setNewCryptKey(Ice::Long, const CryptKeyPtr&);
- Long getClientID() const;
+ Ice::Long getClientID() const;
const CryptKeyPtr& getCryptKey() const;
- const CryptKeyPtr& getCryptKey(Long) const;
+ const CryptKeyPtr& getCryptKey(Ice::Long) const;
const MessageAuthenticatorPtr& getMessageAuthenticator() const;
protected:
- Long _clientID;
+ Ice::Long _clientID;
ClientChannelPrx _clientChannel;
MessageAuthenticatorPtr _messageAuthenticator;
CryptKeyPtr _cryptKey;
diff --git a/cpp/src/Ice/SUdpClientControlChannel.cpp b/cpp/src/Ice/SUdpClientControlChannel.cpp
index 58acd881baf..fd393dcc73c 100644
--- a/cpp/src/Ice/SUdpClientControlChannel.cpp
+++ b/cpp/src/Ice/SUdpClientControlChannel.cpp
@@ -27,6 +27,9 @@ using namespace std;
using namespace Ice;
using namespace IceSecurity::SecureUdp;
using IceInternal::BasicStream;
+using IceInternal::InstancePtr;
+using IceInternal::SUdpTransceiver;
+using IceInternal::Buffer;
////////////////////////////////////////////////////////////////////////////////
// Public Incoming Methods (from Ice Client Control Channel)
@@ -41,7 +44,6 @@ IceSecurity::SecureUdp::ClientControlChannel::serverHello(Long clientID, const B
// TODO: There is a wierd segmentation fault happening here if I uncomment
// the call to serverKeyChangeMessage(). Dunno why.
- // ICE_DEV_DEBUG("About to call serverKeyChangeMessage()");
// serverKeyChangeMessage(key);
}
@@ -65,7 +67,6 @@ IceSecurity::SecureUdp::ClientControlChannel::serverGoodbye(const Current&)
// Protected Methods
////////////////////////////////////////////////////////////////////////////////
-// IceSecurity::SecureUdp::ClientControlChannel::ClientControlChannel(const SUdpTransceiverPtr& transceiver,
IceSecurity::SecureUdp::ClientControlChannel::ClientControlChannel(SUdpTransceiver* transceiver,
const InstancePtr& instance,
const std::string& host,
diff --git a/cpp/src/Ice/SUdpClientControlChannel.h b/cpp/src/Ice/SUdpClientControlChannel.h
index f507de86d63..69528333017 100644
--- a/cpp/src/Ice/SUdpClientControlChannel.h
+++ b/cpp/src/Ice/SUdpClientControlChannel.h
@@ -23,48 +23,40 @@ namespace IceSecurity
namespace SecureUdp
{
-using IceInternal::SUdpTransceiver;
-using IceInternal::Buffer;
-using Ice::Long;
-using Ice::ByteSeq;
-using Ice::Current;
-
-
class ClientControlChannel : public ControlChannel, public ClientChannel
{
public:
// Messages received from the Server
- virtual void serverHello(Long, const ByteSeq&, const Current&);
- virtual void serverKeyChange(const ByteSeq&, const Current&);
- virtual void serverGoodbye(const Current&);
+ virtual void serverHello(Ice::Long, const Ice::ByteSeq&, const Ice::Current&);
+ virtual void serverKeyChange(const Ice::ByteSeq&, const Ice::Current&);
+ virtual void serverGoodbye(const Ice::Current&);
protected:
- // ClientControlChannel(const SUdpTransceiverPtr&, const InstancePtr&, const std::string&, int);
- ClientControlChannel(SUdpTransceiver*, const InstancePtr&, const std::string&, int);
+ // ClientControlChannel(const IceInternal::SUdpTransceiverPtr&, const Ice::InstancePtr&, const std::string&, int);
+ ClientControlChannel(IceInternal::SUdpTransceiver*, const IceInternal::InstancePtr&, const std::string&, int);
virtual ~ClientControlChannel();
- void serverKeyChangeMessage(const ByteSeq&);
+ void serverKeyChangeMessage(const Ice::ByteSeq&);
void clientHello();
friend IceInternal::SUdpTransceiver;
- // Called from the SUdpTransceiver
- void encryptPacket(Buffer&, Buffer&);
+ // Called from the IceInternal::SUdpTransceiver
+ void encryptPacket(IceInternal::Buffer&, IceInternal::Buffer&);
void clientKeyRequest();
-
Ice::ObjectAdapterPtr _adapter;
ClientChannelPrx _clientProxy;
ServerChannelPrx _serverChannel;
- Long _msgID;
- Long _clientID;
+ Ice::Long _msgID;
+ Ice::Long _clientID;
CryptKeyPtr _encryptionKey;
MessageAuthenticatorPtr _messageAuthenticator;
diff --git a/cpp/src/Ice/SUdpControlChannel.cpp b/cpp/src/Ice/SUdpControlChannel.cpp
index 6d78b435404..a82a08017fa 100644
--- a/cpp/src/Ice/SUdpControlChannel.cpp
+++ b/cpp/src/Ice/SUdpControlChannel.cpp
@@ -20,9 +20,8 @@ using namespace Ice;
void ::IceInternal::incRef(::IceSecurity::SecureUdp::ControlChannel* p) { p->__incRef(); }
void ::IceInternal::decRef(::IceSecurity::SecureUdp::ControlChannel* p) { p->__decRef(); }
-// IceSecurity::SecureUdp::ControlChannel::ControlChannel(const SUdpTransceiverPtr& transceiver,
-IceSecurity::SecureUdp::ControlChannel::ControlChannel(SUdpTransceiver* transceiver,
- const InstancePtr& instance) :
+IceSecurity::SecureUdp::ControlChannel::ControlChannel(IceInternal::SUdpTransceiver* transceiver,
+ const IceInternal::InstancePtr& instance) :
_transceiver(transceiver),
_instance(instance),
_traceLevels(instance->traceLevels()),
diff --git a/cpp/src/Ice/SUdpControlChannel.h b/cpp/src/Ice/SUdpControlChannel.h
index b83d57cce51..b6c7dc8e6f3 100644
--- a/cpp/src/Ice/SUdpControlChannel.h
+++ b/cpp/src/Ice/SUdpControlChannel.h
@@ -26,32 +26,24 @@ namespace IceSecurity
namespace SecureUdp
{
-// using IceInternal::SUdpTransceiverPtr;
-using IceInternal::SUdpTransceiver;
-using IceInternal::InstancePtr;
-using IceUtil::Shared;
-using IceUtil::Mutex;
-using IceInternal::TraceLevelsPtr;
-using Ice::LoggerPtr;
-
-class ControlChannel : public virtual Shared
+class ControlChannel : public virtual IceUtil::Shared
{
protected:
- // ControlChannel(const SUdpTransceiverPtr&, const InstancePtr&);
- ControlChannel(SUdpTransceiver*, const InstancePtr&);
+ // ControlChannel(const IceInternal::SUdpTransceiverPtr&, const IceInternal::InstancePtr&);
+ ControlChannel(IceInternal::SUdpTransceiver*, const IceInternal::InstancePtr&);
virtual ~ControlChannel();
virtual void unsetTransceiver();
friend IceInternal::SUdpTransceiver;
- // SUdpTransceiverPtr _transceiver;
- SUdpTransceiver* _transceiver;
- InstancePtr _instance;
- TraceLevelsPtr _traceLevels;
- LoggerPtr _logger;
- Mutex _mutex;
+ // IceInternal::SUdpTransceiverPtr _transceiver;
+ IceInternal::SUdpTransceiver* _transceiver;
+ IceInternal::InstancePtr _instance;
+ IceInternal::TraceLevelsPtr _traceLevels;
+ Ice::LoggerPtr _logger;
+ IceUtil::Mutex _mutex;
CryptorPtr _cryptor;
};
diff --git a/cpp/src/Ice/SUdpServerControlChannel.cpp b/cpp/src/Ice/SUdpServerControlChannel.cpp
index 338ea9bc435..e43f62b378f 100644
--- a/cpp/src/Ice/SUdpServerControlChannel.cpp
+++ b/cpp/src/Ice/SUdpServerControlChannel.cpp
@@ -8,7 +8,7 @@
//
// **********************************************************************
-#include <Ice/OpenSSL.h>
+#include <Ice/OpenSSL.h>
#include <Ice/Buffer.h>
#include <Ice/SUdpServerControlChannel.h>
#include <Ice/SUdpClient.h>
@@ -29,6 +29,8 @@ using namespace Ice;
using namespace IceSecurity::SecureUdp;
using IceInternal::Buffer;
using IceInternal::BasicStream;
+using IceInternal::InstancePtr;
+using IceInternal::SUdpTransceiver;
void
IceSecurity::SecureUdp::ServerControlChannel::clientHello(const ClientChannelPrx& client,
diff --git a/cpp/src/Ice/SUdpServerControlChannel.h b/cpp/src/Ice/SUdpServerControlChannel.h
index 19843e9d8e5..873bbbe829e 100644
--- a/cpp/src/Ice/SUdpServerControlChannel.h
+++ b/cpp/src/Ice/SUdpServerControlChannel.h
@@ -24,21 +24,14 @@ namespace IceSecurity
namespace SecureUdp
{
-// typedef pair<Long, CryptKeyPtr> MsgKeyPair;
+// typedef pair<Ice::Long, CryptKeyPtr> MsgKeyPair;
// typedef vector<MsgKeyPair> MsgKeyVector;
// Encryption key and historical list
// MsgKeyVector _msgEncryptionKeys;
// MsgKeyPair _currentEncryptionInfo;
-using IceInternal::Buffer;
-using IceInternal::SUdpTransceiver;
-using Ice::ObjectAdapterPtr;
-using Ice::Long;
-using Ice::ByteSeq;
-using Ice::Current;
-
-typedef std::map<Long, SUdpClientPtr> SUdpClientMap;
+typedef std::map<Ice::Long, SUdpClientPtr> SUdpClientMap;
class ServerControlChannel : public ControlChannel, public ServerChannel
{
@@ -46,36 +39,36 @@ class ServerControlChannel : public ControlChannel, public ServerChannel
public:
// Messages received from Client
- virtual void clientHello(const ClientChannelPrx&, const ByteSeq&, const Current&);
- virtual void clientKeyAcknowledge(Long, Long, const ByteSeq&, const Current&);
- virtual void clientKeyRequest(Long, const Current&);
- virtual void clientGoodbye(Long, const Current&);
+ virtual void clientHello(const ClientChannelPrx&, const Ice::ByteSeq&, const Ice::Current&);
+ virtual void clientKeyAcknowledge(Ice::Long, Ice::Long, const Ice::ByteSeq&, const Ice::Current&);
+ virtual void clientKeyRequest(Ice::Long, const Ice::Current&);
+ virtual void clientGoodbye(Ice::Long, const Ice::Current&);
protected:
- // ServerControlChannel(const SUdpTransceiverPtr&, const InstancePtr&, int);
- ServerControlChannel(SUdpTransceiver*, const InstancePtr&, int);
+ // ServerControlChannel(const IceInternal::SUdpTransceiverPtr&, const InstancePtr&, int);
+ ServerControlChannel(IceInternal::SUdpTransceiver*, const IceInternal::InstancePtr&, int);
virtual ~ServerControlChannel();
friend IceInternal::SUdpTransceiver;
- void decryptPacket(Buffer&, Buffer&);
- Long getNewClientID();
+ void decryptPacket(IceInternal::Buffer&, IceInternal::Buffer&);
+ Ice::Long getNewClientID();
- SUdpClientPtr& getSUdpClient(Long);
+ SUdpClientPtr& getSUdpClient(Ice::Long);
void newSUdpClient(const SUdpClientPtr&);
- void deleteSUdpClient(Long);
+ void deleteSUdpClient(Ice::Long);
- ObjectAdapterPtr _adapter;
+ Ice::ObjectAdapterPtr _adapter;
// Keep a listing of all clients connected to us.
SUdpClientMap _clientMap;
- Mutex _clientMapMutex;
+ IceUtil::Mutex _clientMapMutex;
// Generate unique Client ID numbers
- Long _clientIDGenerator;
- Mutex _clientIDMutex;
+ Ice::Long _clientIDGenerator;
+ IceUtil::Mutex _clientIDMutex;
};
}
diff --git a/cpp/src/Ice/SUdpTransceiver.h b/cpp/src/Ice/SUdpTransceiver.h
index cee138eb0a7..4cc66816bc4 100644
--- a/cpp/src/Ice/SUdpTransceiver.h
+++ b/cpp/src/Ice/SUdpTransceiver.h
@@ -28,11 +28,6 @@
namespace IceInternal
{
-using Ice::ByteSeq;
-using Ice::Long;
-using IceSecurity::SecureUdp::ClientChannelPtr;
-using IceSecurity::SecureUdp::ControlChannelPtr;
-
class SUdpEndpoint;
class SUdpTransceiver : public Transceiver
@@ -51,14 +46,14 @@ public:
int effectivePort();
// Server Channel Implementation methods
- void clientHello(const ClientChannelPtr&, const ByteSeq&);
- void clientKeyAcknowledge(Long, Long, const ByteSeq&);
- void clientKeyRequest(Long);
- void clientGoodbye(Long);
+ void clientHello(const IceSecurity::SecureUdp::ClientChannelPtr&, const Ice::ByteSeq&);
+ void clientKeyAcknowledge(Ice::Long, Ice::Long, const Ice::ByteSeq&);
+ void clientKeyRequest(Ice::Long);
+ void clientGoodbye(Ice::Long);
// Client Channel Implementation methods
- void serverHello(Long, const ByteSeq&);
- void serverKeyChange(const ByteSeq&);
+ void serverHello(Ice::Long, const Ice::ByteSeq&);
+ void serverKeyChange(const Ice::ByteSeq&);
void serverGoodbye();
private:
@@ -73,7 +68,7 @@ private:
void createControlChannel(int);
UdpTransceiver _udpTransceiver;
- ControlChannelPtr _controlChannel;
+ IceSecurity::SecureUdp::ControlChannelPtr _controlChannel;
InstancePtr _instance;
TraceLevelsPtr _traceLevels;
diff --git a/cpp/src/Ice/SecurityException2.cpp b/cpp/src/Ice/SecurityException2.cpp
index 3d2fd179411..b51f79ec6e3 100644
--- a/cpp/src/Ice/SecurityException2.cpp
+++ b/cpp/src/Ice/SecurityException2.cpp
@@ -59,6 +59,12 @@ IceSecurity::Ssl::CertificateException::ice_print(ostream& out) const
}
void
+IceSecurity::Ssl::CertificateVerifierTypeException::ice_print(ostream& out) const
+{
+ SecurityException::ice_print(out);
+}
+
+void
IceSecurity::Ssl::OpenSSL::ContextException::ice_print(ostream& out) const
{
SecurityException::ice_print(out);
diff --git a/cpp/src/Ice/SslAcceptor.cpp b/cpp/src/Ice/SslAcceptor.cpp
index 556f192d1ea..39a2e4c3b40 100644
--- a/cpp/src/Ice/SslAcceptor.cpp
+++ b/cpp/src/Ice/SslAcceptor.cpp
@@ -112,7 +112,7 @@ IceInternal::SslAcceptor::accept(int timeout)
// This is the Ice SSL Configuration File on which we will base
// all connections in this communicator.
- string configFile = properties->getProperty("Ice.Ssl.Config");
+ string configFile = properties->getProperty("Ice.Security.Ssl.Config");
// Get an instance of the SslSystem singleton.
SystemPtr sslSystem = Factory::getSystem(configFile);
diff --git a/cpp/src/Ice/SslBaseCerts.h b/cpp/src/Ice/SslBaseCerts.h
index b423813441e..d22102e51fa 100644
--- a/cpp/src/Ice/SslBaseCerts.h
+++ b/cpp/src/Ice/SslBaseCerts.h
@@ -39,30 +39,28 @@ protected:
DiffieHellmanParamsFile _dhParams;
};
-using std::endl;
-
template<class Stream>
inline Stream& operator << (Stream& target, const BaseCertificates& baseCerts)
{
if (baseCerts.getRSACert().getKeySize() != 0)
{
- target << "RSA\n{" << endl;
+ target << "RSA\n{" << std::endl;
target << baseCerts.getRSACert();
- target << "}\n" << endl;
+ target << "}\n" << std::endl;
}
if (baseCerts.getDSACert().getKeySize() != 0)
{
- target << "DSA\n{" << endl;
+ target << "DSA\n{" << std::endl;
target << baseCerts.getDSACert();
- target << "}\n" << endl;
+ target << "}\n" << std::endl;
}
if (baseCerts.getDHParams().getKeySize() != 0)
{
- target << "DH\n{" << endl;
+ target << "DH\n{" << std::endl;
target << baseCerts.getDHParams();
- target << "}\n" << endl;
+ target << "}\n" << std::endl;
}
return target;
diff --git a/cpp/src/Ice/SslCertificateAuthority.h b/cpp/src/Ice/SslCertificateAuthority.h
index 1cd72d3a482..468dbc48fcf 100644
--- a/cpp/src/Ice/SslCertificateAuthority.h
+++ b/cpp/src/Ice/SslCertificateAuthority.h
@@ -19,25 +19,23 @@ namespace IceSecurity
namespace Ssl
{
-using namespace std;
-
class CertificateAuthority
{
public:
CertificateAuthority();
- CertificateAuthority(string&, string&);
+ CertificateAuthority(std::string&, std::string&);
CertificateAuthority(CertificateAuthority&);
- void setCAFileName(string&);
- void setCAPath(string&);
+ void setCAFileName(std::string&);
+ void setCAPath(std::string&);
- inline const string& getCAFileName() const { return _fileName; };
- inline const string& getCAPath() const { return _path; };
+ inline const std::string& getCAFileName() const { return _fileName; };
+ inline const std::string& getCAPath() const { return _path; };
private:
- string _fileName;
- string _path;
+ std::string _fileName;
+ std::string _path;
};
}
diff --git a/cpp/src/Ice/SslCertificateDesc.h b/cpp/src/Ice/SslCertificateDesc.h
index 830b3df076f..852c7d121a4 100644
--- a/cpp/src/Ice/SslCertificateDesc.h
+++ b/cpp/src/Ice/SslCertificateDesc.h
@@ -24,23 +24,19 @@ namespace IceSecurity
namespace Ssl
{
-using std::string;
-using std::ostream;
-using std::vector;
-
class CertificateFile
{
public:
CertificateFile();
- CertificateFile(const string&, const int);
+ CertificateFile(const std::string&, const int);
CertificateFile(const CertificateFile&);
- inline string getFileName() const { return _fileName; };
+ inline std::string getFileName() const { return _fileName; };
inline int getEncoding() const { return _encoding; };
protected:
- string _fileName;
+ std::string _fileName;
int _encoding;
};
@@ -49,7 +45,7 @@ class DiffieHellmanParamsFile : public CertificateFile
public:
DiffieHellmanParamsFile();
- DiffieHellmanParamsFile(const int, const string&, const int);
+ DiffieHellmanParamsFile(const int, const std::string&, const int);
DiffieHellmanParamsFile(const DiffieHellmanParamsFile&);
inline int getKeySize() const { return _keySize; };
@@ -77,9 +73,9 @@ protected:
CertificateFile _private;
};
-typedef vector<CertificateDesc> RSAVector;
-typedef vector<CertificateDesc> DSAVector;
-typedef vector<DiffieHellmanParamsFile> DHVector;
+typedef std::vector<CertificateDesc> RSAVector;
+typedef std::vector<CertificateDesc> DSAVector;
+typedef std::vector<DiffieHellmanParamsFile> DHVector;
template<class Stream>
inline Stream& operator << (Stream& target, const CertificateFile& certFile)
@@ -101,8 +97,8 @@ inline Stream& operator << (Stream& target, const DiffieHellmanParamsFile& dhPar
{
if (dhParams.getKeySize() != 0)
{
- target << "Keysize: " << dhParams.getKeySize() << endl;
- target << "File: " << ((CertificateFile&)dhParams) << endl;
+ target << "Keysize: " << dhParams.getKeySize() << std::endl;
+ target << "File: " << ((CertificateFile&)dhParams) << std::endl;
}
return target;
@@ -113,9 +109,9 @@ inline Stream& operator << (Stream& target, const CertificateDesc& certDesc)
{
if (certDesc.getKeySize() != 0)
{
- target << "Keysize: " << certDesc.getKeySize() << endl;
- target << "Public: " << certDesc.getPublic() << endl;
- target << "Private: " << certDesc.getPrivate() << endl;
+ target << "Keysize: " << certDesc.getKeySize() << std::endl;
+ target << "Public: " << certDesc.getPublic() << std::endl;
+ target << "Private: " << certDesc.getPrivate() << std::endl;
}
return target;
diff --git a/cpp/src/Ice/SslConfig.h b/cpp/src/Ice/SslConfig.h
index 954b44e2d5f..acc5371cd3d 100644
--- a/cpp/src/Ice/SslConfig.h
+++ b/cpp/src/Ice/SslConfig.h
@@ -11,17 +11,15 @@
#ifndef ICE_SSL_CONFIG_H
#define ICE_SSL_CONFIG_H
-#include <string>
-
#include <dom/DOM.hpp>
#include <Ice/TraceLevelsF.h>
#include <Ice/LoggerF.h>
-
#include <Ice/SslCertificateDesc.h>
#include <Ice/SslGeneralConfig.h>
#include <Ice/SslCertificateAuthority.h>
#include <Ice/SslBaseCerts.h>
#include <Ice/SslTempCerts.h>
+#include <string>
namespace IceSecurity
{
@@ -29,16 +27,13 @@ namespace IceSecurity
namespace Ssl
{
-using namespace std;
-using namespace IceInternal;
-
class Parser
{
public:
// Constructor, based on the indicated file.
- Parser(const string&);
- Parser(const string&, const string&);
+ Parser(const std::string&);
+ Parser(const std::string&, const std::string&);
~Parser();
// Performs a complete parsing of the file.
@@ -48,25 +43,25 @@ public:
bool loadClientConfig(GeneralConfig&, CertificateAuthority&, BaseCertificates&);
bool loadServerConfig(GeneralConfig&, CertificateAuthority&, BaseCertificates&, TempCertificates&);
- inline void setTrace(TraceLevelsPtr traceLevels) { _traceLevels = traceLevels; };
+ inline void setTrace(IceInternal::TraceLevelsPtr traceLevels) { _traceLevels = traceLevels; };
inline bool isTraceSet() const { return _traceLevels; };
- inline void setLogger(LoggerPtr traceLevels) { _logger = traceLevels; };
+ inline void setLogger(Ice::LoggerPtr traceLevels) { _logger = traceLevels; };
inline bool isLoggerSet() const { return _logger; };
private:
DOM_Node _root;
- string _configFile;
- string _configPath;
+ std::string _configFile;
+ std::string _configPath;
- TraceLevelsPtr _traceLevels;
- LoggerPtr _logger;
+ IceInternal::TraceLevelsPtr _traceLevels;
+ Ice::LoggerPtr _logger;
// Tree walking utility methods.
- void popRoot(string&, string&, string&);
- DOM_Node find(string&);
- DOM_Node find(DOM_Node, string&);
+ void popRoot(std::string&, std::string&, std::string&);
+ DOM_Node find(std::string&);
+ DOM_Node find(DOM_Node, std::string&);
// Loading of the base elements of the file.
void getGeneral(DOM_Node, GeneralConfig&);
@@ -85,9 +80,9 @@ private:
// Populate a certificate file object, basis of all certificates.
void loadCertificateFile(DOM_Node, CertificateFile&);
- int parseEncoding(string&);
+ int parseEncoding(std::string&);
- string toString(const DOMString&);
+ std::string toString(const DOMString&);
};
}
diff --git a/cpp/src/Ice/SslConfigErrorReporter.h b/cpp/src/Ice/SslConfigErrorReporter.h
index d77d375ae3d..defd83ed11e 100644
--- a/cpp/src/Ice/SslConfigErrorReporter.h
+++ b/cpp/src/Ice/SslConfigErrorReporter.h
@@ -24,15 +24,12 @@ namespace IceSecurity
namespace Ssl
{
-using IceInternal::TraceLevelsPtr;
-using Ice::LoggerPtr;
-
class ErrorReporter : public ErrorHandler
{
public:
- ErrorReporter(TraceLevelsPtr traceLevels, LoggerPtr logger) :
+ ErrorReporter(IceInternal::TraceLevelsPtr traceLevels, Ice::LoggerPtr logger) :
_sawErrors(false),
_traceLevels(traceLevels),
_logger(logger)
@@ -54,14 +51,12 @@ private:
// It's used by the main code to suppress output if there are errors.
bool _sawErrors;
- TraceLevelsPtr _traceLevels;
- LoggerPtr _logger;
+ IceInternal::TraceLevelsPtr _traceLevels;
+ Ice::LoggerPtr _logger;
};
-using std::ostream;
-
-inline ostream&
-operator << (ostream& target, const DOMString& s)
+inline std::ostream&
+operator << (std::ostream& target, const DOMString& s)
{
char *p = s.transcode();
target << p;
diff --git a/cpp/src/Ice/SslConnection.cpp b/cpp/src/Ice/SslConnection.cpp
index 1c490682323..6d74e714a0b 100644
--- a/cpp/src/Ice/SslConnection.cpp
+++ b/cpp/src/Ice/SslConnection.cpp
@@ -12,13 +12,13 @@
void ::IceInternal::incRef(::IceSecurity::Ssl::Connection* p) { p->__incRef(); }
void ::IceInternal::decRef(::IceSecurity::Ssl::Connection* p) { p->__decRef(); }
-
-IceSecurity::Ssl::Connection::Connection(const CertificateVerifierPtr& certificateVerifier) :
- _certificateVerifier(certificateVerifier)
-{
-}
-
-IceSecurity::Ssl::Connection::~Connection()
-{
-}
-
+
+IceSecurity::Ssl::Connection::Connection(const CertificateVerifierPtr& certificateVerifier) :
+ _certificateVerifier(certificateVerifier)
+{
+}
+
+IceSecurity::Ssl::Connection::~Connection()
+{
+}
+
diff --git a/cpp/src/Ice/SslConnection.h b/cpp/src/Ice/SslConnection.h
index 1a75f11ca95..444acd4213f 100644
--- a/cpp/src/Ice/SslConnection.h
+++ b/cpp/src/Ice/SslConnection.h
@@ -15,7 +15,7 @@
#include <Ice/Buffer.h>
#include <Ice/TraceLevelsF.h>
#include <Ice/LoggerF.h>
-#include <Ice/SslConnectionF.h>
+#include <Ice/SslConnectionF.h>
#include <Ice/SslCertificateVerifierF.h>
namespace IceSecurity
@@ -24,26 +24,21 @@ namespace IceSecurity
namespace Ssl
{
-using IceUtil::Shared;
-using IceInternal::Buffer;
-using IceInternal::TraceLevelsPtr;
-using Ice::LoggerPtr;
-
-class Connection : public Shared
+class Connection : public IceUtil::Shared
{
-public:
+public:
Connection(const CertificateVerifierPtr&);
- virtual ~Connection();
-
+ virtual ~Connection();
+
virtual void shutdown() = 0;
- virtual int read(Buffer&, int) = 0;
- virtual int write(Buffer&, int) = 0;
+ virtual int read(IceInternal::Buffer&, int) = 0;
+ virtual int write(IceInternal::Buffer&, int) = 0;
+
+ virtual void setTrace(const IceInternal::TraceLevelsPtr&) = 0;
+ virtual void setLogger(const Ice::LoggerPtr&) = 0;
- virtual void setTrace(const TraceLevelsPtr&) = 0;
- virtual void setLogger(const LoggerPtr&) = 0;
-
-protected:
+protected:
CertificateVerifierPtr _certificateVerifier;
};
diff --git a/cpp/src/Ice/SslConnectionOpenSSL.cpp b/cpp/src/Ice/SslConnectionOpenSSL.cpp
index 3b59201ccdd..3f64a2891f3 100644
--- a/cpp/src/Ice/SslConnectionOpenSSL.cpp
+++ b/cpp/src/Ice/SslConnectionOpenSSL.cpp
@@ -21,13 +21,13 @@
#include <string>
#include <sstream>
#include <Ice/Network.h>
-#include <Ice/OpenSSL.h>
+#include <Ice/OpenSSL.h>
#include <Ice/SecurityException.h>
#include <Ice/SslFactory.h>
#include <Ice/SslConnection.h>
#include <Ice/SslConnectionOpenSSL.h>
-#include <Ice/SslSystemOpenSSL.h>
-#include <Ice/SslCertificateVerifierOpenSSL.h>
+#include <Ice/SslSystemOpenSSL.h>
+#include <Ice/SslCertificateVerifierOpenSSL.h>
#include <Ice/SslOpenSSLUtils.h>
#include <Ice/TraceLevels.h>
@@ -36,129 +36,136 @@
using namespace std;
using namespace IceInternal;
+using Ice::SocketException;
+using Ice::TimeoutException;
+using Ice::ConnectionLostException;
+using Ice::LoggerPtr;
+using Ice::Int;
+
using std::endl;
using IceSecurity::Ssl::Factory;
using IceSecurity::Ssl::SystemPtr;
-
-////////////////////////////////////////////////
-////////// DefaultCertificateVerifier //////////
-////////////////////////////////////////////////
-
-IceSecurity::Ssl::OpenSSL::DefaultCertificateVerifier::DefaultCertificateVerifier()
-{
-}
-
-void
-IceSecurity::Ssl::OpenSSL::DefaultCertificateVerifier::setTraceLevels(const TraceLevelsPtr& traceLevels)
-{
- _traceLevels = traceLevels;
-}
-
-void
-IceSecurity::Ssl::OpenSSL::DefaultCertificateVerifier::setLogger(const LoggerPtr& logger)
-{
- _logger = logger;
-}
-
-int
-IceSecurity::Ssl::OpenSSL::DefaultCertificateVerifier::verify(int preVerifyOkay,
- X509_STORE_CTX* x509StoreContext,
- SSL* sslConnection)
-{
- //
- // Default verification steps.
- //
-
- int verifyError = X509_STORE_CTX_get_error(x509StoreContext);
- int errorDepth = X509_STORE_CTX_get_error_depth(x509StoreContext);
- int verifyDepth = SSL_get_verify_depth(sslConnection);
-
- // Verify Depth was set
- if (verifyError != X509_V_OK)
- {
- // If we have no errors so far, and the certificate chain is too long
- if ((verifyDepth != -1) && (verifyDepth < errorDepth))
- {
- verifyError = X509_V_ERR_CERT_CHAIN_TOO_LONG;
- }
-
- // If we have ANY errors, we bail out.
- preVerifyOkay = 0;
- }
-
- // Only if ICE_PROTOCOL level logging is on do we worry about this.
- if (_traceLevels->security >= IceSecurity::SECURITY_PROTOCOL)
- {
- char buf[256];
-
- X509* err_cert = X509_STORE_CTX_get_current_cert(x509StoreContext);
-
- X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof(buf));
-
- ostringstream outStringStream;
-
- outStringStream << "depth = " << errorDepth << ":" << buf << endl;
-
- if (!preVerifyOkay)
- {
- outStringStream << "verify error: num = " << verifyError << " : "
- << X509_verify_cert_error_string(verifyError) << endl;
-
- }
-
- switch (verifyError)
- {
- case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
- {
- X509_NAME_oneline(X509_get_issuer_name(err_cert), buf, sizeof(buf));
- outStringStream << "issuer = " << buf << endl;
- break;
- }
-
- case X509_V_ERR_CERT_NOT_YET_VALID:
- case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
- {
- outStringStream << "notBefore = " << getASN1time(X509_get_notBefore(err_cert)) << endl;
- break;
- }
-
- case X509_V_ERR_CERT_HAS_EXPIRED:
- case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
- {
- outStringStream << "notAfter = " << getASN1time(X509_get_notAfter(err_cert)) << endl;
- break;
- }
- }
-
- outStringStream << "verify return = " << preVerifyOkay << endl;
-
- _logger->trace(_traceLevels->securityCat, outStringStream.str());
- }
-
- return preVerifyOkay;
-}
+
+////////////////////////////////////////////////
+////////// DefaultCertificateVerifier //////////
+////////////////////////////////////////////////
+
+IceSecurity::Ssl::OpenSSL::DefaultCertificateVerifier::DefaultCertificateVerifier()
+{
+}
+
+void
+IceSecurity::Ssl::OpenSSL::DefaultCertificateVerifier::setTraceLevels(const TraceLevelsPtr& traceLevels)
+{
+ _traceLevels = traceLevels;
+}
+
+void
+IceSecurity::Ssl::OpenSSL::DefaultCertificateVerifier::setLogger(const LoggerPtr& logger)
+{
+ _logger = logger;
+}
+
+int
+IceSecurity::Ssl::OpenSSL::DefaultCertificateVerifier::verify(int preVerifyOkay,
+ X509_STORE_CTX* x509StoreContext,
+ SSL* sslConnection)
+{
+ //
+ // Default verification steps.
+ //
+
+ int verifyError = X509_STORE_CTX_get_error(x509StoreContext);
+ int errorDepth = X509_STORE_CTX_get_error_depth(x509StoreContext);
+ int verifyDepth = SSL_get_verify_depth(sslConnection);
+
+ // Verify Depth was set
+ if (verifyError != X509_V_OK)
+ {
+ // If we have no errors so far, and the certificate chain is too long
+ if ((verifyDepth != -1) && (verifyDepth < errorDepth))
+ {
+ verifyError = X509_V_ERR_CERT_CHAIN_TOO_LONG;
+ X509_STORE_CTX_set_error(x509StoreContext, verifyError);
+ }
+
+ // If we have ANY errors, we bail out.
+ preVerifyOkay = 0;
+ }
+
+ // Only if ICE_PROTOCOL level logging is on do we worry about this.
+ if (_traceLevels->security >= IceSecurity::SECURITY_PROTOCOL)
+ {
+ char buf[256];
+
+ X509* err_cert = X509_STORE_CTX_get_current_cert(x509StoreContext);
+
+ X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof(buf));
+
+ ostringstream outStringStream;
+
+ outStringStream << "depth = " << errorDepth << ":" << buf << endl;
+
+ if (!preVerifyOkay)
+ {
+ outStringStream << "verify error: num = " << verifyError << " : "
+ << X509_verify_cert_error_string(verifyError) << endl;
+
+ }
+
+ switch (verifyError)
+ {
+ case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
+ {
+ X509_NAME_oneline(X509_get_issuer_name(err_cert), buf, sizeof(buf));
+ outStringStream << "issuer = " << buf << endl;
+ break;
+ }
+
+ case X509_V_ERR_CERT_NOT_YET_VALID:
+ case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
+ {
+ outStringStream << "notBefore = " << getASN1time(X509_get_notBefore(err_cert)) << endl;
+ break;
+ }
+
+ case X509_V_ERR_CERT_HAS_EXPIRED:
+ case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
+ {
+ outStringStream << "notAfter = " << getASN1time(X509_get_notAfter(err_cert)) << endl;
+ break;
+ }
+ }
+
+ outStringStream << "verify return = " << preVerifyOkay << endl;
+
+ _logger->trace(_traceLevels->securityCat, outStringStream.str());
+ }
+
+ return preVerifyOkay;
+}
////////////////////////////////
////////// Connection //////////
////////////////////////////////
-
-//
-// Static Member Initialization
-//
-IceSecurity::Ssl::OpenSSL::SslConnectionMap IceSecurity::Ssl::OpenSSL::Connection::_connectionMap;
-::IceUtil::Mutex IceSecurity::Ssl::OpenSSL::Connection::_connectionRepositoryMutex;
+
+//
+// Static Member Initialization
+//
+IceSecurity::Ssl::OpenSSL::SslConnectionMap IceSecurity::Ssl::OpenSSL::Connection::_connectionMap;
+::IceUtil::Mutex IceSecurity::Ssl::OpenSSL::Connection::_connectionRepositoryMutex;
//
// Public Methods
//
-void ::IceInternal::incRef(::IceSecurity::Ssl::OpenSSL::Connection* p) { p->__incRef(); }
-void ::IceInternal::decRef(::IceSecurity::Ssl::OpenSSL::Connection* p) { p->__decRef(); }
-
-IceSecurity::Ssl::OpenSSL::Connection::Connection(const CertificateVerifierPtr& certificateVerifier,
- SSL* sslConnection,
- const SystemPtr& system) :
+void ::IceInternal::incRef(::IceSecurity::Ssl::OpenSSL::Connection* p) { p->__incRef(); }
+void ::IceInternal::decRef(::IceSecurity::Ssl::OpenSSL::Connection* p) { p->__decRef(); }
+
+IceSecurity::Ssl::OpenSSL::Connection::Connection(const CertificateVerifierPtr& certificateVerifier,
+ SSL* sslConnection,
+ const SystemPtr& system) :
IceSecurity::Ssl::Connection(certificateVerifier),
_sslConnection(sslConnection),
_system(system)
@@ -173,17 +180,17 @@ IceSecurity::Ssl::OpenSSL::Connection::Connection(const CertificateVerifierPtr&
_initWantWrite = 0;
// None configured, default to indicated timeout
- _handshakeReadTimeout = 0;
-
- // Set up the SSL to be able to refer back to our connection object.
- addConnection(_sslConnection, this);
+ _handshakeReadTimeout = 0;
+
+ // Set up the SSL to be able to refer back to our connection object.
+ addConnection(_sslConnection, this);
}
IceSecurity::Ssl::OpenSSL::Connection::~Connection()
{
if (_sslConnection != 0)
{
- removeConnection(_sslConnection);
+ removeConnection(_sslConnection);
Factory::removeSystemHandle(_sslConnection);
SSL_free(_sslConnection);
_sslConnection = 0;
@@ -195,13 +202,13 @@ IceSecurity::Ssl::OpenSSL::Connection::shutdown()
{
if (_sslConnection != 0)
{
- if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
- {
- _logger->trace(_traceLevels->securityCat, "WRN " +
- string("shutting down SSL connection\n") +
- fdToString(SSL_get_fd(_sslConnection)));
- }
-
+ if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
+ {
+ _logger->trace(_traceLevels->securityCat, "WRN " +
+ string("shutting down SSL connection\n") +
+ fdToString(SSL_get_fd(_sslConnection)));
+ }
+
int shutdown = 0;
int retries = 100;
@@ -217,64 +224,85 @@ IceSecurity::Ssl::OpenSSL::Connection::shutdown()
ostringstream s;
s << "SSL shutdown failure encountered: code[" << shutdown << "] retries[";
s << retries << "]\n" << fdToString(SSL_get_fd(_sslConnection));
- _logger->trace(_traceLevels->securityCat, s.str());
+ _logger->trace(_traceLevels->securityCat, s.str());
+ }
+ }
+}
+
+void
+IceSecurity::Ssl::OpenSSL::Connection::setTrace(const TraceLevelsPtr& traceLevels)
+{
+ _traceLevels = traceLevels;
+}
+
+void
+IceSecurity::Ssl::OpenSSL::Connection::setLogger(const LoggerPtr& traceLevels)
+{
+ _logger = traceLevels;
+}
+
+void
+IceSecurity::Ssl::OpenSSL::Connection::setHandshakeReadTimeout(int timeout)
+{
+ _handshakeReadTimeout = timeout;
+}
+
+IceSecurity::Ssl::OpenSSL::ConnectionPtr
+IceSecurity::Ssl::OpenSSL::Connection::getConnection(SSL* sslPtr)
+{
+ IceUtil::Mutex::Lock sync(_connectionRepositoryMutex);
+
+ assert(sslPtr);
+
+ Connection* connection = _connectionMap[sslPtr];
+
+ assert(connection);
+
+ return ConnectionPtr(connection);
+}
+
+int
+IceSecurity::Ssl::OpenSSL::Connection::verifyCertificate(int preVerifyOkay, X509_STORE_CTX* x509StoreContext)
+{
+ // Should NEVER be able to happen.
+ assert(_certificateVerifier.get() != 0);
+
+ // Get the verifier, make sure it is for OpenSSL connections
+ IceSecurity::Ssl::OpenSSL::CertificateVerifier* verifier;
+ verifier = dynamic_cast<IceSecurity::Ssl::OpenSSL::CertificateVerifier*>(_certificateVerifier.get());
+
+ // Check to make sure we have a proper verifier for the operation.
+ if (verifier)
+ {
+ // Use the verifier to verify the certificate
+ preVerifyOkay = verifier->verify(preVerifyOkay, x509StoreContext, _sslConnection);
+ }
+ else
+ {
+ // Note: This code should NEVER be able to be reached, as we check each
+ // CertificateVerifier as it is added to the System.
+
+ if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
+ {
+ string errorString;
+
+ if (_certificateVerifier.get())
+ {
+ errorString = "WRN Improper CertificateVerifier type.";
+ }
+ else
+ {
+ // NOTE: This should NEVER be able to happen, but just in case.
+ errorString = "WRN CertificateVerifier not set.";
+ }
+
+ _logger->trace(_traceLevels->securityCat, errorString);
}
}
+
+ return preVerifyOkay;
}
-void
-IceSecurity::Ssl::OpenSSL::Connection::setTrace(const TraceLevelsPtr& traceLevels)
-{
- _traceLevels = traceLevels;
-}
-
-void
-IceSecurity::Ssl::OpenSSL::Connection::setLogger(const LoggerPtr& traceLevels)
-{
- _logger = traceLevels;
-}
-
-void
-IceSecurity::Ssl::OpenSSL::Connection::setHandshakeReadTimeout(int timeout)
-{
- _handshakeReadTimeout = timeout;
-}
-
-IceSecurity::Ssl::OpenSSL::ConnectionPtr
-IceSecurity::Ssl::OpenSSL::Connection::getConnection(SSL* sslPtr)
-{
- IceUtil::Mutex::Lock sync(_connectionRepositoryMutex);
-
- assert(sslPtr);
-
- Connection* connection = _connectionMap[sslPtr];
-
- assert(connection);
-
- return ConnectionPtr(connection);
-}
-
-int
-IceSecurity::Ssl::OpenSSL::Connection::verifyCertificate(int preVerifyOkay, X509_STORE_CTX* x509StoreContext)
-{
- // Get the verifier, make sure it is for OpenSSL connections
- IceSecurity::Ssl::OpenSSL::CertificateVerifier* verifier;
- verifier = dynamic_cast<IceSecurity::Ssl::OpenSSL::CertificateVerifier*>(_certificateVerifier.get());
-
- // Check to make sure we have a proper verifier for the operation.
- if (!verifier)
- {
- // TODO: Throw exception here
- // throw SslIncorrectVerifierTypeException(__FILE__, __LINE__);
- return 0;
- }
-
- // Use the verifier to verify the certificate
- preVerifyOkay = verifier->verify(preVerifyOkay, x509StoreContext, _sslConnection);
-
- return preVerifyOkay;
-}
-
//
// Protected Methods
//
@@ -309,7 +337,7 @@ int
IceSecurity::Ssl::OpenSSL::Connection::initialize(int timeout)
{
int retCode = 0;
-
+
while (true)
{
// One lucky thread will get the honor of carrying out the hanshake,
@@ -421,12 +449,11 @@ IceSecurity::Ssl::OpenSSL::Connection::readInBuffer(Buffer& buf)
if (_traceLevels->security >= IceSecurity::SECURITY_PROTOCOL)
{
- string protocolString = "Copied ";
- protocolString += Int(bytesRead);
- protocolString += string(" bytes from SSL buffer\n");
- protocolString += fdToString(SSL_get_fd(_sslConnection));
-
- _logger->trace(_traceLevels->securityCat, protocolString);
+ ostringstream protocolMsg;
+ protocolMsg << "Copied " << dec << bytesRead << " bytes from SSL buffer\n";
+ protocolMsg << fdToString(SSL_get_fd(_sslConnection));
+
+ _logger->trace(_traceLevels->securityCat, protocolMsg.str());
}
}
@@ -544,6 +571,7 @@ IceSecurity::Ssl::OpenSSL::Connection::readSSL(Buffer& buf, int timeout)
if (initReturn == -1)
{
// Handshake underway, timeout immediately, easy way to deal with this.
+ // _logger->trace(_traceLevels->securityCat, "Throwing TimeoutException, Line 566");
throw TimeoutException(__FILE__, __LINE__);
}
@@ -566,10 +594,10 @@ IceSecurity::Ssl::OpenSSL::Connection::readSSL(Buffer& buf, int timeout)
if (!bytesPending)
{
- if (_traceLevels->security >= IceSecurity::SECURITY_PROTOCOL)
- {
- _logger->trace(_traceLevels->securityCat, "No pending application-level bytes.");
- }
+ if (_traceLevels->security >= IceSecurity::SECURITY_PROTOCOL)
+ {
+ _logger->trace(_traceLevels->securityCat, "No pending application-level bytes.");
+ }
// We're done here.
break;
@@ -663,7 +691,7 @@ IceSecurity::Ssl::OpenSSL::Connection::readSSL(Buffer& buf, int timeout)
// Protocol Error: Unexpected EOF
protocolEx._message = "Encountered an EOF that violates the SSL Protocol.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
@@ -674,7 +702,7 @@ IceSecurity::Ssl::OpenSSL::Connection::readSSL(Buffer& buf, int timeout)
ProtocolException protocolEx(__FILE__, __LINE__);
protocolEx._message = "Encountered a violation of the SSL Protocol.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
@@ -737,23 +765,24 @@ IceSecurity::Ssl::OpenSSL::Connection::sslGetErrors()
return errorMessage;
}
-
-void
-IceSecurity::Ssl::OpenSSL::Connection::addConnection(SSL* sslPtr, Connection* connection)
-{
- assert(sslPtr);
- assert(connection);
- _connectionMap[sslPtr] = connection;
-}
-
-void
-IceSecurity::Ssl::OpenSSL::Connection::removeConnection(SSL* sslPtr)
-{
- IceUtil::Mutex::Lock sync(_connectionRepositoryMutex);
- assert(sslPtr);
- _connectionMap.erase(sslPtr);
-}
-
+
+void
+IceSecurity::Ssl::OpenSSL::Connection::addConnection(SSL* sslPtr, Connection* connection)
+{
+ assert(sslPtr);
+ assert(connection);
+ IceUtil::Mutex::Lock sync(_connectionRepositoryMutex);
+ _connectionMap[sslPtr] = connection;
+}
+
+void
+IceSecurity::Ssl::OpenSSL::Connection::removeConnection(SSL* sslPtr)
+{
+ assert(sslPtr);
+ IceUtil::Mutex::Lock sync(_connectionRepositoryMutex);
+ _connectionMap.erase(sslPtr);
+}
+
void
IceSecurity::Ssl::OpenSSL::Connection::showCertificateChain(BIO* bio)
{
diff --git a/cpp/src/Ice/SslConnectionOpenSSL.h b/cpp/src/Ice/SslConnectionOpenSSL.h
index dee4a2aa07e..351c555a663 100644
--- a/cpp/src/Ice/SslConnectionOpenSSL.h
+++ b/cpp/src/Ice/SslConnectionOpenSSL.h
@@ -11,13 +11,13 @@
#ifndef ICE_SSL_CONNECTION_OPENSSL_H
#define ICE_SSL_CONNECTION_OPENSSL_H
-#include <map>
+#include <map>
#include <openssl/ssl.h>
#include <IceUtil/Mutex.h>
#include <Ice/SslConnection.h>
-#include <Ice/SslSystemF.h>
-#include <Ice/SslConnectionOpenSSLF.h>
-#include <Ice/SslCertificateVerifier.h>
+#include <Ice/SslSystemF.h>
+#include <Ice/SslConnectionOpenSSLF.h>
+#include <Ice/SslCertificateVerifierOpenSSL.h>
namespace IceSecurity
{
@@ -28,9 +28,6 @@ namespace Ssl
namespace OpenSSL
{
-using namespace Ice;
-using namespace std;
-
class SafeFlag
{
public:
@@ -109,30 +106,30 @@ private:
bool _ownHandshake;
SafeFlag& _flag;
};
-
-class DefaultCertificateVerifier : public CertificateVerifier
-{
-
-public:
- DefaultCertificateVerifier();
-
- void setTraceLevels(const TraceLevelsPtr&);
- void setLogger(const LoggerPtr&);
-
- virtual int verify(int, X509_STORE_CTX*, SSL*);
-
-private:
- TraceLevelsPtr _traceLevels;
- LoggerPtr _logger;
-};
-
-// NOTE: This is a mapping from SSL* to Connection*, for use with the verifyCallback.
-// I have purposely not used ConnectionPtr here, as connections register themselves
-// with this map on construction and unregister themselves in the destructor. If
-// this map used ConnectionPtr, Connection instances would never destruct as there
-// would always be a reference to them from the map.
-typedef map<SSL*, Connection*> SslConnectionMap;
-
+
+class DefaultCertificateVerifier : public IceSecurity::Ssl::OpenSSL::CertificateVerifier
+{
+
+public:
+ DefaultCertificateVerifier();
+
+ void setTraceLevels(const IceInternal::TraceLevelsPtr&);
+ void setLogger(const Ice::LoggerPtr&);
+
+ virtual int verify(int, X509_STORE_CTX*, SSL*);
+
+private:
+ IceInternal::TraceLevelsPtr _traceLevels;
+ Ice::LoggerPtr _logger;
+};
+
+// NOTE: This is a mapping from SSL* to Connection*, for use with the verifyCallback.
+// I have purposely not used ConnectionPtr here, as connections register themselves
+// with this map on construction and unregister themselves in the destructor. If
+// this map used ConnectionPtr, Connection instances would never destruct as there
+// would always be a reference to them from the map.
+typedef std::map<SSL*, Connection*> SslConnectionMap;
+
class Connection : public IceSecurity::Ssl::Connection
{
public:
@@ -142,20 +139,20 @@ public:
virtual void shutdown();
- virtual int read(Buffer&, int) = 0;
- virtual int write(Buffer&, int) = 0;
+ virtual int read(IceInternal::Buffer&, int) = 0;
+ virtual int write(IceInternal::Buffer&, int) = 0;
virtual int init(int timeout = 0) = 0;
- void setTrace(const TraceLevelsPtr& traceLevels);
- void setLogger(const LoggerPtr& traceLevels);
+ void setTrace(const IceInternal::TraceLevelsPtr& traceLevels);
+ void setLogger(const Ice::LoggerPtr& traceLevels);
void setHandshakeReadTimeout(int timeout);
-
- static ConnectionPtr getConnection(SSL*);
-
- // Callback from OpenSSL for purposes of certificate verification
- int verifyCertificate(int, X509_STORE_CTX*);
+
+ static ConnectionPtr getConnection(SSL*);
+
+ // Callback from OpenSSL for purposes of certificate verification
+ int verifyCertificate(int, X509_STORE_CTX*);
protected:
@@ -172,18 +169,18 @@ protected:
void protocolWrite();
- int readInBuffer(Buffer&);
+ int readInBuffer(IceInternal::Buffer&);
int readSelect(int);
int writeSelect(int);
- int readSSL(Buffer&, int);
+ int readSSL(IceInternal::Buffer&, int);
// Retrieves errors from the OpenSSL library.
- string sslGetErrors();
-
- static void addConnection(SSL*, Connection*);
- static void removeConnection(SSL*);
+ std::string sslGetErrors();
+
+ static void addConnection(SSL*, Connection*);
+ static void removeConnection(SSL*);
virtual void showConnectionInfo() = 0;
@@ -196,9 +193,9 @@ protected:
void showClientCAList(BIO*, const char*);
void setLastError(int errorCode) { _lastError = errorCode; };
-
- static SslConnectionMap _connectionMap;
- static ::IceUtil::Mutex _connectionRepositoryMutex;
+
+ static SslConnectionMap _connectionMap;
+ static ::IceUtil::Mutex _connectionRepositoryMutex;
// Pointer to the OpenSSL Connection structure.
SSL* _sslConnection;
@@ -209,13 +206,13 @@ protected:
// TODO: Review this after a healthy stint of testing
// Buffer for application data that may be returned during handshake
// (probably won't contain anything, may be removed later).
- Buffer _inBuffer;
+ ::IceInternal::Buffer _inBuffer;
::IceUtil::Mutex _inBufferMutex;
::IceUtil::Mutex _handshakeWaitMutex;
- TraceLevelsPtr _traceLevels;
- LoggerPtr _logger;
+ IceInternal::TraceLevelsPtr _traceLevels;
+ Ice::LoggerPtr _logger;
SafeFlag _handshakeFlag;
int _initWantRead;
diff --git a/cpp/src/Ice/SslConnectionOpenSSLClient.cpp b/cpp/src/Ice/SslConnectionOpenSSLClient.cpp
index e3d0bfa7b7b..8937baeae53 100644
--- a/cpp/src/Ice/SslConnectionOpenSSLClient.cpp
+++ b/cpp/src/Ice/SslConnectionOpenSSLClient.cpp
@@ -11,7 +11,7 @@
#include <string>
#include <sstream>
#include <Ice/Network.h>
-#include <Ice/OpenSSL.h>
+#include <Ice/OpenSSL.h>
#include <Ice/SecurityException.h>
#include <Ice/SslConnectionOpenSSLClient.h>
@@ -20,6 +20,8 @@
using IceSecurity::Ssl::ShutdownException;
using IceSecurity::Ssl::SystemPtr;
+using Ice::ConnectionLostException;
+using Ice::SocketException;
using namespace IceInternal;
using namespace std;
@@ -37,8 +39,8 @@ using std::dec;
// Public Methods
//
-IceSecurity::Ssl::OpenSSL::ClientConnection::ClientConnection(const CertificateVerifierPtr& certificateVerifier,
- SSL* connection,
+IceSecurity::Ssl::OpenSSL::ClientConnection::ClientConnection(const CertificateVerifierPtr& certificateVerifier,
+ SSL* connection,
const SystemPtr& system) :
Connection(certificateVerifier, connection, system)
{
@@ -154,7 +156,7 @@ IceSecurity::Ssl::OpenSSL::ClientConnection::init(int timeout)
// Protocol Error: Unexpected EOF
protocolEx._message = "Encountered an EOF during handshake that violates the SSL Protocol.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
@@ -165,7 +167,7 @@ IceSecurity::Ssl::OpenSSL::ClientConnection::init(int timeout)
ProtocolException protocolEx(__FILE__, __LINE__);
protocolEx._message = "Encountered a violation of the SSL Protocol during handshake.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
@@ -344,7 +346,7 @@ IceSecurity::Ssl::OpenSSL::ClientConnection::write(Buffer& buf, int timeout)
// Protocol Error: Unexpected EOF
protocolEx._message = "Encountered an EOF that violates the SSL Protocol.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
@@ -360,7 +362,7 @@ IceSecurity::Ssl::OpenSSL::ClientConnection::write(Buffer& buf, int timeout)
ProtocolException protocolEx(__FILE__, __LINE__);
protocolEx._message = "Encountered a violation of the SSL Protocol.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
diff --git a/cpp/src/Ice/SslConnectionOpenSSLClient.h b/cpp/src/Ice/SslConnectionOpenSSLClient.h
index 9faa82df08a..fdf0e6c0779 100644
--- a/cpp/src/Ice/SslConnectionOpenSSLClient.h
+++ b/cpp/src/Ice/SslConnectionOpenSSLClient.h
@@ -22,21 +22,17 @@ namespace Ssl
namespace OpenSSL
{
-using namespace Ice;
-
-using IceSecurity::Ssl::SystemPtr;
-
class ClientConnection : public Connection
{
public:
- ClientConnection(const CertificateVerifierPtr&, SSL*, const SystemPtr&);
+ ClientConnection(const CertificateVerifierPtr&, SSL*, const IceSecurity::Ssl::SystemPtr&);
virtual ~ClientConnection();
virtual void shutdown();
virtual int init(int timeout = 0);
- virtual int read(Buffer&, int);
- virtual int write(Buffer&, int);
+ virtual int read(IceInternal::Buffer&, int);
+ virtual int write(IceInternal::Buffer&, int);
protected:
diff --git a/cpp/src/Ice/SslConnectionOpenSSLServer.cpp b/cpp/src/Ice/SslConnectionOpenSSLServer.cpp
index 91409ced3b4..c9c05900ff2 100644
--- a/cpp/src/Ice/SslConnectionOpenSSLServer.cpp
+++ b/cpp/src/Ice/SslConnectionOpenSSLServer.cpp
@@ -11,7 +11,7 @@
#include <string>
#include <sstream>
#include <Ice/Network.h>
-#include <Ice/OpenSSL.h>
+#include <Ice/OpenSSL.h>
#include <Ice/SecurityException.h>
#include <Ice/SslConnectionOpenSSLServer.h>
@@ -22,6 +22,9 @@ using IceSecurity::Ssl::CertificateException;
using IceSecurity::Ssl::ProtocolException;
using IceSecurity::Ssl::SystemPtr;
+using Ice::ConnectionLostException;
+using Ice::SocketException;
+
using namespace IceInternal;
using namespace std;
@@ -38,8 +41,8 @@ using std::dec;
// Public Methods
//
-IceSecurity::Ssl::OpenSSL::ServerConnection::ServerConnection(const CertificateVerifierPtr& certificateVerifier,
- SSL* connection,
+IceSecurity::Ssl::OpenSSL::ServerConnection::ServerConnection(const CertificateVerifierPtr& certificateVerifier,
+ SSL* connection,
const SystemPtr& system) :
Connection(certificateVerifier, connection, system)
{
@@ -112,7 +115,7 @@ IceSecurity::Ssl::OpenSSL::ServerConnection::init(int timeout)
ProtocolException protocolEx(__FILE__, __LINE__);
protocolEx._message = "Encountered an SSL Protocol violation during handshake.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
@@ -178,7 +181,7 @@ IceSecurity::Ssl::OpenSSL::ServerConnection::init(int timeout)
// Protocol Error: Unexpected EOF
protocolEx._message = "Encountered an EOF during handshake that violates the SSL Protocol.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
@@ -189,7 +192,7 @@ IceSecurity::Ssl::OpenSSL::ServerConnection::init(int timeout)
ProtocolException protocolEx(__FILE__, __LINE__);
protocolEx._message = "Encountered a violation of the SSL Protocol during handshake.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
@@ -341,7 +344,7 @@ IceSecurity::Ssl::OpenSSL::ServerConnection::write(Buffer& buf, int timeout)
// Protocol Error: Unexpected EOF
protocolEx._message = "Encountered an EOF that violates the SSL Protocol.\n";
- protocolEx._message += sslGetErrors();
+ protocolEx._message += sslGetErrors();
throw protocolEx;
}
@@ -352,8 +355,8 @@ IceSecurity::Ssl::OpenSSL::ServerConnection::write(Buffer& buf, int timeout)
ProtocolException protocolEx(__FILE__, __LINE__);
protocolEx._message = "Encountered a violation of the SSL Protocol.\n";
- protocolEx._message += sslGetErrors();
-
+ protocolEx._message += sslGetErrors();
+
throw protocolEx;
}
diff --git a/cpp/src/Ice/SslConnectionOpenSSLServer.h b/cpp/src/Ice/SslConnectionOpenSSLServer.h
index c24e703aafb..ae348a6d2a2 100644
--- a/cpp/src/Ice/SslConnectionOpenSSLServer.h
+++ b/cpp/src/Ice/SslConnectionOpenSSLServer.h
@@ -22,21 +22,17 @@ namespace Ssl
namespace OpenSSL
{
-using namespace Ice;
-
-using IceSecurity::Ssl::SystemPtr;
-
class ServerConnection : public Connection
{
public:
- ServerConnection(const CertificateVerifierPtr&, SSL*, const SystemPtr&);
+ ServerConnection(const CertificateVerifierPtr&, SSL*, const IceSecurity::Ssl::SystemPtr&);
virtual ~ServerConnection();
virtual void shutdown();
virtual int init(int timeout = 0);
- virtual int read(Buffer&, int);
- virtual int write(Buffer&, int);
+ virtual int read(IceInternal::Buffer&, int);
+ virtual int write(IceInternal::Buffer&, int);
protected:
diff --git a/cpp/src/Ice/SslConnector.cpp b/cpp/src/Ice/SslConnector.cpp
index f4b2514573d..4df3a76b1e4 100644
--- a/cpp/src/Ice/SslConnector.cpp
+++ b/cpp/src/Ice/SslConnector.cpp
@@ -64,7 +64,7 @@ IceInternal::SslConnector::connect(int timeout)
// This is the Ice SSL Configuration File on which we will base
// all connections in this communicator.
- string configFile = properties->getProperty("Ice.Ssl.Config");
+ string configFile = properties->getProperty("Ice.Security.Ssl.Config");
// Get an instance of the SslOpenSSL singleton.
SystemPtr sslSystem = Factory::getSystem(configFile);
diff --git a/cpp/src/Ice/SslFactory.cpp b/cpp/src/Ice/SslFactory.cpp
index 7ff34d6ff89..0503e256919 100644
--- a/cpp/src/Ice/SslFactory.cpp
+++ b/cpp/src/Ice/SslFactory.cpp
@@ -19,7 +19,7 @@
#include <Ice/SslFactory.h>
#include <Ice/SslSystemOpenSSL.h>
-#include <Ice/OpenSSL.h>
+#include <Ice/OpenSSL.h>
#define OPENSSL_THREAD_DEFINES
#include <openssl/opensslconf.h>
@@ -193,19 +193,56 @@ IceSecurity::Ssl::Factory::reapSystems()
void
IceSecurity::Ssl::setSystemCertificateVerifier(const string& systemIdentifier,
- CertificateVerifierType verifierType,
+ SslContextType contextType,
const CertificateVerifierPtr& certificateVerifier)
{
SystemPtr sslSystem = Factory::getSystem(systemIdentifier);
- if ((verifierType == Client) || (verifierType == ClientServer))
+ if ((contextType == Client) || (contextType == ClientServer))
{
sslSystem->setClientCertificateVerifier(certificateVerifier);
}
- if ((verifierType == Server) || (verifierType == ClientServer))
+ if ((contextType == Server) || (contextType == ClientServer))
{
sslSystem->setServerCertificateVerifier(certificateVerifier);
}
}
+void
+IceSecurity::Ssl::setSystemCertAuthCertificate(const string& systemIdentifier,
+ SslContextType contextType,
+ const string& caCertString)
+{
+ SystemPtr sslSystem = Factory::getSystem(systemIdentifier);
+
+ if ((contextType == Client) || (contextType == ClientServer))
+ {
+ sslSystem->setClientCertAuthorityCertificate(caCertString);
+ }
+
+ if ((contextType == Server) || (contextType == ClientServer))
+ {
+ sslSystem->setServerCertAuthorityCertificate(caCertString);
+ }
+}
+
+void
+IceSecurity::Ssl::setSystemRSAKeysBase64(const string& systemIdentifier,
+ SslContextType contextType,
+ const string& privateKey,
+ const string& publicKey)
+{
+ SystemPtr sslSystem = Factory::getSystem(systemIdentifier);
+
+ if ((contextType == Client) || (contextType == ClientServer))
+ {
+ sslSystem->setClientRSAKeysBase64(privateKey, publicKey);
+ }
+
+ if ((contextType == Server) || (contextType == ClientServer))
+ {
+ sslSystem->setServerRSAKeysBase64(privateKey, publicKey);
+ }
+}
+
diff --git a/cpp/src/Ice/SslFactory.h b/cpp/src/Ice/SslFactory.h
index b51fef870de..ed9c1c05af7 100644
--- a/cpp/src/Ice/SslFactory.h
+++ b/cpp/src/Ice/SslFactory.h
@@ -14,30 +14,18 @@
#include <string>
#include <map>
#include <IceUtil/Mutex.h>
-#include <Ice/SslSystemF.h>
+#include <Ice/SslSystemF.h>
#include <Ice/SslCertificateVerifierF.h>
+#include <Ice/Security.h>
-#ifdef WIN32
-# ifdef ICE_API_EXPORTS
-# define ICE_API __declspec(dllexport)
-# else
-# define ICE_API __declspec(dllimport)
-# endif
-#else
-# define ICE_API /**/
-#endif
-
namespace IceSecurity
{
namespace Ssl
{
-using std::string;
-using std::map;
-
-typedef map<string, SystemPtr> SystemMap;
-typedef map<void*, SystemPtr> SslHandleSystemMap;
+typedef std::map<std::string, SystemPtr> SystemMap;
+typedef std::map<void*, SystemPtr> SslHandleSystemMap;
// This is defined as a class so as to ensure encapsulation. We don't
// want just anybody creating System instances - when all this is moved
@@ -49,7 +37,7 @@ class Factory
{
public:
- static SystemPtr getSystem(const string&);
+ static SystemPtr getSystem(const std::string&);
// System Handle related methods
static void addSystemHandle(void*, const SystemPtr&);
@@ -64,20 +52,6 @@ private:
static void reapSystems();
};
-
-// TODO: This is NOT how this should be done, but to get us over the hump for the
-// time being, we'll take this shortcut.
-
-typedef enum
-{
- None = 0,
- Client,
- Server,
- ClientServer
-} ICE_API CertificateVerifierType;
-
-
-void ICE_API setSystemCertificateVerifier(const string&, CertificateVerifierType, const CertificateVerifierPtr&);
}
diff --git a/cpp/src/Ice/SslGeneralConfig.h b/cpp/src/Ice/SslGeneralConfig.h
index f8f06f8443d..5ef95e94bcd 100644
--- a/cpp/src/Ice/SslGeneralConfig.h
+++ b/cpp/src/Ice/SslGeneralConfig.h
@@ -20,9 +20,6 @@ namespace IceSecurity
namespace Ssl
{
-using std::string;
-using std::ostream;
-
class GeneralConfig
{
@@ -33,12 +30,12 @@ public:
inline int getVerifyMode() const { return _verifyMode; };
inline int getVerifyDepth() const { return _verifyDepth; };
- inline string getContext() const { return _context; };
- inline string getCipherList() const { return _cipherList; };
- inline string getRandomBytesFiles() const { return _randomBytesFiles; };
+ inline std::string getContext() const { return _context; };
+ inline std::string getCipherList() const { return _cipherList; };
+ inline std::string getRandomBytesFiles() const { return _randomBytesFiles; };
// General method - it will figure out how to properly parse the data.
- void set(string&, string&);
+ void set(std::string&, std::string&);
protected:
@@ -47,23 +44,23 @@ protected:
int _verifyMode;
int _verifyDepth;
- string _context;
- string _cipherList;
- string _randomBytesFiles;
+ std::string _context;
+ std::string _cipherList;
+ std::string _randomBytesFiles;
- void parseVersion(string&);
- void parseVerifyMode(string&);
+ void parseVersion(std::string&);
+ void parseVerifyMode(std::string&);
};
template<class Stream> inline
Stream& operator << (Stream& target, const GeneralConfig& generalConfig)
{
- target << "Protocol: " << generalConfig.getProtocol() << endl;
- target << "Verify Mode: " << generalConfig.getVerifyMode() << endl;
- target << "Verify Depth: " << generalConfig.getVerifyDepth() << endl;
- target << "Context: " << generalConfig.getContext() << endl;
- target << "Cipher List: " << generalConfig.getCipherList() << endl;
- target << "Random Bytes: " << generalConfig.getRandomBytesFiles() << endl;
+ target << "Protocol: " << generalConfig.getProtocol() << std::endl;
+ target << "Verify Mode: " << generalConfig.getVerifyMode() << std::endl;
+ target << "Verify Depth: " << generalConfig.getVerifyDepth() << std::endl;
+ target << "Context: " << generalConfig.getContext() << std::endl;
+ target << "Cipher List: " << generalConfig.getCipherList() << std::endl;
+ target << "Random Bytes: " << generalConfig.getRandomBytesFiles() << std::endl;
return target;
}
diff --git a/cpp/src/Ice/SslIceUtils.cpp b/cpp/src/Ice/SslIceUtils.cpp
new file mode 100644
index 00000000000..2a443f75d18
--- /dev/null
+++ b/cpp/src/Ice/SslIceUtils.cpp
@@ -0,0 +1,34 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#include <IceUtil/Config.h>
+#include <Ice/SslIceUtils.h>
+#include <iterator>
+
+void
+IceSecurity::Ssl::ucharToByteSeq(unsigned char* ucharBuffer, int length, Ice::ByteSeq& destBuffer)
+{
+ destBuffer.reserve(length);
+ std::copy(ucharBuffer, (ucharBuffer + length), std::back_inserter(destBuffer));
+}
+
+unsigned char*
+IceSecurity::Ssl::byteSeqToUChar(const Ice::ByteSeq& sequence)
+{
+ int seqSize = sequence.size();
+
+ assert(seqSize > 0);
+
+ unsigned char* ucharSeq = new unsigned char[seqSize];
+ unsigned char* ucharPtr = ucharSeq;
+ std::copy(sequence.begin(), sequence.end(), ucharPtr);
+
+ return ucharSeq;
+}
diff --git a/cpp/src/Ice/SslIceUtils.h b/cpp/src/Ice/SslIceUtils.h
new file mode 100644
index 00000000000..274d66c36dc
--- /dev/null
+++ b/cpp/src/Ice/SslIceUtils.h
@@ -0,0 +1,32 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#ifndef ICE_SSL_ICE_UTILS_H
+#define ICE_SSL_ICE_UTILS_H
+
+#include <IceUtil/Config.h>
+#include <Ice/BuiltinSequences.h>
+
+namespace IceSecurity
+{
+
+namespace Ssl
+{
+
+void ucharToByteSeq(unsigned char*, int, Ice::ByteSeq&);
+
+unsigned char* byteSeqToUChar(const Ice::ByteSeq&);
+
+}
+
+}
+
+#endif
+
diff --git a/cpp/src/Ice/SslOpenSSLUtils.h b/cpp/src/Ice/SslOpenSSLUtils.h
index 654c2392f06..56434e1ee79 100644
--- a/cpp/src/Ice/SslOpenSSLUtils.h
+++ b/cpp/src/Ice/SslOpenSSLUtils.h
@@ -20,13 +20,11 @@ namespace Ssl
namespace OpenSSL
{
-using std::string;
+std::string getGeneralizedTime(ASN1_GENERALIZEDTIME *tm);
-string getGeneralizedTime(ASN1_GENERALIZEDTIME *tm);
+std::string getUTCTime(ASN1_UTCTIME *tm);
-string getUTCTime(ASN1_UTCTIME *tm);
-
-string getASN1time(ASN1_TIME *tm);
+std::string getASN1time(ASN1_TIME *tm);
}
diff --git a/cpp/src/Ice/SslRSACertificateGen.cpp b/cpp/src/Ice/SslRSACertificateGen.cpp
index 8b081c9c6af..3e85bbf58ac 100644
--- a/cpp/src/Ice/SslRSACertificateGen.cpp
+++ b/cpp/src/Ice/SslRSACertificateGen.cpp
@@ -12,6 +12,8 @@
#include <Ice/SslRSACertificateGen.h>
#include <Ice/SslJanitors.h>
#include <Ice/SslRSAKeyPair.h>
+#include <Ice/SslRSAPrivateKey.h>
+#include <Ice/SslRSAPublicKey.h>
#include <openssl/err.h>
#include <openssl/ssl.h>
@@ -239,7 +241,9 @@ IceSecurity::Ssl::OpenSSL::RSACertificateGen::generate(const RSACertificateGenCo
pkey->pkey.ptr = 0;
// Constructing our object.
- RSAKeyPair* keyPairPtr = new RSAKeyPair(rsaKeyPair, x509SelfSigned);
+ RSAPrivateKeyPtr privKeyPtr = new RSAPrivateKey(rsaKeyPair);
+ RSAPublicKeyPtr pubKeyPtr = new RSAPublicKey(x509SelfSigned);
+ RSAKeyPair* keyPairPtr = new RSAKeyPair(privKeyPtr, pubKeyPtr);
// Don't let them clean up, we're keeping those around.
rsaJanitor.clear();
diff --git a/cpp/src/Ice/SslRSAKeyPair.cpp b/cpp/src/Ice/SslRSAKeyPair.cpp
index 18842e22bf0..e2876ebc845 100644
--- a/cpp/src/Ice/SslRSAKeyPair.cpp
+++ b/cpp/src/Ice/SslRSAKeyPair.cpp
@@ -11,6 +11,8 @@
#include <IceUtil/Config.h>
#include <IceUtil/Base64.h>
#include <Ice/SslRSAKeyPair.h>
+#include <Ice/SslRSAPrivateKey.h>
+#include <Ice/SslRSAPublicKey.h>
#include <assert.h>
void ::IceInternal::incRef(::IceSecurity::Ssl::OpenSSL::RSAKeyPair* p) { p->__incRef(); }
@@ -20,8 +22,11 @@ using std::back_inserter;
using std::string;
using IceUtil::Base64;
-IceSecurity::Ssl::OpenSSL::RSAKeyPair::RSAKeyPair(const string& key, const string& cert)
+IceSecurity::Ssl::OpenSSL::RSAKeyPair::RSAKeyPair(const string& key, const string& cert) :
+ _privateKey(new RSAPrivateKey(key)),
+ _publicKey(new RSAPublicKey(cert))
{
+/*
_privateKey = 0;
_publicKey = 0;
@@ -30,41 +35,57 @@ IceSecurity::Ssl::OpenSSL::RSAKeyPair::RSAKeyPair(const string& key, const strin
byteSeqToKey(keySeq);
byteSeqToCert(certSeq);
+*/
}
-IceSecurity::Ssl::OpenSSL::RSAKeyPair::RSAKeyPair(const ByteSeq& keySeq, const ByteSeq& certSeq)
+IceSecurity::Ssl::OpenSSL::RSAKeyPair::RSAKeyPair(const ByteSeq& keySeq, const ByteSeq& certSeq) :
+ _privateKey(new RSAPrivateKey(keySeq)),
+ _publicKey(new RSAPublicKey(certSeq))
{
+/*
_privateKey = 0;
_publicKey = 0;
byteSeqToKey(keySeq);
byteSeqToCert(certSeq);
+*/
}
IceSecurity::Ssl::OpenSSL::RSAKeyPair::~RSAKeyPair()
{
+/*
RSA_free(_privateKey);
X509_free(_publicKey);
+*/
}
void
IceSecurity::Ssl::OpenSSL::RSAKeyPair::keyToBase64(string& b64Key)
{
+ _privateKey->keyToBase64(b64Key);
+
+/*
ByteSeq keySeq;
keyToByteSeq(keySeq);
b64Key = Base64::encode(keySeq);
+*/
}
void
IceSecurity::Ssl::OpenSSL::RSAKeyPair::certToBase64(string& b64Cert)
{
+ _publicKey->certToBase64(b64Cert);
+/*
ByteSeq certSeq;
certToByteSeq(certSeq);
b64Cert = Base64::encode(certSeq);
+*/
}
void
IceSecurity::Ssl::OpenSSL::RSAKeyPair::keyToByteSeq(ByteSeq& keySeq)
{
+ _privateKey->keyToByteSeq(keySeq);
+/*
assert(_privateKey);
// Output the Private Key to a char buffer
@@ -81,11 +102,15 @@ IceSecurity::Ssl::OpenSSL::RSAKeyPair::keyToByteSeq(ByteSeq& keySeq)
ucharToByteSeq(privateKeyBuffer, privKeySize, keySeq);
delete []privateKeyBuffer;
+*/
}
void
IceSecurity::Ssl::OpenSSL::RSAKeyPair::certToByteSeq(ByteSeq& certSeq)
{
+ _publicKey->certToByteSeq(certSeq);
+
+/*
assert(_publicKey);
// Output the Public Key to a char buffer
@@ -102,26 +127,30 @@ IceSecurity::Ssl::OpenSSL::RSAKeyPair::certToByteSeq(ByteSeq& certSeq)
ucharToByteSeq(publicKeyBuffer, pubKeySize, certSeq);
delete []publicKeyBuffer;
+*/
}
RSA*
IceSecurity::Ssl::OpenSSL::RSAKeyPair::getRSAPrivateKey() const
{
- return _privateKey;
+ return _privateKey->getRSAPrivateKey();
}
X509*
IceSecurity::Ssl::OpenSSL::RSAKeyPair::getX509PublicKey() const
{
- return _publicKey;
+ return _publicKey->getX509PublicKey();
}
-IceSecurity::Ssl::OpenSSL::RSAKeyPair::RSAKeyPair(RSA* rsa, X509* x509) :
+// IceSecurity::Ssl::OpenSSL::RSAKeyPair::RSAKeyPair(RSA* rsa, X509* x509) :
+
+IceSecurity::Ssl::OpenSSL::RSAKeyPair::RSAKeyPair(const RSAPrivateKeyPtr& rsa, const RSAPublicKeyPtr& x509) :
_privateKey(rsa),
_publicKey(x509)
{
}
+/*
void
IceSecurity::Ssl::OpenSSL::RSAKeyPair::byteSeqToKey(const ByteSeq& keySeq)
{
@@ -178,4 +207,5 @@ IceSecurity::Ssl::OpenSSL::RSAKeyPair::byteSeqToUChar(const ByteSeq& sequence)
return ucharSeq;
}
+*/
diff --git a/cpp/src/Ice/SslRSAPrivateKey.cpp b/cpp/src/Ice/SslRSAPrivateKey.cpp
new file mode 100644
index 00000000000..2029a581a7a
--- /dev/null
+++ b/cpp/src/Ice/SslRSAPrivateKey.cpp
@@ -0,0 +1,97 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#include <IceUtil/Config.h>
+#include <IceUtil/Base64.h>
+#include <Ice/SslRSAPrivateKey.h>
+#include <Ice/SslIceUtils.h>
+#include <assert.h>
+
+void ::IceInternal::incRef(::IceSecurity::Ssl::OpenSSL::RSAPrivateKey* p) { p->__incRef(); }
+void ::IceInternal::decRef(::IceSecurity::Ssl::OpenSSL::RSAPrivateKey* p) { p->__decRef(); }
+
+using std::back_inserter;
+using std::string;
+using IceUtil::Base64;
+
+IceSecurity::Ssl::OpenSSL::RSAPrivateKey::RSAPrivateKey(const string& key)
+{
+ _privateKey = 0;
+ ByteSeq keySeq = Base64::decode(key);
+ byteSeqToKey(keySeq);
+}
+
+IceSecurity::Ssl::OpenSSL::RSAPrivateKey::RSAPrivateKey(const ByteSeq& keySeq)
+{
+ _privateKey = 0;
+ byteSeqToKey(keySeq);
+}
+
+IceSecurity::Ssl::OpenSSL::RSAPrivateKey::~RSAPrivateKey()
+{
+ RSA_free(_privateKey);
+}
+
+void
+IceSecurity::Ssl::OpenSSL::RSAPrivateKey::keyToBase64(string& b64Key)
+{
+ ByteSeq keySeq;
+ keyToByteSeq(keySeq);
+ b64Key = Base64::encode(keySeq);
+}
+
+void
+IceSecurity::Ssl::OpenSSL::RSAPrivateKey::keyToByteSeq(ByteSeq& keySeq)
+{
+ assert(_privateKey);
+
+ // Output the Private Key to a char buffer
+ unsigned int privKeySize = i2d_RSAPrivateKey(_privateKey, 0);
+
+ assert(privKeySize > 0);
+
+ unsigned char* privateKeyBuffer = new unsigned char[privKeySize];
+
+ // We have to do this because i2d_RSAPrivateKey changes the pointer.
+ unsigned char* privKeyBuff = privateKeyBuffer;
+ i2d_RSAPrivateKey(_privateKey, &privKeyBuff);
+
+ IceSecurity::Ssl::ucharToByteSeq(privateKeyBuffer, privKeySize, keySeq);
+
+ delete []privateKeyBuffer;
+}
+
+RSA*
+IceSecurity::Ssl::OpenSSL::RSAPrivateKey::getRSAPrivateKey() const
+{
+ return _privateKey;
+}
+
+IceSecurity::Ssl::OpenSSL::RSAPrivateKey::RSAPrivateKey(RSA* rsa) :
+ _privateKey(rsa)
+{
+}
+
+void
+IceSecurity::Ssl::OpenSSL::RSAPrivateKey::byteSeqToKey(const ByteSeq& keySeq)
+{
+ unsigned char* privateKeyBuffer = byteSeqToUChar(keySeq);
+ assert(privateKeyBuffer);
+
+ unsigned char* privKeyBuff = privateKeyBuffer;
+ unsigned char** privKeyBuffpp = &privKeyBuff;
+ RSA** rsapp = &_privateKey;
+
+ _privateKey = d2i_RSAPrivateKey(rsapp, privKeyBuffpp, (long)keySeq.size());
+ assert(_privateKey);
+
+ delete []privateKeyBuffer;
+}
+
diff --git a/cpp/src/Ice/SslRSAPublicKey.cpp b/cpp/src/Ice/SslRSAPublicKey.cpp
new file mode 100644
index 00000000000..95391cc5b5c
--- /dev/null
+++ b/cpp/src/Ice/SslRSAPublicKey.cpp
@@ -0,0 +1,102 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#include <IceUtil/Config.h>
+#include <IceUtil/Base64.h>
+#include <Ice/SslRSAPublicKey.h>
+#include <Ice/SslIceUtils.h>
+#include <assert.h>
+
+void ::IceInternal::incRef(::IceSecurity::Ssl::OpenSSL::RSAPublicKey* p) { p->__incRef(); }
+void ::IceInternal::decRef(::IceSecurity::Ssl::OpenSSL::RSAPublicKey* p) { p->__decRef(); }
+
+using std::back_inserter;
+using std::string;
+using IceUtil::Base64;
+
+IceSecurity::Ssl::OpenSSL::RSAPublicKey::RSAPublicKey(const string& cert)
+{
+ _publicKey = 0;
+
+ ByteSeq certSeq = Base64::decode(cert);
+
+ byteSeqToCert(certSeq);
+}
+
+IceSecurity::Ssl::OpenSSL::RSAPublicKey::RSAPublicKey(const ByteSeq& certSeq)
+{
+ _publicKey = 0;
+ byteSeqToCert(certSeq);
+}
+
+IceSecurity::Ssl::OpenSSL::RSAPublicKey::~RSAPublicKey()
+{
+ X509_free(_publicKey);
+}
+
+void
+IceSecurity::Ssl::OpenSSL::RSAPublicKey::certToBase64(string& b64Cert)
+{
+ ByteSeq certSeq;
+ certToByteSeq(certSeq);
+ b64Cert = Base64::encode(certSeq);
+}
+
+void
+IceSecurity::Ssl::OpenSSL::RSAPublicKey::certToByteSeq(ByteSeq& certSeq)
+{
+ assert(_publicKey);
+
+ // Output the Public Key to a char buffer
+ unsigned int pubKeySize = i2d_X509(_publicKey, 0);
+
+ assert(pubKeySize > 0);
+
+ unsigned char* publicKeyBuffer = new unsigned char[pubKeySize];
+
+ // We have to do this because i2d_X509_PUBKEY changes the pointer.
+ unsigned char* pubKeyBuff = publicKeyBuffer;
+ i2d_X509(_publicKey, &pubKeyBuff);
+
+ IceSecurity::Ssl::ucharToByteSeq(publicKeyBuffer, pubKeySize, certSeq);
+
+ delete []publicKeyBuffer;
+}
+
+X509*
+IceSecurity::Ssl::OpenSSL::RSAPublicKey::getX509PublicKey() const
+{
+ return _publicKey;
+}
+
+IceSecurity::Ssl::OpenSSL::RSAPublicKey::RSAPublicKey(X509* x509) :
+ _publicKey(x509)
+{
+}
+
+void
+IceSecurity::Ssl::OpenSSL::RSAPublicKey::byteSeqToCert(const ByteSeq& certSeq)
+{
+ unsigned char* publicKeyBuffer = byteSeqToUChar(certSeq);
+ assert(publicKeyBuffer);
+
+ // We have to do this because d2i_X509 changes the pointer.
+ unsigned char* pubKeyBuff = publicKeyBuffer;
+ unsigned char** pubKeyBuffpp = &pubKeyBuff;
+
+ X509** x509pp = &_publicKey;
+
+ _publicKey = d2i_X509(x509pp, pubKeyBuffpp, (long)certSeq.size());
+ assert(_publicKey);
+
+ delete []publicKeyBuffer;
+}
+
+
diff --git a/cpp/src/Ice/SslSystem.cpp b/cpp/src/Ice/SslSystem.cpp
index 1a18ebb5087..c8b2528875a 100644
--- a/cpp/src/Ice/SslSystem.cpp
+++ b/cpp/src/Ice/SslSystem.cpp
@@ -11,63 +11,54 @@
#include <string>
#include <Ice/SslSystem.h>
-using namespace std;
+using namespace std;
using IceSecurity::Ssl::CertificateVerifierPtr;
+using Ice::LoggerPtr;
+using Ice::PropertiesPtr;
+using IceInternal::TraceLevelsPtr;
void ::IceInternal::incRef(::IceSecurity::Ssl::System* p) { p->__incRef(); }
void ::IceInternal::decRef(::IceSecurity::Ssl::System* p) { p->__decRef(); }
-
-//
-// Public Methods
-//
-
-void
-IceSecurity::Ssl::System::setServerCertificateVerifier(const CertificateVerifierPtr& serverVerifier)
-{
- _serverVerifier = serverVerifier;
-}
-
-void
-IceSecurity::Ssl::System::setClientCertificateVerifier(const CertificateVerifierPtr& clientVerifier)
-{
- _clientVerifier = clientVerifier;
-}
-
-void
-IceSecurity::Ssl::System::setTrace(const TraceLevelsPtr& traceLevels)
-{
- _traceLevels = traceLevels;
-}
-
-bool
-IceSecurity::Ssl::System::isTraceSet() const
-{
- return _traceLevels;
-}
-
-void
-IceSecurity::Ssl::System::setLogger(const LoggerPtr& traceLevels)
-{
- _logger = traceLevels;
-}
-
-bool
-IceSecurity::Ssl::System::isLoggerSet() const
-{
- return _logger;
-}
-
-void
-IceSecurity::Ssl::System::setProperties(const PropertiesPtr& properties)
-{
- _properties = properties;
-}
-
-bool
-IceSecurity::Ssl::System::isPropertiesSet() const
-{
- return _properties;
-}
+
+//
+// Public Methods
+//
+
+void
+IceSecurity::Ssl::System::setTrace(const TraceLevelsPtr& traceLevels)
+{
+ _traceLevels = traceLevels;
+}
+
+bool
+IceSecurity::Ssl::System::isTraceSet() const
+{
+ return _traceLevels;
+}
+
+void
+IceSecurity::Ssl::System::setLogger(const LoggerPtr& traceLevels)
+{
+ _logger = traceLevels;
+}
+
+bool
+IceSecurity::Ssl::System::isLoggerSet() const
+{
+ return _logger;
+}
+
+void
+IceSecurity::Ssl::System::setProperties(const PropertiesPtr& properties)
+{
+ _properties = properties;
+}
+
+bool
+IceSecurity::Ssl::System::isPropertiesSet() const
+{
+ return _properties;
+}
//
// Protected Methods
diff --git a/cpp/src/Ice/SslSystem.h b/cpp/src/Ice/SslSystem.h
index e860fa337aa..a92b9833e0e 100644
--- a/cpp/src/Ice/SslSystem.h
+++ b/cpp/src/Ice/SslSystem.h
@@ -15,7 +15,7 @@
#include <IceUtil/Shared.h>
#include <Ice/SslConnectionF.h>
#include <Ice/Properties.h>
-#include <Ice/SslSystemF.h>
+#include <Ice/SslSystemF.h>
#include <Ice/SslCertificateVerifierF.h>
#include <Ice/TraceLevels.h>
#include <Ice/LoggerF.h>
@@ -26,15 +26,9 @@ namespace IceSecurity
namespace Ssl
{
-using std::string;
-using Ice::LoggerPtr;
-using IceInternal::TraceLevelsPtr;
-using Ice::PropertiesPtr;
-using IceUtil::Shared;
-
class Factory;
-class System : public Shared
+class System : public IceUtil::Shared
{
public:
@@ -43,18 +37,24 @@ public:
virtual void shutdown() = 0;
virtual Connection* createServerConnection(int) = 0;
- virtual Connection* createClientConnection(int) = 0;
-
- virtual void setServerCertificateVerifier(const CertificateVerifierPtr&);
- virtual void setClientCertificateVerifier(const CertificateVerifierPtr&);
+ virtual Connection* createClientConnection(int) = 0;
+
+ virtual void setServerCertificateVerifier(const CertificateVerifierPtr&) = 0;
+ virtual void setClientCertificateVerifier(const CertificateVerifierPtr&) = 0;
+
+ virtual void setServerCertAuthorityCertificate(const std::string&) = 0;
+ virtual void setClientCertAuthorityCertificate(const std::string&) = 0;
+
+ virtual void setServerRSAKeysBase64(const std::string&, const std::string&) = 0;
+ virtual void setClientRSAKeysBase64(const std::string&, const std::string&) = 0;
- virtual void setTrace(const TraceLevelsPtr&);
+ virtual void setTrace(const IceInternal::TraceLevelsPtr&);
bool isTraceSet() const;
- virtual void setLogger(const LoggerPtr&);
+ virtual void setLogger(const Ice::LoggerPtr&);
bool isLoggerSet() const;
- void setProperties(const PropertiesPtr&);
+ void setProperties(const Ice::PropertiesPtr&);
bool isPropertiesSet() const;
protected:
@@ -62,11 +62,9 @@ protected:
System();
virtual ~System();
- TraceLevelsPtr _traceLevels;
- LoggerPtr _logger;
- PropertiesPtr _properties;
- CertificateVerifierPtr _clientVerifier;
- CertificateVerifierPtr _serverVerifier;
+ IceInternal::TraceLevelsPtr _traceLevels;
+ Ice::LoggerPtr _logger;
+ Ice::PropertiesPtr _properties;
friend class Factory;
};
diff --git a/cpp/src/Ice/SslSystemOpenSSL.cpp b/cpp/src/Ice/SslSystemOpenSSL.cpp
index b7013614d4b..c3ac40dd945 100644
--- a/cpp/src/Ice/SslSystemOpenSSL.cpp
+++ b/cpp/src/Ice/SslSystemOpenSSL.cpp
@@ -28,20 +28,23 @@
#include <openssl/err.h>
#include <openssl/e_os.h>
#include <openssl/rand.h>
-#include <Ice/OpenSSL.h>
+#include <Ice/OpenSSL.h>
#include <Ice/SslSystem.h>
#include <Ice/SecurityException.h>
#include <Ice/SslConnectionOpenSSLClient.h>
#include <Ice/SslConnectionOpenSSLServer.h>
-#include <Ice/SslConfig.h>
-#include <Ice/SslRSAKeyPair.h>
-#include <Ice/SslJanitors.h>
+#include <Ice/SslConfig.h>
+#include <Ice/SslRSAKeyPair.h>
+#include <Ice/SslRSAPublicKey.h>
+#include <Ice/SslJanitors.h>
#include <Ice/SslCertificateVerifierOpenSSL.h>
#include <Ice/TraceLevels.h>
#include <Ice/Logger.h>
using namespace std;
+using IceInternal::TraceLevelsPtr;
+using Ice::LoggerPtr;
namespace IceSecurity
{
@@ -84,7 +87,7 @@ unsigned char System::_tempDiffieHellman512g[] =
// will initialize these. NOTE: If we SHOULD have multiple loggers
// going on simultaneously, this will definitely cause a problem.
TraceLevelsPtr System::_globalTraceLevels = 0;
-Ice::LoggerPtr System::_globalLogger = 0;
+LoggerPtr System::_globalLogger = 0;
}
@@ -103,7 +106,7 @@ tmpRSACallback(SSL *s, int isExport, int keyLength)
{
IceSecurity::Ssl::SystemPtr sslSystem = IceSecurity::Ssl::Factory::getSystemFromHandle(s);
- IceSecurity::Ssl::OpenSSL::System* openSslSystem = 0;
+ IceSecurity::Ssl::OpenSSL::System* openSslSystem = 0;
openSslSystem = dynamic_cast<IceSecurity::Ssl::OpenSSL::System*>(sslSystem.get());
RSA* rsaKey = openSslSystem->getRSAKey(s, isExport, keyLength);
@@ -116,7 +119,7 @@ tmpDHCallback(SSL *s, int isExport, int keyLength)
{
IceSecurity::Ssl::SystemPtr sslSystem = IceSecurity::Ssl::Factory::getSystemFromHandle(s);
- IceSecurity::Ssl::OpenSSL::System* openSslSystem = 0;
+ IceSecurity::Ssl::OpenSSL::System* openSslSystem = 0;
openSslSystem = dynamic_cast<IceSecurity::Ssl::OpenSSL::System*>(sslSystem.get());
DH* dh = openSslSystem->getDHParams(s, isExport, keyLength);
@@ -128,18 +131,30 @@ tmpDHCallback(SSL *s, int isExport, int keyLength)
int
verifyCallback(int ok, X509_STORE_CTX *ctx)
{
- // Tricky method to get access to our connection. I would use SSL_get_ex_data() to get
- // the Connection object, if only I had some way to retrieve the index of the object
- // in this function. Hence, we have to invent our own reference system here.
- SSL* ssl = static_cast<SSL*>(X509_STORE_CTX_get_ex_data(ctx, SSL_get_ex_data_X509_STORE_CTX_idx()));
- IceSecurity::Ssl::OpenSSL::ConnectionPtr connection = 0;
- connection = IceSecurity::Ssl::OpenSSL::Connection::getConnection(ssl);
- assert(connection);
-
- // Call the connection, get it to perform the verification.
+ // Tricky method to get access to our connection. I would use SSL_get_ex_data() to get
+ // the Connection object, if only I had some way to retrieve the index of the object
+ // in this function. Hence, we have to invent our own reference system here.
+ SSL* ssl = static_cast<SSL*>(X509_STORE_CTX_get_ex_data(ctx, SSL_get_ex_data_X509_STORE_CTX_idx()));
+ IceSecurity::Ssl::OpenSSL::ConnectionPtr connection = 0;
+ connection = IceSecurity::Ssl::OpenSSL::Connection::getConnection(ssl);
+ assert(connection);
+
+ // Call the connection, get it to perform the verification.
return connection->verifyCertificate(ok, ctx);
}
+// TODO: This is a complete hack to get this working again with the CA certificate.
+// Of course, this will have to be rewritten to handle this in the same manner
+// as the verifyCallback does.
+// -ASN
+int
+passwordCallback(char* buffer, int bufferSize, int rwFlag, void* userData)
+{
+ strncpy(buffer, "demo", bufferSize);
+ buffer[bufferSize - 1] = '\0';
+ return strlen(buffer);
+}
+
// This code duplicates functionality that existed in the BIO library of
// OpenSSL, but outputs to a Logger compatible source (ostringstream).
void
@@ -236,21 +251,21 @@ bio_dump_cb(BIO *bio, int cmd, const char *argp, int argi, long argl, long ret)
{
ostringstream outStringStream;
+ outStringStream << "PTC ";
+
if (cmd == (BIO_CB_READ|BIO_CB_RETURN))
{
- outStringStream << "PTC ";
outStringStream << "read from " << hex << (void *)bio << " [" << hex << (void *)argp;
outStringStream << "] (" << dec << argi << " bytes => " << ret << " (0x";
outStringStream << hex << ret << "))";
- dump(outStringStream, argp,(int)ret);
+// dump(outStringStream, argp,(int)ret);
}
else if (cmd == (BIO_CB_WRITE|BIO_CB_RETURN))
{
- outStringStream << "PTC ";
outStringStream << "write to " << hex << (void *)bio << " [" << hex << (void *)argp;
outStringStream << "] (" << dec << argi << " bytes => " << ret << " (0x";
outStringStream << hex << ret << "))";
- dump(outStringStream, argp,(int)ret);
+ // dump(outStringStream, argp,(int)ret);
}
if (cmd == (BIO_CB_READ|BIO_CB_RETURN) || cmd == (BIO_CB_WRITE|BIO_CB_RETURN))
@@ -352,48 +367,50 @@ IceSecurity::Ssl::OpenSSL::System::shutdown()
iDH++;
}
}
-
-void
-IceSecurity::Ssl::OpenSSL::System::setTrace(const TraceLevelsPtr& traceLevels)
-{
- // Note: Due to a known bug with VC++, I cannot simply call the base-class
- // implementation here, I get a C2352 error about calling a static function.
- _traceLevels = traceLevels;
-
- DefaultCertificateVerifier* clientVerifier = dynamic_cast<DefaultCertificateVerifier*>(_clientVerifier.get());
- DefaultCertificateVerifier* serverVerifier = dynamic_cast<DefaultCertificateVerifier*>(_serverVerifier.get());
-
- if (clientVerifier)
- {
- clientVerifier->setTraceLevels(traceLevels);
- }
-
- if (serverVerifier)
- {
- serverVerifier->setTraceLevels(traceLevels);
- }
-}
-
-void
-IceSecurity::Ssl::OpenSSL::System::setLogger(const LoggerPtr& logger)
-{
- // Note: Due to a known bug with VC++, I cannot simply call the base-class
- // implementation here, I get a C2352 error about calling a static function.
- _logger = logger;
-
- DefaultCertificateVerifier* clientVerifier = dynamic_cast<DefaultCertificateVerifier*>(_clientVerifier.get());
- DefaultCertificateVerifier* serverVerifier = dynamic_cast<DefaultCertificateVerifier*>(_serverVerifier.get());
-
- if (clientVerifier)
- {
- clientVerifier->setLogger(logger);
- }
-
- if (serverVerifier)
- {
- serverVerifier->setLogger(logger);
- }
-}
+
+void
+IceSecurity::Ssl::OpenSSL::System::setTrace(const TraceLevelsPtr& traceLevels)
+{
+ // Note: Due to a known bug with VC++, I cannot simply call the base-class
+ // implementation here, I get a C2352 error about calling a static function.
+ // Bug# Q153801
+ _traceLevels = traceLevels;
+
+ DefaultCertificateVerifier* clientVerifier = dynamic_cast<DefaultCertificateVerifier*>(_clientVerifier.get());
+ DefaultCertificateVerifier* serverVerifier = dynamic_cast<DefaultCertificateVerifier*>(_serverVerifier.get());
+
+ if (clientVerifier)
+ {
+ clientVerifier->setTraceLevels(traceLevels);
+ }
+
+ if (serverVerifier)
+ {
+ serverVerifier->setTraceLevels(traceLevels);
+ }
+}
+
+void
+IceSecurity::Ssl::OpenSSL::System::setLogger(const LoggerPtr& logger)
+{
+ // Note: Due to a known bug with VC++, I cannot simply call the base-class
+ // implementation here, I get a C2352 error about calling a static function.
+ // Bug# Q153801
+ _logger = logger;
+
+ DefaultCertificateVerifier* clientVerifier = dynamic_cast<DefaultCertificateVerifier*>(_clientVerifier.get());
+ DefaultCertificateVerifier* serverVerifier = dynamic_cast<DefaultCertificateVerifier*>(_serverVerifier.get());
+
+ if (clientVerifier)
+ {
+ clientVerifier->setLogger(logger);
+ }
+
+ if (serverVerifier)
+ {
+ serverVerifier->setLogger(logger);
+ }
+}
bool
IceSecurity::Ssl::OpenSSL::System::isConfigLoaded()
@@ -429,8 +446,8 @@ IceSecurity::Ssl::OpenSSL::System::loadConfig()
// Walk the parse tree, get the Client configuration.
if (sslConfig.loadClientConfig(clientGeneral, clientCertAuth, clientBaseCerts))
{
- if (_traceLevels->security >= IceSecurity::SECURITY_PROTOCOL)
- {
+ if (_traceLevels->security >= IceSecurity::SECURITY_PROTOCOL)
+ {
ostringstream s;
s << endl;
@@ -438,11 +455,14 @@ IceSecurity::Ssl::OpenSSL::System::loadConfig()
s << "------------------------------" << endl;
s << clientGeneral << endl << endl;
+ s << "CA File: " << clientCertAuth.getCAFileName() << endl;
+ s << "CA Path: " << clientCertAuth.getCAPath() << endl;
+
s << "Base Certificates - Client" << endl;
s << "--------------------------" << endl;
s << clientBaseCerts << endl;
- _logger->trace(_traceLevels->securityCat, s.str());
+ _logger->trace(_traceLevels->securityCat, s.str());
}
initClient(clientGeneral, clientCertAuth, clientBaseCerts);
@@ -456,8 +476,8 @@ IceSecurity::Ssl::OpenSSL::System::loadConfig()
// Walk the parse tree, get the Server configuration.
if (sslConfig.loadServerConfig(serverGeneral, serverCertAuth, serverBaseCerts, serverTempCerts))
{
- if (_traceLevels->security >= IceSecurity::SECURITY_PROTOCOL)
- {
+ if (_traceLevels->security >= IceSecurity::SECURITY_PROTOCOL)
+ {
ostringstream s;
s << endl;
@@ -465,6 +485,9 @@ IceSecurity::Ssl::OpenSSL::System::loadConfig()
s << "------------------------------" << endl;
s << serverGeneral << endl << endl;
+ s << "CA File: " << serverCertAuth.getCAFileName() << endl;
+ s << "CA Path: " << serverCertAuth.getCAPath() << endl;
+
s << "Base Certificates - Server" << endl;
s << "--------------------------" << endl;
s << serverBaseCerts << endl << endl;
@@ -473,11 +496,13 @@ IceSecurity::Ssl::OpenSSL::System::loadConfig()
s << "--------------------------" << endl;
s << serverTempCerts << endl;
- _logger->trace(_traceLevels->securityCat, s.str());
+ _logger->trace(_traceLevels->securityCat, s.str());
}
initServer(serverGeneral, serverCertAuth, serverBaseCerts, serverTempCerts);
}
+
+ _configLoaded = true;
}
RSA*
@@ -597,6 +622,99 @@ IceSecurity::Ssl::OpenSSL::System::getDHParams(SSL *s, int isExport, int keyLeng
return dh_tmp;
}
+IceSecurity::Ssl::OpenSSL::CertificateVerifierPtr
+IceSecurity::Ssl::OpenSSL::System::certificateVerifierTypeCheck(const IceSecurity::Ssl::CertificateVerifierPtr& verifier)
+{
+ // IceSecurity::Ssl::CertificateVerifier* passedVerifier = verifier.get();
+ // IceSecurity::Ssl::OpenSSL::CertificateVerifier* castVerifier;
+ // castVerifier = dynamic_cast<IceSecurity::Ssl::OpenSSL::CertificateVerifier*>(passedVerifier);
+
+ IceSecurity::Ssl::OpenSSL::CertificateVerifierPtr castVerifier;
+ castVerifier = IceSecurity::Ssl::OpenSSL::CertificateVerifierPtr::dynamicCast(verifier);
+
+ if (!castVerifier.get())
+ {
+ IceSecurity::Ssl::CertificateVerifierTypeException cvtEx(__FILE__, __LINE__);
+ throw cvtEx;
+ }
+
+ return castVerifier;
+}
+
+void
+IceSecurity::Ssl::OpenSSL::System::setServerCertificateVerifier(const IceSecurity::Ssl::CertificateVerifierPtr& serverVerifier)
+{
+ _serverVerifier = certificateVerifierTypeCheck(serverVerifier);
+}
+
+void
+IceSecurity::Ssl::OpenSSL::System::setClientCertificateVerifier(const IceSecurity::Ssl::CertificateVerifierPtr& clientVerifier)
+{
+ _clientVerifier = certificateVerifierTypeCheck(clientVerifier);
+}
+
+void
+IceSecurity::Ssl::OpenSSL::System::setServerCertAuthorityCertificate(const string& caCertString)
+{
+ if (_sslServerContext == 0)
+ {
+ ContextException contextEx(__FILE__, __LINE__);
+
+ contextEx._message = "Server context has not been set up - ";
+ contextEx._message += "please specify an SSL server configuration file.";
+
+ throw contextEx;
+ }
+
+ assert(_sslClientContext);
+
+ RSAPublicKey pubKey(caCertString);
+
+ X509_STORE* certStore = SSL_CTX_get_cert_store(_sslServerContext);
+
+ int addedCertAuthorityCert = X509_STORE_add_cert(certStore, pubKey.getX509PublicKey());
+
+ assert(addedCertAuthorityCert != 0);
+}
+
+void
+IceSecurity::Ssl::OpenSSL::System::setClientCertAuthorityCertificate(const string& caCertString)
+{
+ if (_sslClientContext == 0)
+ {
+ ContextException contextEx(__FILE__, __LINE__);
+
+ contextEx._message = "Client context has not been set up - ";
+ contextEx._message += "please specify an SSL client configuration file.";
+
+ throw contextEx;
+ }
+
+ assert(_sslClientContext);
+
+ RSAPublicKey pubKey(caCertString);
+
+ X509_STORE* certStore = SSL_CTX_get_cert_store(_sslClientContext);
+
+ int addedCertAuthorityCert = X509_STORE_add_cert(certStore, pubKey.getX509PublicKey());
+
+ assert(addedCertAuthorityCert != 0);
+}
+
+void
+IceSecurity::Ssl::OpenSSL::System::setServerRSAKeysBase64(const std::string& privateKey, const std::string& publicKey)
+{
+ assert(_sslServerContext);
+ addKeyCert(_sslServerContext, privateKey, publicKey);
+}
+
+void
+IceSecurity::Ssl::OpenSSL::System::setClientRSAKeysBase64(const std::string& privateKey, const std::string& publicKey)
+{
+ assert(_sslClientContext);
+ addKeyCert(_sslClientContext, privateKey, publicKey);
+}
+
//
// Protected
//
@@ -610,12 +728,12 @@ IceSecurity::Ssl::OpenSSL::System::System()
_randSeeded = 0;
_sslServerContext = 0;
_sslClientContext = 0;
-
- // Here we create a default verifier, which does very little other
- // than check the verification depth. This can be overridden.
- _clientVerifier = new DefaultCertificateVerifier();
- _serverVerifier = _clientVerifier;
-
+
+ // Here we create a default verifier, which does very little other
+ // than check the verification depth. This can be overridden.
+ _clientVerifier = new DefaultCertificateVerifier();
+ _serverVerifier = _clientVerifier;
+
SSL_load_error_strings();
OpenSSL_add_ssl_algorithms();
@@ -666,7 +784,7 @@ IceSecurity::Ssl::OpenSSL::System::initClient(GeneralConfig& general,
// Set the certificate verification mode.
SSL_CTX_set_verify(_sslClientContext, general.getVerifyMode(), verifyCallback);
- // Set the certificate verify depth to 10 deep.
+ // Set the certificate verify depth
SSL_CTX_set_verify_depth(_sslClientContext, general.getVerifyDepth());
// Process the RSA Certificate
@@ -747,8 +865,8 @@ IceSecurity::Ssl::OpenSSL::System::initServer(GeneralConfig& general,
SSL_CTX_set_verify(_sslServerContext, general.getVerifyMode(), verifyCallback);
// Set the certificate verify depth
- SSL_CTX_set_verify_depth(_sslServerContext, general.getVerifyDepth());
-
+ SSL_CTX_set_verify_depth(_sslServerContext, general.getVerifyDepth());
+
// Set the default context for the SSL system (can be overridden if needed) [SERVER ONLY].
SSL_CTX_set_session_id_context(_sslServerContext,
reinterpret_cast<const unsigned char *>(_sessionContext.c_str()),
@@ -789,15 +907,15 @@ IceSecurity::Ssl::OpenSSL::System::getSslMethod(SslProtocol sslVersion)
default :
{
- if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
- {
- string errorString;
-
- errorString = "SSL Version ";
- errorString += sslVersion;
- errorString += " not supported - defaulting to SSL_V23.";
- _logger->trace(_traceLevels->securityCat, "WRN " + errorString);
- }
+ if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
+ {
+ string errorString;
+
+ errorString = "SSL Version ";
+ errorString += sslVersion;
+ errorString += " not supported - defaulting to SSL_V23.";
+ _logger->trace(_traceLevels->securityCat, "WRN " + errorString);
+ }
sslMethod = SSLv23_method();
}
@@ -845,10 +963,10 @@ IceSecurity::Ssl::OpenSSL::System::addKeyCert(SSL_CTX* sslContext,
if (privateKey.getFileName().empty())
{
- if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
- {
- _logger->trace(_traceLevels->securityCat, "WRN No private key specified - using the certificate.");
- }
+ if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
+ {
+ _logger->trace(_traceLevels->securityCat, "WRN No private key specified - using the certificate.");
+ }
privKeyFile = publicFile;
privKeyFileType = publicEncoding;
@@ -896,21 +1014,21 @@ IceSecurity::Ssl::OpenSSL::System::addKeyCert(SSL_CTX* sslContext,
if (privKey.empty())
{
- if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
- {
- _logger->trace(_traceLevels->securityCat, "WRN No private key specified - using the certificate.");
- }
+ if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
+ {
+ _logger->trace(_traceLevels->securityCat, "WRN No private key specified - using the certificate.");
+ }
privKey = publicKey;
}
-
- // Make a key pair based on the Base64 encoded strings
- RSAKeyPair keyPair(privateKey, publicKey);
-
- // Janitors to ensure that everything gets cleaned up properly
- RSAJanitor rsaJanitor(keyPair.getRSAPrivateKey());
- X509Janitor x509Janitor(keyPair.getX509PublicKey());
-
+
+ // Make a key pair based on the Base64 encoded strings
+ RSAKeyPair keyPair(privateKey, publicKey);
+
+ // Janitors to ensure that everything gets cleaned up properly
+ RSAJanitor rsaJanitor(keyPair.getRSAPrivateKey());
+ X509Janitor x509Janitor(keyPair.getX509PublicKey());
+
// Set which Public Key file to use.
if (SSL_CTX_use_certificate(sslContext, x509Janitor.get()) <= 0)
{
@@ -928,6 +1046,8 @@ IceSecurity::Ssl::OpenSSL::System::addKeyCert(SSL_CTX* sslContext,
throw contextEx;
}
+ x509Janitor.clear();
+
// Set which Private Key file to use.
if (SSL_CTX_use_RSAPrivateKey(sslContext, rsaJanitor.get()) <= 0)
{
@@ -944,7 +1064,9 @@ IceSecurity::Ssl::OpenSSL::System::addKeyCert(SSL_CTX* sslContext,
throw contextEx;
}
-
+
+ rsaJanitor.clear();
+
// Check to see if the Private and Public keys that have been
// set against the SSL context match up.
if (!SSL_CTX_check_private_key(sslContext))
@@ -1032,7 +1154,7 @@ IceSecurity::Ssl::OpenSSL::System::sslGetErrors()
}
void
-IceSecurity::Ssl::OpenSSL::System::commonConnectionSetup(Connection* connection)
+IceSecurity::Ssl::OpenSSL::System::commonConnectionSetup(IceSecurity::Ssl::OpenSSL::Connection* connection)
{
connection->setTrace(_traceLevels);
connection->setLogger(_logger);
@@ -1044,8 +1166,7 @@ IceSecurity::Ssl::OpenSSL::System::commonConnectionSetup(Connection* connection)
if (!value.empty())
{
- // const_cast<int&>(handshakeReadTimeout) = atoi(value.c_str());
- handshakeReadTimeout = atoi(value.c_str());
+ handshakeReadTimeout = atoi(value.c_str());
}
else
{
@@ -1073,19 +1194,13 @@ IceSecurity::Ssl::OpenSSL::System::createConnection(SSL_CTX* sslContext, int soc
BIO_set_callback_arg(SSL_get_rbio(sslConnection), 0);
}
- // TODO: Remove?
- // Map the SSL Connection to this SslSystem
- // This is required for the OpenSSL callbacks
- // to work properly.
- // Factory::addSystemHandle(sslConnection, this);
-
return sslConnection;
}
void
IceSecurity::Ssl::OpenSSL::System::loadCAFiles(SSL_CTX* sslContext, CertificateAuthority& certAuth)
-{
- assert(sslContext);
+{
+ assert(sslContext);
string caFile = certAuth.getCAFileName();
string caPath = certAuth.getCAPath();
@@ -1097,7 +1212,7 @@ void
IceSecurity::Ssl::OpenSSL::System::loadCAFiles(SSL_CTX* sslContext, const char* caFile, const char* caPath)
{
assert(sslContext);
-
+
// The following checks are required to send the expected values to the OpenSSL library.
// It does not like receiving "", but prefers NULLs.
if ((caFile != 0) && (strlen(caFile) == 0))
@@ -1110,15 +1225,27 @@ IceSecurity::Ssl::OpenSSL::System::loadCAFiles(SSL_CTX* sslContext, const char*
caPath = 0;
}
+ // SSL_CTX_set_default_passwd_cb(sslContext, passwordCallback);
+
// Check the Certificate Authority file(s).
- if ((!SSL_CTX_load_verify_locations(sslContext, caFile, caPath)) ||
- (!SSL_CTX_set_default_verify_paths(sslContext)))
+ int loadVerifyRet = SSL_CTX_load_verify_locations(sslContext, caFile, caPath);
+
+ if (!loadVerifyRet)
+ {
+ if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
+ {
+ _logger->trace(_traceLevels->securityCat, "WRN Unable to load Certificate Authorities.");
+ }
+ }
+ else
{
- // Non Fatal.
- if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
- {
- _logger->trace(_traceLevels->securityCat, "WRN Unable to load/verify Certificate Authorities.");
- }
+ int setDefaultVerifyPathsRet = SSL_CTX_set_default_verify_paths(sslContext);
+
+
+ if (!setDefaultVerifyPathsRet && (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS))
+ {
+ _logger->trace(_traceLevels->securityCat, "WRN Unable to verify Certificate Authorities.");
+ }
}
}
@@ -1126,22 +1253,33 @@ void
IceSecurity::Ssl::OpenSSL::System::loadAndCheckCAFiles(SSL_CTX* sslContext, CertificateAuthority& certAuth)
{
assert(sslContext);
-
+
string caFile = certAuth.getCAFileName();
string caPath = certAuth.getCAPath();
// Check the Certificate Authority file(s).
loadCAFiles(sslContext, caFile.c_str(), caPath.c_str());
- if (!caPath.empty())
+ // NOTE: This might require some cleaning up.
+ string caCertBase64 = _properties->getProperty("Ice.Security.Ssl.Overrides.Server.CACertificate");
+ if (!caCertBase64.empty())
+ {
+ setServerCertAuthorityCertificate(caCertBase64);
+ }
+
+ // TODO: Check this if things stop working
+ if (!caFile.empty())
{
STACK_OF(X509_NAME)* certNames = SSL_load_client_CA_file(caFile.c_str());
- if ((certNames == 0) && (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS))
+ if (certNames == 0)
{
- string errorString = "Unable to load Certificate Authorities certificate names from " + caFile + ".\n";
- errorString += sslGetErrors();
- _logger->trace(_traceLevels->securityCat, "WRN " + errorString);
+ if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
+ {
+ string errorString = "Unable to load Certificate Authorities certificate names from " + caFile + ".\n";
+ errorString += sslGetErrors();
+ _logger->trace(_traceLevels->securityCat, "WRN " + errorString);
+ }
}
else
{
@@ -1153,7 +1291,7 @@ IceSecurity::Ssl::OpenSSL::System::loadAndCheckCAFiles(SSL_CTX* sslContext, Cert
DH*
IceSecurity::Ssl::OpenSSL::System::loadDHParam(const char* dhfile)
{
- assert(dhfile);
+ assert(dhfile);
DH* ret = 0;
BIO* bio;
@@ -1207,6 +1345,8 @@ IceSecurity::Ssl::OpenSSL::System::setDHParams(SSL_CTX* sslContext, BaseCertific
string dhFile;
int encoding = 0;
+ // TODO: This just looks plain wrong. RSA instead of DH params??? -ASN
+
if (baseCerts.getDHParams().getKeySize() != 0)
{
dhFile = baseCerts.getDHParams().getFileName();
@@ -1229,11 +1369,11 @@ IceSecurity::Ssl::OpenSSL::System::setDHParams(SSL_CTX* sslContext, BaseCertific
if (dh == 0)
{
- if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
- {
- _logger->trace(_traceLevels->securityCat,
- "WRN Could not load Diffie-Hellman params, generating a temporary 512bit key.");
- }
+ if (_traceLevels->security >= IceSecurity::SECURITY_WARNINGS)
+ {
+ _logger->trace(_traceLevels->securityCat,
+ "WRN Could not load Diffie-Hellman params, generating a temporary 512bit key.");
+ }
dh = getTempDH512();
}
@@ -1249,12 +1389,12 @@ IceSecurity::Ssl::OpenSSL::System::setDHParams(SSL_CTX* sslContext, BaseCertific
void
IceSecurity::Ssl::OpenSSL::System::setCipherList(SSL_CTX* sslContext, const string& cipherList)
{
- if (!cipherList.empty() && (!SSL_CTX_set_cipher_list(sslContext, cipherList.c_str())) &&
+ if (!cipherList.empty() && (!SSL_CTX_set_cipher_list(sslContext, cipherList.c_str())) &&
(_traceLevels->security >= IceSecurity::SECURITY_WARNINGS))
{
string errorString = "WRN Error setting cipher list " + cipherList + " - using default list.\n";
errorString += sslGetErrors();
- _logger->trace(_traceLevels->securityCat, errorString);
+ _logger->trace(_traceLevels->securityCat, errorString);
}
}
@@ -1335,11 +1475,11 @@ IceSecurity::Ssl::OpenSSL::System::initRandSystem(const string& randBytesFiles)
{
long randBytesLoaded = 0;
- if (!seedRand() && randBytesFiles.empty() && !RAND_status() &&
+ if (!seedRand() && randBytesFiles.empty() && !RAND_status() &&
(_traceLevels->security >= IceSecurity::SECURITY_WARNINGS))
{
- _logger->trace(_traceLevels->securityCat,
- "WRN There is a lack of random data, consider specifying a random data file.");
+ _logger->trace(_traceLevels->securityCat,
+ "WRN There is a lack of random data, consider specifying a random data file.");
}
if (!randBytesFiles.empty())
diff --git a/cpp/src/Ice/SslSystemOpenSSL.h b/cpp/src/Ice/SslSystemOpenSSL.h
index 0f26a9876c7..6eb1c1f41ea 100644
--- a/cpp/src/Ice/SslSystemOpenSSL.h
+++ b/cpp/src/Ice/SslSystemOpenSSL.h
@@ -42,6 +42,7 @@ enum SslProtocol
#include <Ice/SslCertificateAuthority.h>
#include <Ice/SslBaseCerts.h>
#include <Ice/SslTempCerts.h>
+#include <Ice/SslConnectionOpenSSL.h>
extern "C"
{
@@ -60,18 +61,12 @@ class GeneralConfig;
namespace OpenSSL
{
-using namespace Ice;
-using namespace IceSecurity::Ssl;
+typedef std::map<int,RSA*> RSAMap;
+typedef std::map<int,DH*> DHMap;
-using std::map;
-using std::string;
-
-typedef map<int,RSA*> RSAMap;
-typedef map<int,DH*> DHMap;
-
-typedef map<int,CertificateDesc> RSACertMap;
-typedef map<int,CertificateDesc> DSACertMap;
-typedef map<int,DiffieHellmanParamsFile> DHParamsMap;
+typedef std::map<int,CertificateDesc> RSACertMap;
+typedef std::map<int,CertificateDesc> DSACertMap;
+typedef std::map<int,DiffieHellmanParamsFile> DHParamsMap;
class System : public IceSecurity::Ssl::System
{
@@ -86,9 +81,9 @@ public:
// Shuts down the SSL System.
virtual void shutdown();
- virtual void setTrace(const TraceLevelsPtr&);
- virtual void setLogger(const LoggerPtr&);
-
+ virtual void setTrace(const IceInternal::TraceLevelsPtr&);
+ virtual void setLogger(const Ice::LoggerPtr&);
+
virtual bool isConfigLoaded();
virtual void loadConfig();
@@ -103,7 +98,17 @@ public:
// This is public because the tmpDHCallback must be able to access it.
DH* getDHParams(SSL*, int, int);
- static TraceLevelsPtr _globalTraceLevels;
+ CertificateVerifierPtr certificateVerifierTypeCheck(const IceSecurity::Ssl::CertificateVerifierPtr&);
+ virtual void setServerCertificateVerifier(const IceSecurity::Ssl::CertificateVerifierPtr&);
+ virtual void setClientCertificateVerifier(const IceSecurity::Ssl::CertificateVerifierPtr&);
+
+ virtual void setServerCertAuthorityCertificate(const std::string&);
+ virtual void setClientCertAuthorityCertificate(const std::string&);
+
+ virtual void setServerRSAKeysBase64(const std::string&, const std::string&);
+ virtual void setClientRSAKeysBase64(const std::string&, const std::string&);
+
+ static IceInternal::TraceLevelsPtr _globalTraceLevels;
static Ice::LoggerPtr _globalLogger;
protected:
@@ -113,6 +118,9 @@ protected:
private:
+ CertificateVerifierPtr _clientVerifier;
+ CertificateVerifierPtr _serverVerifier;
+
// Base Diffie-Hellman 512bit key (only to be used for key exchange).
static unsigned char _tempDiffieHellman512p[];
static unsigned char _tempDiffieHellman512g[];
@@ -137,53 +145,57 @@ private:
DHParamsMap _tempDHParamsFileMap;
// The Session ID Context (Server Only).
- string _sessionContext;
+ std::string _sessionContext;
// Flag as to whether the Random Number system has been seeded.
int _randSeeded;
bool _configLoaded;
- void setKeyCert(SSL_CTX*, const CertificateDesc&, const string&, const string&);
+ void setKeyCert(SSL_CTX*, const IceSecurity::Ssl::CertificateDesc&,
+ const std::string&, const std::string&);
// Call to initialize the SSL system.
- void initClient(GeneralConfig&, CertificateAuthority&, BaseCertificates&);
- void initServer(GeneralConfig&, CertificateAuthority&, BaseCertificates&, TempCertificates&);
+ void initClient(IceSecurity::Ssl::GeneralConfig&, IceSecurity::Ssl::CertificateAuthority&,
+ IceSecurity::Ssl::BaseCertificates&);
+ void initServer(IceSecurity::Ssl::GeneralConfig&, IceSecurity::Ssl::CertificateAuthority&,
+ IceSecurity::Ssl::BaseCertificates&, IceSecurity::Ssl::TempCertificates&);
SSL_METHOD* getSslMethod(SslProtocol);
- void processCertificate(SSL_CTX*, const CertificateDesc&);
- void addKeyCert(SSL_CTX*, const CertificateFile&, const CertificateFile&);
- void addKeyCert(SSL_CTX*, const string&, const string&);
+ void processCertificate(SSL_CTX*, const IceSecurity::Ssl::CertificateDesc&);
+ void addKeyCert(SSL_CTX*, const IceSecurity::Ssl::CertificateFile&,
+ const IceSecurity::Ssl::CertificateFile&);
+ void addKeyCert(SSL_CTX*, const std::string&, const std::string&);
- SSL_CTX* createContext(SslProtocol);
+ SSL_CTX* createContext(IceSecurity::Ssl::SslProtocol);
// Retrieves errors from the OpenSSL library.
- string sslGetErrors();
+ std::string sslGetErrors();
- void commonConnectionSetup(Connection*);
+ void commonConnectionSetup(IceSecurity::Ssl::OpenSSL::Connection*);
// Create a connection.
SSL* createConnection(SSL_CTX*, int);
// Methods for loading CAFiles into a Context.
- void loadCAFiles(SSL_CTX*, CertificateAuthority&);
+ void loadCAFiles(SSL_CTX*, IceSecurity::Ssl::CertificateAuthority&);
void loadCAFiles(SSL_CTX*, const char*, const char*);
- void loadAndCheckCAFiles(SSL_CTX*, CertificateAuthority&);
+ void loadAndCheckCAFiles(SSL_CTX*, IceSecurity::Ssl::CertificateAuthority&);
DH* loadDHParam(const char *);
DH* getTempDH(unsigned char*, int, unsigned char*, int);
DH* getTempDH512();
- void setDHParams(SSL_CTX*, BaseCertificates&);
+ void setDHParams(SSL_CTX*, IceSecurity::Ssl::BaseCertificates&);
- void setCipherList(SSL_CTX*, const string&);
+ void setCipherList(SSL_CTX*, const std::string&);
// Cryptographic Random Number System related routines.
int seedRand();
- long loadRandFiles(const string&);
- void initRandSystem(const string&);
+ long loadRandFiles(const std::string&);
+ void initRandSystem(const std::string&);
- void loadTempCerts(TempCertificates&);
+ void loadTempCerts(IceSecurity::Ssl::TempCertificates&);
friend class IceSecurity::Ssl::Factory;
friend class Connection;
diff --git a/cpp/src/Ice/SslTempCerts.h b/cpp/src/Ice/SslTempCerts.h
index a150673909b..a0fc4160489 100644
--- a/cpp/src/Ice/SslTempCerts.h
+++ b/cpp/src/Ice/SslTempCerts.h
@@ -41,8 +41,6 @@ protected:
DHVector _dhParams;
};
-using std::endl;
-
template<class Stream>
inline Stream& operator << (Stream& target, TempCertificates& tmpCerts)
{
@@ -51,9 +49,9 @@ inline Stream& operator << (Stream& target, TempCertificates& tmpCerts)
while (iRSA != eRSA)
{
- target << "RSA" << endl << "{" << endl;
+ target << "RSA" << std::endl << "{" << std::endl;
target << *iRSA;
- target << "}" << endl << endl;
+ target << "}" << std::endl << std::endl;
iRSA++;
}
@@ -62,9 +60,9 @@ inline Stream& operator << (Stream& target, TempCertificates& tmpCerts)
while (iDSA != eDSA)
{
- target << "DSA" << endl << "{" << endl;
+ target << "DSA" << std::endl << "{" << std::endl;
target << *iDSA;
- target << "}" << endl << endl;
+ target << "}" << std::endl << std::endl;
iDSA++;
}
@@ -73,9 +71,9 @@ inline Stream& operator << (Stream& target, TempCertificates& tmpCerts)
while (iDHP != eDHP)
{
- target << "DH" << endl << "{" << endl;
+ target << "DH" << std::endl << "{" << std::endl;
target << *iDHP;
- target << "}" << endl << endl;
+ target << "}" << std::endl << std::endl;
iDHP++;
}
diff --git a/cpp/src/IcePack/.depend b/cpp/src/IcePack/.depend
index e3373f0d083..8eefcaeb920 100644
--- a/cpp/src/IcePack/.depend
+++ b/cpp/src/IcePack/.depend
@@ -3,5 +3,7 @@ Grammar.o: Grammar.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ..
Scanner.o: Scanner.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../IcePack/Parser.h ../../include/IcePack/Admin.h ../IcePack/Grammar.h
Parser.o: Parser.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../IcePack/Parser.h ../../include/IcePack/Admin.h
Client.o: Client.cpp ../../include/Ice/Application.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../IcePack/Parser.h ../../include/IcePack/Admin.h
+Server.o: Server.cpp ../../include/Ice/Application.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../IcePack/AdminI.h ../../include/IcePack/Admin.h ../IcePack/Forward.h ../../include/IcePack/AdminF.h ../IcePack/Activator.h ../../include/IceUtil/Thread.h
+Forward.o: Forward.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../IcePack/Forward.h ../../include/IcePack/AdminF.h ../IcePack/Activator.h ../../include/IceUtil/Thread.h ../../include/IcePack/Admin.h
AdminI.o: AdminI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../IcePack/AdminI.h ../../include/IcePack/Admin.h
Activator.o: Activator.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/StreamF.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/Properties.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Communicator.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../IcePack/Activator.h ../../include/IceUtil/Thread.h ../../include/IcePack/Admin.h