summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rwxr-xr-xcpp/allTests.py1
-rw-r--r--cpp/config/Make.rules.AIX2
-rw-r--r--cpp/config/Make.rules.FreeBSD2
-rw-r--r--cpp/config/Make.rules.HP-UX2
-rw-r--r--cpp/config/Make.rules.Linux2
-rw-r--r--cpp/config/Make.rules.MINGW4
-rw-r--r--cpp/config/Make.rules.OSF12
-rw-r--r--cpp/config/Make.rules.SunOS2
-rwxr-xr-xcpp/config/Make.rules.mak2
-rw-r--r--cpp/demo/Glacier2/callback/config.client4
-rw-r--r--cpp/demo/Glacier2/callback/config.glacier24
-rw-r--r--cpp/demo/Glacier2/chat/config.client4
-rw-r--r--cpp/demo/Glacier2/chat/config.glacier24
-rw-r--r--cpp/demo/Ice/callback/config.client4
-rw-r--r--cpp/demo/Ice/callback/config.server4
-rw-r--r--cpp/demo/Ice/hello/config.client4
-rw-r--r--cpp/demo/Ice/hello/config.server6
-rwxr-xr-xcpp/demo/Ice/interleaved/config.client4
-rwxr-xr-xcpp/demo/Ice/interleaved/config.server4
-rw-r--r--cpp/demo/Ice/invoke/config.client4
-rw-r--r--cpp/demo/Ice/invoke/config.server4
-rw-r--r--cpp/demo/Ice/latency/config.client4
-rw-r--r--cpp/demo/Ice/latency/config.server4
-rw-r--r--cpp/demo/Ice/nested/config.client4
-rw-r--r--cpp/demo/Ice/nested/config.server4
-rw-r--r--cpp/demo/Ice/nrvo/config.client4
-rw-r--r--cpp/demo/Ice/nrvo/config.server4
-rw-r--r--cpp/demo/Ice/properties/config.client4
-rw-r--r--cpp/demo/Ice/properties/config.server4
-rw-r--r--cpp/demo/Ice/throughput/config.client4
-rw-r--r--cpp/demo/Ice/throughput/config.server4
-rw-r--r--cpp/demo/IceBox/hello/config.client4
-rw-r--r--cpp/demo/IceBox/hello/config.service4
-rw-r--r--cpp/demo/IceDiscovery/hello/config.client4
-rw-r--r--cpp/demo/IceDiscovery/hello/config.server4
-rw-r--r--cpp/include/Ice/Buffer.h2
-rw-r--r--cpp/include/IceSSL/Config.h4
-rw-r--r--cpp/include/IceSSL/Plugin.h77
-rw-r--r--cpp/include/IceUtil/SHA1.h65
-rw-r--r--cpp/src/Glacier2/CryptPermissionsVerifierI.cpp12
-rw-r--r--cpp/src/Glacier2/Makefile.mak2
-rw-r--r--cpp/src/Ice/ConnectionI.cpp24
-rw-r--r--cpp/src/Ice/PropertyNames.cpp3
-rw-r--r--cpp/src/Ice/PropertyNames.h2
-rw-r--r--cpp/src/Ice/TcpTransceiver.cpp2
-rw-r--r--cpp/src/Ice/TcpTransceiver.h2
-rw-r--r--cpp/src/Ice/Transceiver.h2
-rw-r--r--cpp/src/Ice/UdpTransceiver.cpp2
-rw-r--r--cpp/src/Ice/UdpTransceiver.h2
-rw-r--r--cpp/src/IceGrid/Makefile.mak2
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp15
-rw-r--r--cpp/src/IcePatch2Lib/.depend2
-rw-r--r--cpp/src/IcePatch2Lib/.depend.mak2
-rw-r--r--cpp/src/IcePatch2Lib/Util.cpp25
-rw-r--r--cpp/src/IceSSL/.depend26
-rw-r--r--cpp/src/IceSSL/.depend.mak26
-rw-r--r--cpp/src/IceSSL/AcceptorI.cpp4
-rw-r--r--cpp/src/IceSSL/Certificate.cpp462
-rw-r--r--cpp/src/IceSSL/ConnectorI.cpp5
-rw-r--r--cpp/src/IceSSL/EndpointI.cpp1
-rw-r--r--cpp/src/IceSSL/Makefile6
-rw-r--r--cpp/src/IceSSL/Makefile.mak30
-rw-r--r--cpp/src/IceSSL/OpenSSLEngine.cpp386
-rw-r--r--cpp/src/IceSSL/OpenSSLTransceiverI.cpp (renamed from cpp/src/IceSSL/TransceiverI.cpp)678
-rw-r--r--cpp/src/IceSSL/OpenSSLTransceiverI.h (renamed from cpp/src/IceSSL/TransceiverI.h)1
-rw-r--r--cpp/src/IceSSL/PluginI.cpp9
-rw-r--r--cpp/src/IceSSL/PluginI.h8
-rw-r--r--cpp/src/IceSSL/SChannelEngine.cpp664
-rw-r--r--cpp/src/IceSSL/SChannelTransceiverI.cpp1463
-rw-r--r--cpp/src/IceSSL/SChannelTransceiverI.h145
-rw-r--r--cpp/src/IceSSL/SSLEngine.cpp12
-rw-r--r--cpp/src/IceSSL/SSLEngine.h160
-rw-r--r--cpp/src/IceSSL/SSLEngineF.h10
-rw-r--r--cpp/src/IceSSL/SecureTransportEngine.cpp781
-rw-r--r--cpp/src/IceSSL/SecureTransportTransceiverI.cpp422
-rw-r--r--cpp/src/IceSSL/SecureTransportTransceiverI.h2
-rw-r--r--cpp/src/IceSSL/Util.cpp427
-rw-r--r--cpp/src/IceSSL/Util.h76
-rw-r--r--cpp/src/IceSSL/UtilF.h30
-rw-r--r--cpp/src/IceUtil/.depend1
-rw-r--r--cpp/src/IceUtil/.depend.mak1
-rw-r--r--cpp/src/IceUtil/Makefile3
-rw-r--r--cpp/src/IceUtil/Makefile.mak3
-rw-r--r--cpp/src/IceUtil/SHA1.cpp128
-rw-r--r--cpp/src/IceWS/.depend2
-rw-r--r--cpp/src/IceWS/.depend.mak2
-rw-r--r--cpp/src/IceWS/Makefile2
-rw-r--r--cpp/src/IceWS/TransceiverI.cpp40
-rw-r--r--cpp/src/IceWS/TransceiverI.h8
-rw-r--r--cpp/src/IceWS/Util.cpp28
-rw-r--r--cpp/test/Ice/background/AllTests.cpp12
-rw-r--r--cpp/test/Ice/background/Transceiver.cpp12
-rw-r--r--cpp/test/Ice/background/Transceiver.h2
-rw-r--r--cpp/test/Ice/timeout/AllTests.cpp5
-rw-r--r--cpp/test/Ice/timeout/Client.cpp2
-rw-r--r--cpp/test/IceSSL/certs/3bb63662.024
-rw-r--r--cpp/test/IceSSL/certs/86907d1c.024
-rw-r--r--cpp/test/IceSSL/certs/c_dsa_ca1.pfxbin0 -> 1916 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_dsa_nopass_ca1_priv.pem14
-rw-r--r--cpp/test/IceSSL/certs/c_dsa_nopass_ca1_pub.pem130
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca1.pfxbin0 -> 1937 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca1_exp.pfxbin0 -> 1936 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca2.pfxbin0 -> 1936 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_pub.pem72
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_nopass_ca1_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_nopass_ca1_pub.pem74
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_nopass_ca2_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_nopass_ca2_pub.pem74
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_pass_ca1.pfxbin0 -> 1935 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_pass_ca1_priv.pem30
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_pass_ca1_pub.pem74
-rw-r--r--cpp/test/IceSSL/certs/cacert1.pem24
-rw-r--r--cpp/test/IceSSL/certs/cacert2.pem24
-rw-r--r--cpp/test/IceSSL/certs/cakey1.pem28
-rw-r--r--cpp/test/IceSSL/certs/cakey2.pem28
-rw-r--r--cpp/test/IceSSL/certs/client.cnf4
-rw-r--r--cpp/test/IceSSL/certs/dfea7658.024
-rw-r--r--cpp/test/IceSSL/certs/dh_params1024.derbin138 -> 138 bytes
-rw-r--r--cpp/test/IceSSL/certs/dh_params512.derbin72 -> 72 bytes
-rw-r--r--cpp/test/IceSSL/certs/dsaparam1024.pem14
-rw-r--r--cpp/test/IceSSL/certs/fd61172a.024
-rwxr-xr-xcpp/test/IceSSL/certs/makecerts39
-rw-r--r--cpp/test/IceSSL/certs/s_dsa_ca1.pfxbin0 -> 1952 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_dsa_nopass_ca1_priv.pem14
-rw-r--r--cpp/test/IceSSL/certs/s_dsa_nopass_ca1_pub.pem130
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca1.pfxbin0 -> 1973 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca1_cn1.pfxbin0 -> 1949 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca1_cn2.pfxbin0 -> 1950 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca1_exp.pfxbin0 -> 1973 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_pub.pem74
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_pub.pem74
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_pub.pem72
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca1_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca1_pub.pem74
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca2.pfxbin0 -> 1971 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca2_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_nopass_ca2_pub.pem74
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_pass_ca1_priv.pem30
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_pass_ca1_pub.pem74
-rw-r--r--cpp/test/IceSSL/certs/server.cnf4
-rw-r--r--cpp/test/IceSSL/certs/test_ca1.cnf4
-rw-r--r--cpp/test/IceSSL/certs/test_ca2.cnf4
-rw-r--r--cpp/test/IceSSL/configuration/.depend4
-rw-r--r--cpp/test/IceSSL/configuration/.depend.mak4
-rw-r--r--cpp/test/IceSSL/configuration/AllTests.cpp1723
-rw-r--r--cpp/test/IceSSL/configuration/Client.cpp8
-rw-r--r--cpp/test/IceSSL/configuration/TestI.cpp3
-rw-r--r--cpp/test/IceUtil/Makefile3
-rw-r--r--cpp/test/IceUtil/Makefile.mak3
-rw-r--r--cpp/test/IceUtil/sha1/.depend1
-rw-r--r--cpp/test/IceUtil/sha1/.depend.mak1
-rw-r--r--cpp/test/IceUtil/sha1/.gitignore4
-rw-r--r--cpp/test/IceUtil/sha1/Client.cpp115
-rw-r--r--cpp/test/IceUtil/sha1/Makefile29
-rw-r--r--cpp/test/IceUtil/sha1/Makefile.mak33
-rwxr-xr-xcpp/test/IceUtil/sha1/run.py24
160 files changed, 6739 insertions, 3250 deletions
diff --git a/cpp/allTests.py b/cpp/allTests.py
index cb98545e02e..9724916ccee 100755
--- a/cpp/allTests.py
+++ b/cpp/allTests.py
@@ -32,6 +32,7 @@ tests = [
("IceUtil/uuid", ["once", "noappverifier"]), # This test is very slow with appverifier.
("IceUtil/timer", ["once"]),
("IceUtil/fileLock", ["once"]),
+ ("IceUtil/sha1", ["once"]),
("Slice/errorDetection", ["once"]),
("Slice/keyword", ["once"]),
("Slice/structure", ["once"]),
diff --git a/cpp/config/Make.rules.AIX b/cpp/config/Make.rules.AIX
index e905165609c..e554ac8fead 100644
--- a/cpp/config/Make.rules.AIX
+++ b/cpp/config/Make.rules.AIX
@@ -75,6 +75,6 @@ installlib = $(INSTALL) $(2)/$(3) $(1)
BASELIBS = -lIceUtil
LIBS = -lIce $(BASELIBS)
-ICEUTIL_OS_LIBS =
+ICEUTIL_OS_LIBS = -lcrypto
ICE_OS_LIBS =
diff --git a/cpp/config/Make.rules.FreeBSD b/cpp/config/Make.rules.FreeBSD
index 74086c1c895..df4313fec29 100644
--- a/cpp/config/Make.rules.FreeBSD
+++ b/cpp/config/Make.rules.FreeBSD
@@ -48,7 +48,7 @@ mklib = ar cr $(1) $(2)
BASELIBS = -lIceUtil -lpthread
LIBS = -lIce $(BASELIBS)
-ICEUTIL_OS_LIBS =
+ICEUTIL_OS_LIBS = -lcrypto
ICE_OS_LIBS =
ICONV_LIB = -liconv
diff --git a/cpp/config/Make.rules.HP-UX b/cpp/config/Make.rules.HP-UX
index 456c2871b12..6b30fd01a83 100644
--- a/cpp/config/Make.rules.HP-UX
+++ b/cpp/config/Make.rules.HP-UX
@@ -80,7 +80,7 @@ rpathlink = -L$(1)
BASELIBS = -lIceUtil -lxnet -lpthread
LIBS = $(BZIP2_RPATH_LINK) -lIce $(BASELIBS)
-ICEUTIL_OS_LIBS = -lpthread -lrt
+ICEUTIL_OS_LIBS = -lpthread -lrt -lcrypto
ICE_OS_LIBS =
lp64suffix = /pa20_64
diff --git a/cpp/config/Make.rules.Linux b/cpp/config/Make.rules.Linux
index eba47be808a..63a1c6b4c39 100644
--- a/cpp/config/Make.rules.Linux
+++ b/cpp/config/Make.rules.Linux
@@ -153,7 +153,7 @@ endif
ICESSL_LIBS = $(OPENSSL_RPATH_LINK) -lIceSSL
LIBS = $(BZIP2_RPATH_LINK) -lIce $(BASELIBS)
-ICEUTIL_OS_LIBS = -lrt
+ICEUTIL_OS_LIBS = -lrt $(OPENSSL_RPATH_LINK) -lcrypto
ICE_OS_LIBS = -ldl
PLATFORM_HAS_READLINE = yes
diff --git a/cpp/config/Make.rules.MINGW b/cpp/config/Make.rules.MINGW
index 6de669c684e..4600db7b4c9 100644
--- a/cpp/config/Make.rules.MINGW
+++ b/cpp/config/Make.rules.MINGW
@@ -72,7 +72,9 @@ installprogram = $(INSTALL_PROGRAM) $(1) $(2); \
CPPFLAGS := -I"$(THIRDPARTY_HOME)/include" $(CPPFLAGS)
LDPLATFORMFLAGS := -L"$(THIRDPARTY_HOME)/$(libsubdir)" $(LDFLAGS)
-OPENSSL_LIBS = -leay32$(COMPSUFFIX) -lssleay32$(COMPSUFFIX) -lws2_32
+SSL_OS_LIBS = -lsecur32 -lcrypt32 -lws2_32
+
+ICEWS_OS_LIBS = -lws2_32
ifeq ($(LP64),yes)
MCPP_LIBS = -L"$(THIRDPARTY_HOME)/lib/mingw$(lp64suffix)" -lmcpp
diff --git a/cpp/config/Make.rules.OSF1 b/cpp/config/Make.rules.OSF1
index a9db2bf73c5..48b6f51725c 100644
--- a/cpp/config/Make.rules.OSF1
+++ b/cpp/config/Make.rules.OSF1
@@ -76,5 +76,5 @@ endif
BASELIBS = -lIceUtil -lpthread
LIBS = -lIce $(BASELIBS)
-ICEUTIL_OS_LIBS = -lrt
+ICEUTIL_OS_LIBS = -lrt -lcrypto
ICE_OS_LIBS =
diff --git a/cpp/config/Make.rules.SunOS b/cpp/config/Make.rules.SunOS
index 5913756e754..e824abb18b3 100644
--- a/cpp/config/Make.rules.SunOS
+++ b/cpp/config/Make.rules.SunOS
@@ -114,6 +114,6 @@ rpathlink = -L$(1)
BASELIBS = -lIceUtil -lpthread
LIBS = $(BZIP2_RPATH_LINK) -lIce $(BASELIBS)
-ICEUTIL_OS_LIBS = -lpthread -lrt
+ICEUTIL_OS_LIBS = -lpthread -lrt -lcrypto
ICE_OS_LIBS = -ldl -lsocket
diff --git a/cpp/config/Make.rules.mak b/cpp/config/Make.rules.mak
index b9ca37c1fa2..8197ab86cf8 100755
--- a/cpp/config/Make.rules.mak
+++ b/cpp/config/Make.rules.mak
@@ -166,7 +166,7 @@ LIBSUFFIX = d
RCFLAGS = -D_DEBUG
!endif
-OPENSSL_LIBS = ssleay32.lib libeay32.lib
+SSL_OS_LIBS = secur32.lib crypt32.lib
EXPAT_LIBS = libexpat.lib
CPPFLAGS = $(CPPFLAGS) -I"$(includedir)"
diff --git a/cpp/demo/Glacier2/callback/config.client b/cpp/demo/Glacier2/callback/config.client
index 6d6b5365d62..79ccedbb3ae 100644
--- a/cpp/demo/Glacier2/callback/config.client
+++ b/cpp/demo/Glacier2/callback/config.client
@@ -47,7 +47,7 @@ Callback.Proxy=callback:tcp -h localhost -p 10000
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password \ No newline at end of file
diff --git a/cpp/demo/Glacier2/callback/config.glacier2 b/cpp/demo/Glacier2/callback/config.glacier2
index b1e379eeb40..a9e87a6d642 100644
--- a/cpp/demo/Glacier2/callback/config.glacier2
+++ b/cpp/demo/Glacier2/callback/config.glacier2
@@ -124,7 +124,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=glacier2.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Glacier2/chat/config.client b/cpp/demo/Glacier2/chat/config.client
index 64c7e27d6c3..6b1c79691e5 100644
--- a/cpp/demo/Glacier2/chat/config.client
+++ b/cpp/demo/Glacier2/chat/config.client
@@ -41,8 +41,8 @@ Ice.Default.Router=DemoGlacier2/router:ssl -p 4064 -h 127.0.0.1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Glacier2/chat/config.glacier2 b/cpp/demo/Glacier2/chat/config.glacier2
index e6680be52a7..92de691c35c 100644
--- a/cpp/demo/Glacier2/chat/config.glacier2
+++ b/cpp/demo/Glacier2/chat/config.glacier2
@@ -55,8 +55,8 @@ Glacier2.SessionTimeout=30
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=glacier2.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/callback/config.client b/cpp/demo/Ice/callback/config.client
index 000b2146af1..16c259cdd3b 100644
--- a/cpp/demo/Ice/callback/config.client
+++ b/cpp/demo/Ice/callback/config.client
@@ -48,7 +48,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/callback/config.server b/cpp/demo/Ice/callback/config.server
index 048f0045f62..29321c128ce 100644
--- a/cpp/demo/Ice/callback/config.server
+++ b/cpp/demo/Ice/callback/config.server
@@ -42,7 +42,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/hello/config.client b/cpp/demo/Ice/hello/config.client
index b791b95194a..47674564826 100644
--- a/cpp/demo/Ice/hello/config.client
+++ b/cpp/demo/Ice/hello/config.client
@@ -51,8 +51,8 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/hello/config.server b/cpp/demo/Ice/hello/config.server
index e576633d0b7..60027ebea4c 100644
--- a/cpp/demo/Ice/hello/config.server
+++ b/cpp/demo/Ice/hello/config.server
@@ -8,7 +8,7 @@ Hello.Endpoints=tcp -p 10000:udp -p 10000:ssl -p 10001:ws -p 10002:wss -p 10003
#
# Only listen on the localhost interface by default.
#
-Ice.Default.Host=localhost
+Ice.Default.Host=192.168.50.2
#
# We need to disable VerifyPeer for secure WebSocket (WSS) and Windows Store App clients.
@@ -52,8 +52,8 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/interleaved/config.client b/cpp/demo/Ice/interleaved/config.client
index 181a670fe23..7283a81dbe9 100755
--- a/cpp/demo/Ice/interleaved/config.client
+++ b/cpp/demo/Ice/interleaved/config.client
@@ -15,7 +15,7 @@ Ice.ACM.Client.Timeout=0
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/interleaved/config.server b/cpp/demo/Ice/interleaved/config.server
index b3afa959f38..4fa5e10d4c9 100755
--- a/cpp/demo/Ice/interleaved/config.server
+++ b/cpp/demo/Ice/interleaved/config.server
@@ -27,7 +27,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/invoke/config.client b/cpp/demo/Ice/invoke/config.client
index bbf5b32c3c4..6f4819406d4 100644
--- a/cpp/demo/Ice/invoke/config.client
+++ b/cpp/demo/Ice/invoke/config.client
@@ -41,7 +41,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/invoke/config.server b/cpp/demo/Ice/invoke/config.server
index afb8a12a7e1..28f2c0134a8 100644
--- a/cpp/demo/Ice/invoke/config.server
+++ b/cpp/demo/Ice/invoke/config.server
@@ -42,7 +42,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/latency/config.client b/cpp/demo/Ice/latency/config.client
index 43061f18a12..ad2fdc12b4c 100644
--- a/cpp/demo/Ice/latency/config.client
+++ b/cpp/demo/Ice/latency/config.client
@@ -27,8 +27,8 @@ Ice.ACM.Client.Timeout=0
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/latency/config.server b/cpp/demo/Ice/latency/config.server
index e324e7659e5..16258780b8b 100644
--- a/cpp/demo/Ice/latency/config.server
+++ b/cpp/demo/Ice/latency/config.server
@@ -25,8 +25,8 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/nested/config.client b/cpp/demo/Ice/nested/config.client
index 86de72eaed0..275fb8534d1 100644
--- a/cpp/demo/Ice/nested/config.client
+++ b/cpp/demo/Ice/nested/config.client
@@ -59,7 +59,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/nested/config.server b/cpp/demo/Ice/nested/config.server
index 92bce3de59a..5df68fdccea 100644
--- a/cpp/demo/Ice/nested/config.server
+++ b/cpp/demo/Ice/nested/config.server
@@ -53,7 +53,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password \ No newline at end of file
diff --git a/cpp/demo/Ice/nrvo/config.client b/cpp/demo/Ice/nrvo/config.client
index fc38babe618..a14785022fa 100644
--- a/cpp/demo/Ice/nrvo/config.client
+++ b/cpp/demo/Ice/nrvo/config.client
@@ -10,7 +10,7 @@ Nrvo.Proxy=nrvo:default -h localhost -p 10000
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/nrvo/config.server b/cpp/demo/Ice/nrvo/config.server
index d0f78c0f18a..8646b601080 100644
--- a/cpp/demo/Ice/nrvo/config.server
+++ b/cpp/demo/Ice/nrvo/config.server
@@ -16,7 +16,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/properties/config.client b/cpp/demo/Ice/properties/config.client
index c0d74a6be27..2e5ed88fda2 100644
--- a/cpp/demo/Ice/properties/config.client
+++ b/cpp/demo/Ice/properties/config.client
@@ -47,7 +47,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/properties/config.server b/cpp/demo/Ice/properties/config.server
index 2969290fd56..2565a2f9a51 100644
--- a/cpp/demo/Ice/properties/config.server
+++ b/cpp/demo/Ice/properties/config.server
@@ -57,7 +57,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/throughput/config.client b/cpp/demo/Ice/throughput/config.client
index 8dd16d1c369..7a69774e86f 100644
--- a/cpp/demo/Ice/throughput/config.client
+++ b/cpp/demo/Ice/throughput/config.client
@@ -27,8 +27,8 @@ Ice.ACM.Client.Timeout=0
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/Ice/throughput/config.server b/cpp/demo/Ice/throughput/config.server
index 4d422916147..4dbcaa82708 100644
--- a/cpp/demo/Ice/throughput/config.server
+++ b/cpp/demo/Ice/throughput/config.server
@@ -26,8 +26,8 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/IceBox/hello/config.client b/cpp/demo/IceBox/hello/config.client
index 59af9979d56..fdd69c6a52c 100644
--- a/cpp/demo/IceBox/hello/config.client
+++ b/cpp/demo/IceBox/hello/config.client
@@ -41,7 +41,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password \ No newline at end of file
diff --git a/cpp/demo/IceBox/hello/config.service b/cpp/demo/IceBox/hello/config.service
index b4a2ff5e2d3..0f7985ef852 100644
--- a/cpp/demo/IceBox/hello/config.service
+++ b/cpp/demo/IceBox/hello/config.service
@@ -41,7 +41,7 @@ Ice.Warn.Connections=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=service.keychain
IceSSL.KeychainPassword=password \ No newline at end of file
diff --git a/cpp/demo/IceDiscovery/hello/config.client b/cpp/demo/IceDiscovery/hello/config.client
index 7358239c4a6..d580f220ab0 100644
--- a/cpp/demo/IceDiscovery/hello/config.client
+++ b/cpp/demo/IceDiscovery/hello/config.client
@@ -19,8 +19,8 @@ Ice.Trace.Locator=1
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=c_rsa1024_pub.pem
-IceSSL.KeyFile=c_rsa1024_priv.pem
+IceSSL.CertFile=c_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=client.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/demo/IceDiscovery/hello/config.server b/cpp/demo/IceDiscovery/hello/config.server
index bbacf2c65fa..65f04936166 100644
--- a/cpp/demo/IceDiscovery/hello/config.server
+++ b/cpp/demo/IceDiscovery/hello/config.server
@@ -27,8 +27,8 @@ Ice.Plugin.IceDiscovery=IceDiscovery:createIceDiscovery
Ice.Plugin.IceSSL=IceSSL:createIceSSL
IceSSL.DefaultDir=../../../../certs
IceSSL.CertAuthFile=cacert.pem
-IceSSL.CertFile=s_rsa1024_pub.pem
-IceSSL.KeyFile=s_rsa1024_priv.pem
+IceSSL.CertFile=s_rsa1024.pfx
+IceSSL.Password=password
IceSSL.Keychain=server.keychain
IceSSL.KeychainPassword=password
diff --git a/cpp/include/Ice/Buffer.h b/cpp/include/Ice/Buffer.h
index 2cb5b421464..d7c81a13b83 100644
--- a/cpp/include/Ice/Buffer.h
+++ b/cpp/include/Ice/Buffer.h
@@ -94,7 +94,7 @@ public:
}
_size = n;
}
-
+
void reset()
{
assert(!_buf || _capacity > 0);
diff --git a/cpp/include/IceSSL/Config.h b/cpp/include/IceSSL/Config.h
index f28999ee1f7..c1a71e40ea8 100644
--- a/cpp/include/IceSSL/Config.h
+++ b/cpp/include/IceSSL/Config.h
@@ -9,8 +9,10 @@
#include <Ice/Config.h>
-#ifdef __APPLE__
+#if defined(__APPLE__)
# define ICE_USE_SECURE_TRANSPORT 1
+#elif defined(_WIN32)
+# define ICE_USE_SCHANNEL 1
#else
# define ICE_USE_OPENSSL 1
#endif
diff --git a/cpp/include/IceSSL/Plugin.h b/cpp/include/IceSSL/Plugin.h
index 70b318806e8..743918ea755 100644
--- a/cpp/include/IceSSL/Plugin.h
+++ b/cpp/include/IceSSL/Plugin.h
@@ -25,8 +25,10 @@
# include <sys/socket.h>
#endif
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
# include <CoreFoundation/CFError.h>
+#elif defined(ICE_USE_SCHANNEL)
+# include <wincrypt.h>
#endif
#ifndef ICE_SSL_API
@@ -38,6 +40,7 @@
#endif
#ifdef ICE_USE_OPENSSL
+
//
// Pointer to an opaque SSL session context object. ssl_ctx_st is the
// OpenSSL type that holds configuration settings for all SSL
@@ -64,17 +67,29 @@ typedef struct X509_name_st X509NAME;
#elif defined(ICE_USE_SECURE_TRANSPORT)
//
-// Pointer to an opanque certificate object.
+// Pointer to an opaque certificate object.
//
struct OpaqueSecCertificateRef;
typedef struct OpaqueSecCertificateRef* X509CertificateRef;
//
-// Pointer to an opaque connection objecct.
+// Pointer to an opaque key object.
//
struct OpaqueSecKeyRef;
typedef struct OpaqueSecKeyRef* KeyRef;
+#elif defined(ICE_USE_SCHANNEL)
+
+//
+// Pointer to an opaque certificate object.
+//
+typedef CERT_SIGNED_CONTENT_INFO* X509CertificateRef;
+
+//
+// Pointer to an opaque key object.
+//
+typedef CERT_PUBLIC_KEY_INFO* KeyRef;
+
#endif
namespace IceSSL
@@ -157,15 +172,24 @@ class ICE_SSL_API PublicKey : public IceUtil::Shared
public:
~PublicKey();
-
+
+ //
+ // Retrieve the native public key value wrapped by this object.
+ //
+ // The returned reference is only valid for the lifetime of this
+ // object. With SecureTransport you can increment the reference
+ // count of the returned object with CFRetain.
+ //
KeyRef key() const;
private:
- PublicKey(KeyRef);
+ PublicKey(const CertificatePtr&, KeyRef);
friend class Certificate;
+ CertificatePtr _cert;
KeyRef _key;
+
};
typedef IceUtil::Handle<PublicKey> PublicKeyPtr;
@@ -191,6 +215,7 @@ public:
//
DistinguishedName(X509NAME*);
#endif
+
//
// Create a DistinguishedName from a string encoded using
// the rules in RFC2253.
@@ -236,7 +261,7 @@ private:
};
//
-// This convenience class is a wrapper around OpenSSL's X509 type.
+// This convenience class is a wrapper around a native certificate.
// The interface is inspired by java.security.cert.X509Certificate.
//
class ICE_SSL_API Certificate : public IceUtil::Shared
@@ -244,8 +269,10 @@ class ICE_SSL_API Certificate : public IceUtil::Shared
public:
//
- // Construct a certificate using a X509*. The Certificate assumes
- // ownership of the X509* struct.
+ // Construct a certificate using a native certificate.
+ //
+ // The Certificate class assumes ownership of the given native
+ // certificate.
//
Certificate(X509CertificateRef);
~Certificate();
@@ -258,11 +285,16 @@ public:
static CertificatePtr load(const std::string&);
//
- // Decode a certificate from a string that uses the PEM encoding format.
- // Raises CertificateEncodingException if an error occurs.
+ // Decode a certificate from a string that uses the PEM encoding
+ // format. Raises CertificateEncodingException if an error
+ // occurs.
//
static CertificatePtr decode(const std::string&);
+ //
+ // Those operators compare the certificates for equality using the
+ // native certificate comparison method.
+ //
bool operator==(const Certificate&) const;
bool operator!=(const Certificate&) const;
@@ -282,11 +314,12 @@ public:
// Verify that this certificate was signed by the given public
// key. Returns true if signed, false otherwise.
//
- // This method was deprecated for consistency with some SSL engines
- // that require a certificate and not just a public key to verify
- // the certificate signature.
+ // This method was deprecated for consistency with some SSL
+ // engines that require a certificate and not just a public key to
+ // verify the certificate signature.
//
- ICE_DEPRECATED_API("is deprecated, use verify(const CertificatePtr&) instead") bool verify(const PublicKeyPtr&) const;
+ ICE_DEPRECATED_API("verify(const PublicKeyPtr&) is deprecated, use verify(const CertificatePtr&) instead")
+ bool verify(const PublicKeyPtr&) const;
#endif
//
@@ -386,16 +419,24 @@ public:
std::string toString() const;
//
- // Retrieve the X509 value wrapped by this object. The reference count
- // of the X509 value is not incremented, therefore it is only valid
- // for the lifetime of this object unless the caller increments its
- // reference count explicitly using X509_dup.
+ // Retrieve the native X509 certificate value wrapped by this
+ // object.
+ //
+ // The returned reference is only valid for the lifetime of this
+ // object. With SecureTransport you can increment the reference
+ // count of the returned object with CFRetain. With OpenSSL, you
+ // can increment it with X509_dup. With SChannel, the returned
+ // reference is a pointer to a struct.
//
X509CertificateRef getCert() const;
private:
X509CertificateRef _cert;
+
+#ifdef ICE_USE_SCHANNEL
+ CERT_INFO* _certInfo;
+#endif
};
//
diff --git a/cpp/include/IceUtil/SHA1.h b/cpp/include/IceUtil/SHA1.h
new file mode 100644
index 00000000000..eff242ece75
--- /dev/null
+++ b/cpp/include/IceUtil/SHA1.h
@@ -0,0 +1,65 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef ICE_UTIL_SHA1_H
+#define ICE_UTIL_SHA1_H
+
+#include <IceUtil/Config.h>
+
+#include <vector>
+
+#ifndef ICE_OS_WINRT
+# if defined(_WIN32)
+# include <Wincrypt.h>
+# elif defined(__APPLE__)
+# include <CommonCrypto/CommonDigest.h>
+# else
+# include <openssl/sha.h>
+# endif
+#endif
+
+namespace IceUtil
+{
+
+ICE_UTIL_API void
+sha1(const unsigned char*, std::size_t, std::vector<unsigned char>&);
+
+#ifndef ICE_OS_WINRT
+class ICE_UTIL_API SHA1
+{
+public:
+ SHA1();
+
+# ifdef _WIN32
+ ~SHA1();
+# endif
+
+ void update(const unsigned char*, std::size_t);
+
+ void finalize(std::vector<unsigned char>&);
+
+private:
+
+ // noncopyable
+ SHA1(const SHA1&);
+ SHA1 operator=(const SHA1&);
+
+# if defined (_WIN32)
+ HCRYPTPROV _ctx;
+ HCRYPTHASH _hash;
+# elif defined(__APPLE__)
+ CC_SHA1_CTX _ctx;
+# else
+ SHA_CTX _ctx;
+# endif
+};
+#endif
+
+}
+#endif
diff --git a/cpp/src/Glacier2/CryptPermissionsVerifierI.cpp b/cpp/src/Glacier2/CryptPermissionsVerifierI.cpp
index 0f1e3027a59..f677a41b570 100644
--- a/cpp/src/Glacier2/CryptPermissionsVerifierI.cpp
+++ b/cpp/src/Glacier2/CryptPermissionsVerifierI.cpp
@@ -8,11 +8,9 @@
// **********************************************************************
#include <Glacier2/CryptPermissionsVerifierI.h>
-#include <openssl/des.h>
-// Ignore OS X OpenSSL deprecation warnings
-#ifdef __APPLE__
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#ifndef __APPLE__
+# include <openssl/des.h>
#endif
using namespace std;
@@ -44,10 +42,10 @@ Glacier2::CryptPermissionsVerifierI::checkPermissions(
char buff[14];
string salt = p->second.substr(0, 2);
-#if OPENSSL_VERSION_NUMBER >= 0x0090700fL
- DES_fcrypt(password.c_str(), salt.c_str(), buff);
+#if defined(__APPLE__)
+ return p->second == crypt(password.c_str(), salt.c_str());
#else
- des_fcrypt(password.c_str(), salt.c_str(), buff);
+ DES_fcrypt(password.c_str(), salt.c_str(), buff);
#endif
return p->second == buff;
}
diff --git a/cpp/src/Glacier2/Makefile.mak b/cpp/src/Glacier2/Makefile.mak
index 5d82e55571f..6ca049e0837 100644
--- a/cpp/src/Glacier2/Makefile.mak
+++ b/cpp/src/Glacier2/Makefile.mak
@@ -35,7 +35,7 @@ SRCS = $(OBJS:.obj=.cpp)
CPPFLAGS = -I.. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
SLICE2CPPFLAGS = --include-dir Glacier2 $(SLICE2CPPFLAGS)
-LINKWITH = $(LIBS) $(OPENSSL_LIBS) glacier2$(LIBSUFFIX).lib icessl$(LIBSUFFIX).lib
+LINKWITH = $(LIBS) $(OPENSSL_LIBS) glacier2$(LIBSUFFIX).lib icessl$(LIBSUFFIX).lib libeay32.lib
!if "$(GENERATE_PDB)" == "yes"
PDBFLAGS = /pdb:$(ROUTER:.exe=.pdb)
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp
index 22cc069ef08..37afd228ca7 100644
--- a/cpp/src/Ice/ConnectionI.cpp
+++ b/cpp/src/Ice/ConnectionI.cpp
@@ -1532,12 +1532,19 @@ Ice::ConnectionI::startAsync(SocketOperation operation)
}
else if(operation & SocketOperationRead)
{
- if(_observer && !_readHeader)
+ if(!_hasMoreData)
{
- _observer.startRead(_readStream);
+ if(_observer && !_readHeader)
+ {
+ _observer.startRead(_readStream);
+ }
+
+ _transceiver->startRead(_readStream);
+ }
+ else
+ {
+ _transceiver->getNativeInfo()->completed(IceInternal::SocketOperationRead);
}
-
- _transceiver->startRead(_readStream);
}
}
catch(const Ice::LocalException& ex)
@@ -1563,10 +1570,13 @@ Ice::ConnectionI::finishAsync(SocketOperation operation)
}
else if(operation & SocketOperationRead)
{
- _transceiver->finishRead(_readStream);
- if(_observer && !_readHeader)
+ if(!_hasMoreData)
{
- _observer.finishRead(_readStream);
+ _transceiver->finishRead(_readStream, _hasMoreData);
+ if(_observer && !_readHeader)
+ {
+ _observer.finishRead(_readStream);
+ }
}
}
}
diff --git a/cpp/src/Ice/PropertyNames.cpp b/cpp/src/Ice/PropertyNames.cpp
index e8173132ac5..bbd8bf78e33 100644
--- a/cpp/src/Ice/PropertyNames.cpp
+++ b/cpp/src/Ice/PropertyNames.cpp
@@ -6,7 +6,7 @@
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
-// Generated by makeprops.py from file ./config/PropertyNames.xml, Thu Jul 31 10:17:55 2014
+// Generated by makeprops.py from file ./config/PropertyNames.xml, Fri Aug 1 17:15:07 2014
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
@@ -1002,6 +1002,7 @@ const IceInternal::Property IceSSLPropsData[] =
IceInternal::Property("IceSSL.Alias", false, 0),
IceInternal::Property("IceSSL.CertAuthDir", false, 0),
IceInternal::Property("IceSSL.CertAuthFile", false, 0),
+ IceInternal::Property("IceSSL.CertStore", false, 0),
IceInternal::Property("IceSSL.CertFile", false, 0),
IceInternal::Property("IceSSL.CertVerifier", false, 0),
IceInternal::Property("IceSSL.CheckCertName", false, 0),
diff --git a/cpp/src/Ice/PropertyNames.h b/cpp/src/Ice/PropertyNames.h
index 0ea2573f46b..aac06f2e5ca 100644
--- a/cpp/src/Ice/PropertyNames.h
+++ b/cpp/src/Ice/PropertyNames.h
@@ -6,7 +6,7 @@
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
-// Generated by makeprops.py from file ./config/PropertyNames.xml, Thu Jul 31 10:17:55 2014
+// Generated by makeprops.py from file ./config/PropertyNames.xml, Fri Aug 1 17:15:07 2014
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
diff --git a/cpp/src/Ice/TcpTransceiver.cpp b/cpp/src/Ice/TcpTransceiver.cpp
index 6f32d06ed8f..f5c30d11457 100644
--- a/cpp/src/Ice/TcpTransceiver.cpp
+++ b/cpp/src/Ice/TcpTransceiver.cpp
@@ -464,7 +464,7 @@ IceInternal::TcpTransceiver::startRead(Buffer& buf)
}
void
-IceInternal::TcpTransceiver::finishRead(Buffer& buf)
+IceInternal::TcpTransceiver::finishRead(Buffer& buf, bool&)
{
if(static_cast<int>(_read.count) == SOCKET_ERROR)
{
diff --git a/cpp/src/Ice/TcpTransceiver.h b/cpp/src/Ice/TcpTransceiver.h
index 165cbebe523..691e9aafce7 100644
--- a/cpp/src/Ice/TcpTransceiver.h
+++ b/cpp/src/Ice/TcpTransceiver.h
@@ -47,7 +47,7 @@ public:
virtual bool startWrite(Buffer&);
virtual void finishWrite(Buffer&);
virtual void startRead(Buffer&);
- virtual void finishRead(Buffer&);
+ virtual void finishRead(Buffer&, bool&);
#endif
virtual std::string protocol() const;
virtual std::string toString() const;
diff --git a/cpp/src/Ice/Transceiver.h b/cpp/src/Ice/Transceiver.h
index 0849f6c735f..3e645a7793e 100644
--- a/cpp/src/Ice/Transceiver.h
+++ b/cpp/src/Ice/Transceiver.h
@@ -36,7 +36,7 @@ public:
virtual bool startWrite(Buffer&) = 0;
virtual void finishWrite(Buffer&) = 0;
virtual void startRead(Buffer&) = 0;
- virtual void finishRead(Buffer&) = 0;
+ virtual void finishRead(Buffer&, bool&) = 0;
#endif
virtual std::string protocol() const = 0;
diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp
index 37483a7fb09..a82f0e0f4ae 100644
--- a/cpp/src/Ice/UdpTransceiver.cpp
+++ b/cpp/src/Ice/UdpTransceiver.cpp
@@ -668,7 +668,7 @@ IceInternal::UdpTransceiver::startRead(Buffer& buf)
}
void
-IceInternal::UdpTransceiver::finishRead(Buffer& buf)
+IceInternal::UdpTransceiver::finishRead(Buffer& buf, bool&)
{
#ifdef ICE_OS_WINRT
IceUtil::Mutex::Lock lock(_mutex);
diff --git a/cpp/src/Ice/UdpTransceiver.h b/cpp/src/Ice/UdpTransceiver.h
index 27891d53a2f..02b8c3267f5 100644
--- a/cpp/src/Ice/UdpTransceiver.h
+++ b/cpp/src/Ice/UdpTransceiver.h
@@ -53,7 +53,7 @@ public:
virtual bool startWrite(Buffer&);
virtual void finishWrite(Buffer&);
virtual void startRead(Buffer&);
- virtual void finishRead(Buffer&);
+ virtual void finishRead(Buffer&, bool&);
#endif
virtual std::string protocol() const;
virtual std::string toString() const;
diff --git a/cpp/src/IceGrid/Makefile.mak b/cpp/src/IceGrid/Makefile.mak
index a5198b77954..7edf4b4f2c1 100644
--- a/cpp/src/IceGrid/Makefile.mak
+++ b/cpp/src/IceGrid/Makefile.mak
@@ -103,7 +103,7 @@ LINKWITH = $(LIBS) glacier2$(LIBSUFFIX).lib
ALINKWITH = $(LINKWITH) icegrid$(LIBSUFFIX).lib icexml$(LIBSUFFIX).lib icepatch2$(LIBSUFFIX).lib \
icebox$(LIBSUFFIX).lib
NLINKWITH = $(ALINKWITH) freeze$(LIBSUFFIX).lib icestorm$(LIBSUFFIX).lib icebox$(LIBSUFFIX).lib \
- icessl$(LIBSUFFIX).lib icestormservice$(LIBSUFFIX).lib $(OPENSSL_LIBS) pdh.lib ws2_32.lib
+ icessl$(LIBSUFFIX).lib icestormservice$(LIBSUFFIX).lib libeay32.lib pdh.lib ws2_32.lib
SLICE2CPPFLAGS = --checksum --ice --include-dir IceGrid $(SLICE2CPPFLAGS)
CPPFLAGS = -I. -I.. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN -Zm200
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index 5bc98f5b188..319686336e7 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -40,15 +40,12 @@
#include <fstream>
-#include <openssl/des.h> // For crypt() passwords
+#ifndef __APPLE__
+# include <openssl/des.h> // For crypt() passwords
+#endif
#include <sys/types.h>
-// Ignore OS X OpenSSL deprecation warnings
-#ifdef __APPLE__
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-#endif
-
using namespace std;
using namespace Ice;
using namespace IceGrid;
@@ -100,10 +97,10 @@ public:
char buff[14];
string salt = p->second.substr(0, 2);
-#if OPENSSL_VERSION_NUMBER >= 0x0090700fL
- DES_fcrypt(password.c_str(), salt.c_str(), buff);
+#if defined(__APPLE__)
+ return p->second == crypt(password.c_str(), salt.c_str());
#else
- des_fcrypt(password.c_str(), salt.c_str(), buff);
+ DES_fcrypt(password.c_str(), salt.c_str(), buff);
#endif
return p->second == buff;
}
diff --git a/cpp/src/IcePatch2Lib/.depend b/cpp/src/IcePatch2Lib/.depend
index 2bea7a32b25..c3f9f48b3ee 100644
--- a/cpp/src/IcePatch2Lib/.depend
+++ b/cpp/src/IcePatch2Lib/.depend
@@ -1,4 +1,4 @@
-Util$(OBJEXT): Util.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/StringConverter.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/IceUtil/IconvStringConverter.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IcePatch2/Util.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Config.h $(includedir)/Ice/DeprecatedStringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/GCObject.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/NativePropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h $(includedir)/IcePatch2/FileInfo.h
+Util$(OBJEXT): Util.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/StringConverter.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/IceUtil/IconvStringConverter.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/SHA1.h $(includedir)/IcePatch2/Util.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Config.h $(includedir)/Ice/DeprecatedStringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/GCObject.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/NativePropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h $(includedir)/IcePatch2/FileInfo.h
ClientUtil$(OBJEXT): ClientUtil.cpp $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IcePatch2/ClientUtil.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Config.h $(includedir)/Ice/DeprecatedStringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/NativePropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h $(includedir)/IcePatch2/FileServer.h $(includedir)/IcePatch2/FileInfo.h $(includedir)/IcePatch2/Util.h
FileInfo$(OBJEXT): FileInfo.cpp $(includedir)/IcePatch2/FileInfo.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/DisableWarnings.h
FileServer$(OBJEXT): FileServer.cpp $(includedir)/IcePatch2/FileServer.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IcePatch2/FileInfo.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/IceUtil/DisableWarnings.h
diff --git a/cpp/src/IcePatch2Lib/.depend.mak b/cpp/src/IcePatch2Lib/.depend.mak
index 15f6e28e684..fdc39895fa9 100644
--- a/cpp/src/IcePatch2Lib/.depend.mak
+++ b/cpp/src/IcePatch2Lib/.depend.mak
@@ -1,4 +1,4 @@
-Util$(OBJEXT): Util.cpp "$(includedir)/IceUtil/DisableWarnings.h" "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Cache.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/CountDownLatch.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/CtrlCHandler.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/IceUtil/RecMutex.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/UUID.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/IceUtil/IconvStringConverter.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IcePatch2/Util.h" "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/DeprecatedStringConverter.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/SlicedData.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/NativePropertiesAdmin.h" "$(includedir)/Ice/Metrics.h" "$(includedir)/Ice/Service.h" "$(includedir)/IcePatch2/FileInfo.h"
+Util$(OBJEXT): Util.cpp "$(includedir)/IceUtil/DisableWarnings.h" "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Cache.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/CountDownLatch.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/CtrlCHandler.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/IceUtil/RecMutex.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/UUID.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/IceUtil/IconvStringConverter.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IceUtil/SHA1.h" "$(includedir)/IcePatch2/Util.h" "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/DeprecatedStringConverter.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/SlicedData.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/NativePropertiesAdmin.h" "$(includedir)/Ice/Metrics.h" "$(includedir)/Ice/Service.h" "$(includedir)/IcePatch2/FileInfo.h"
ClientUtil$(OBJEXT): ClientUtil.cpp "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IcePatch2/ClientUtil.h" "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/DeprecatedStringConverter.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/SlicedData.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/NativePropertiesAdmin.h" "$(includedir)/Ice/Metrics.h" "$(includedir)/Ice/Service.h" "$(includedir)/IcePatch2/FileServer.h" "$(includedir)/IcePatch2/FileInfo.h" "$(includedir)/IcePatch2/Util.h"
FileInfo$(OBJEXT): FileInfo.cpp "$(includedir)/IcePatch2/FileInfo.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Object.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/IceUtil/DisableWarnings.h"
FileServer$(OBJEXT): FileServer.cpp "$(includedir)/IcePatch2/FileServer.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/IcePatch2/FileInfo.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/IceUtil/DisableWarnings.h"
diff --git a/cpp/src/IcePatch2Lib/Util.cpp b/cpp/src/IcePatch2Lib/Util.cpp
index d743528d531..3c8ef35f84f 100644
--- a/cpp/src/IcePatch2Lib/Util.cpp
+++ b/cpp/src/IcePatch2Lib/Util.cpp
@@ -19,9 +19,10 @@
#include <IceUtil/IceUtil.h>
#include <IceUtil/StringUtil.h>
#include <IceUtil/FileUtil.h>
+#include <IceUtil/SHA1.h>
+
#define ICE_PATCH2_API_EXPORTS
#include <IcePatch2/Util.h>
-#include <openssl/sha.h>
#include <bzlib.h>
#include <iomanip>
@@ -789,8 +790,7 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
ByteSeq bytesSHA(20);
if(!bytes.empty())
{
- SHA1(reinterpret_cast<unsigned char*>(&bytes[0]), bytes.size(),
- reinterpret_cast<unsigned char*>(&bytesSHA[0]));
+ IceUtil::sha1(reinterpret_cast<unsigned char*>(&bytes[0]), bytes.size(), bytesSHA);
}
else
{
@@ -850,19 +850,19 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
return false;
}
- ByteSeq bytesSHA(20);
+ ByteSeq bytesSHA;
if(relPath.size() + buf.st_size == 0)
{
+ bytesSHA.resize(20);
fill(bytesSHA.begin(), bytesSHA.end(), 0);
}
else
{
- SHA_CTX ctx;
- SHA1_Init(&ctx);
+ IceUtil::SHA1 hasher;
if(relPath.size() != 0)
{
- SHA1_Update(&ctx, reinterpret_cast<const void*>(relPath.c_str()), relPath.size());
+ hasher.update(reinterpret_cast<const IceUtil::Byte*>(relPath.c_str()), relPath.size());
}
if(buf.st_size != 0)
@@ -939,7 +939,7 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
}
}
- SHA1_Update(&ctx, reinterpret_cast<const void*>(&bytes[0]), bytes.size());
+ hasher.update(reinterpret_cast<IceUtil::Byte*>(&bytes[0]), bytes.size());
}
IceUtilInternal::close(fd);
@@ -970,8 +970,7 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
info.size = static_cast<Int>(bufBZ2.st_size);
}
}
-
- SHA1_Final(reinterpret_cast<unsigned char*>(&bytesSHA[0]), &ctx);
+ hasher.finalize(bytesSHA);
}
info.checksum.swap(bytesSHA);
@@ -1186,8 +1185,7 @@ IcePatch2::getFileTree0(const FileInfoSeq& infoSeq, FileTree0& tree0)
if(!allChecksums1.empty())
{
- SHA1(reinterpret_cast<unsigned char*>(&allChecksums1[0]), allChecksums1.size(),
- reinterpret_cast<unsigned char*>(&tree1.checksum[0]));
+ IceUtil::sha1(reinterpret_cast<unsigned char*>(&allChecksums1[0]), allChecksums1.size(), tree1.checksum);
}
else
{
@@ -1199,8 +1197,7 @@ IcePatch2::getFileTree0(const FileInfoSeq& infoSeq, FileTree0& tree0)
if(!allChecksums0.empty())
{
- SHA1(reinterpret_cast<unsigned char*>(&allChecksums0[0]), allChecksums0.size(),
- reinterpret_cast<unsigned char*>(&tree0.checksum[0]));
+ IceUtil::sha1(reinterpret_cast<unsigned char*>(&allChecksums0[0]), allChecksums0.size(), tree0.checksum);
}
else
{
diff --git a/cpp/src/IceSSL/.depend b/cpp/src/IceSSL/.depend
index 823fdab2981..a0105a2fdb0 100644
--- a/cpp/src/IceSSL/.depend
+++ b/cpp/src/IceSSL/.depend
@@ -1,18 +1,20 @@
-AcceptorI$(OBJEXT): AcceptorI.cpp ../IceSSL/AcceptorI.h ../Ice/TransceiverF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/SecureTransportTransceiverI.h ../Ice/Transceiver.h ../IceSSL/TransceiverI.h ../IceSSL/Util.h ../IceSSL/UtilF.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h $(includedir)/IceUtil/StringUtil.h
-Certificate$(OBJEXT): Certificate.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h ../IceSSL/RFC2253.h
-ConnectorI$(OBJEXT): ConnectorI.cpp ../IceSSL/ConnectorI.h ../Ice/TransceiverF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h ../Ice/Connector.h ../Ice/ConnectorF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/SecureTransportTransceiverI.h ../Ice/Transceiver.h ../IceSSL/TransceiverI.h ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h ../Ice/EndpointI.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h $(includedir)/IceSSL/EndpointInfo.h ../IceSSL/Util.h ../IceSSL/UtilF.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h
+AcceptorI$(OBJEXT): AcceptorI.cpp ../IceSSL/AcceptorI.h ../Ice/TransceiverF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/OpenSSLTransceiverI.h ../Ice/Transceiver.h ../IceSSL/SecureTransportTransceiverI.h ../IceSSL/SChannelTransceiverI.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h $(includedir)/IceUtil/StringUtil.h
+Certificate$(OBJEXT): Certificate.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/Util.h ../IceSSL/RFC2253.h
+ConnectorI$(OBJEXT): ConnectorI.cpp ../IceSSL/ConnectorI.h ../Ice/TransceiverF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h ../Ice/Connector.h ../Ice/ConnectorF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/OpenSSLTransceiverI.h ../Ice/Transceiver.h ../IceSSL/SecureTransportTransceiverI.h ../IceSSL/SChannelTransceiverI.h ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h ../Ice/EndpointI.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h $(includedir)/IceSSL/EndpointInfo.h ../IceSSL/Util.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h
EndpointInfo$(OBJEXT): EndpointInfo.cpp $(includedir)/IceSSL/EndpointInfo.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/Version.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/DisableWarnings.h
ConnectionInfo$(OBJEXT): ConnectionInfo.cpp $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/DisableWarnings.h
-EndpointI$(OBJEXT): EndpointI.cpp ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/IPEndpointIF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h ../Ice/EndpointI.h ../Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/Version.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h ../IceSSL/InstanceF.h $(includedir)/IceSSL/EndpointInfo.h ../IceSSL/AcceptorI.h ../Ice/Acceptor.h ../IceSSL/ConnectorI.h ../Ice/Connector.h ../IceSSL/TransceiverI.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h ../IceSSL/SSLEngineF.h ../Ice/Transceiver.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h $(includedir)/Ice/LocalException.h ../Ice/DefaultsAndOverrides.h ../Ice/DefaultsAndOverridesF.h ../Ice/HashUtil.h
-Instance$(OBJEXT): Instance.cpp $(includedir)/IceUtil/Config.h ../IceSSL/Instance.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h ../IceSSL/TrustManagerF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/PropertiesAdmin.h
-PluginI$(OBJEXT): PluginI.cpp ../IceSSL/PluginI.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/SSLEngineF.h ../IceSSL/Instance.h ../IceSSL/InstanceF.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h $(includedir)/Ice/PropertiesF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceSSL/TransceiverI.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../IceSSL/TrustManagerF.h ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h ../Ice/EndpointI.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h $(includedir)/IceSSL/EndpointInfo.h ../Ice/ProtocolPluginFacade.h ../Ice/ProtocolPluginFacadeF.h $(includedir)/Ice/LocalException.h
-TransceiverI$(OBJEXT): TransceiverI.cpp ../IceSSL/TransceiverI.h $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/SSLEngineF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/IceUtil/MutexPtrLock.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../IceSSL/TrustManagerF.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h $(includedir)/IceUtil/DisableWarnings.h
-SecureTransportTransceiverI$(OBJEXT): SecureTransportTransceiverI.cpp ../IceSSL/SecureTransportTransceiverI.h $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/MutexPtrLock.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../IceSSL/TrustManagerF.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h
-Util$(OBJEXT): Util.cpp $(includedir)/IceUtil/Config.h ../IceSSL/Util.h $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h ../IceSSL/UtilF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h $(includedir)/IceUtil/FileUtil.h $(includedir)/Ice/LocalException.h
+EndpointI$(OBJEXT): EndpointI.cpp ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/IPEndpointIF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h ../Ice/EndpointI.h ../Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/Version.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h ../IceSSL/InstanceF.h $(includedir)/IceSSL/EndpointInfo.h ../IceSSL/AcceptorI.h ../Ice/Acceptor.h ../IceSSL/ConnectorI.h ../Ice/Connector.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/LocalException.h ../Ice/DefaultsAndOverrides.h ../Ice/DefaultsAndOverridesF.h ../Ice/HashUtil.h
+Instance$(OBJEXT): Instance.cpp $(includedir)/IceUtil/Config.h ../IceSSL/Instance.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h ../Ice/Network.h $(includedir)/Ice/Properties.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/PropertiesAdmin.h
+PluginI$(OBJEXT): PluginI.cpp ../IceSSL/PluginI.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/SSLEngineF.h ../IceSSL/Instance.h ../IceSSL/InstanceF.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h $(includedir)/Ice/PropertiesF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h ../Ice/Network.h ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h ../Ice/EndpointI.h ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h $(includedir)/IceSSL/EndpointInfo.h ../Ice/ProtocolPluginFacade.h ../Ice/ProtocolPluginFacadeF.h $(includedir)/Ice/LocalException.h
+OpenSSLTransceiverI$(OBJEXT): OpenSSLTransceiverI.cpp ../IceSSL/OpenSSLTransceiverI.h $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/SSLEngineF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/IceUtil/MutexPtrLock.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h $(includedir)/IceUtil/DisableWarnings.h
+SecureTransportTransceiverI$(OBJEXT): SecureTransportTransceiverI.cpp ../IceSSL/SecureTransportTransceiverI.h $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h
+Util$(OBJEXT): Util.cpp $(includedir)/IceUtil/Config.h ../IceSSL/Util.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceSSL/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/LocalException.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h
RFC2253$(OBJEXT): RFC2253.cpp $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/RFC2253.h
TrustManager$(OBJEXT): TrustManager.cpp ../IceSSL/TrustManager.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h ../IceSSL/TrustManagerF.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/RFC2253.h $(includedir)/Ice/Properties.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h
-SSLEngine$(OBJEXT): SSLEngine.cpp ../IceSSL/SSLEngine.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/LocalException.h
-OpenSSLEngine$(OBJEXT): OpenSSLEngine.cpp $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h ../IceSSL/SSLEngine.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/FileUtil.h
-SecureTransportEngine$(OBJEXT): SecureTransportEngine.cpp $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/Identity.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/Version.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Plugin.h ../IceSSL/SecureTransportTransceiverI.h ../IceSSL/InstanceF.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../IceSSL/TrustManagerF.h
+SSLEngine$(OBJEXT): SSLEngine.cpp ../IceSSL/SSLEngine.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/Util.h ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/LocalException.h
+OpenSSLEngine$(OBJEXT): OpenSSLEngine.cpp $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h ../IceSSL/SSLEngine.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/Util.h ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/FileUtil.h
+SecureTransportEngine$(OBJEXT): SecureTransportEngine.cpp $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/Identity.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/Version.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Plugin.h ../IceSSL/SecureTransportTransceiverI.h ../IceSSL/InstanceF.h ../IceSSL/SSLEngineF.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h
+SChannelEngine$(OBJEXT): SChannelEngine.cpp ../IceSSL/SSLEngine.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/Util.h ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/UUID.h
+SChannelTransceiverI$(OBJEXT): SChannelTransceiverI.cpp ../IceSSL/SChannelTransceiverI.h $(includedir)/IceSSL/Config.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h ../IceSSL/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Endpoint.h ../IceSSL/SSLEngineF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/IceUtil/StringUtil.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h
$(HDIR)/EndpointInfo.h EndpointInfo.cpp: $(slicedir)/IceSSL/EndpointInfo.ice $(slicedir)/Ice/Endpoint.ice $(slicedir)/Ice/Version.ice $(slicedir)/Ice/BuiltinSequences.ice $(slicedir)/Ice/EndpointF.ice $(SLICE2CPP) $(SLICEPARSERLIB)
$(HDIR)/ConnectionInfo.h ConnectionInfo.cpp: $(slicedir)/IceSSL/ConnectionInfo.ice $(slicedir)/Ice/Connection.ice $(slicedir)/Ice/ObjectAdapterF.ice $(slicedir)/Ice/Identity.ice $(slicedir)/Ice/Endpoint.ice $(slicedir)/Ice/Version.ice $(slicedir)/Ice/BuiltinSequences.ice $(slicedir)/Ice/EndpointF.ice $(SLICE2CPP) $(SLICEPARSERLIB)
diff --git a/cpp/src/IceSSL/.depend.mak b/cpp/src/IceSSL/.depend.mak
index 1b0a158b6a0..530b00c3808 100644
--- a/cpp/src/IceSSL/.depend.mak
+++ b/cpp/src/IceSSL/.depend.mak
@@ -1,18 +1,20 @@
-AcceptorI$(OBJEXT): AcceptorI.cpp ../IceSSL/AcceptorI.h ../Ice/TransceiverF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/SecureTransportTransceiverI.h ../Ice/Transceiver.h ../IceSSL/TransceiverI.h ../IceSSL/Util.h ../IceSSL/UtilF.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h" "$(includedir)/IceUtil/StringUtil.h"
-Certificate$(OBJEXT): Certificate.cpp "$(includedir)/IceUtil/DisableWarnings.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" ../IceSSL/RFC2253.h
-ConnectorI$(OBJEXT): ConnectorI.cpp ../IceSSL/ConnectorI.h ../Ice/TransceiverF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" ../Ice/Connector.h ../Ice/ConnectorF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/SecureTransportTransceiverI.h ../Ice/Transceiver.h ../IceSSL/TransceiverI.h ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h ../Ice/EndpointI.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h "$(includedir)/IceSSL/EndpointInfo.h" ../IceSSL/Util.h ../IceSSL/UtilF.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h"
+AcceptorI$(OBJEXT): AcceptorI.cpp ../IceSSL/AcceptorI.h ../Ice/TransceiverF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" ../Ice/Acceptor.h ../Ice/AcceptorF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/OpenSSLTransceiverI.h ../Ice/Transceiver.h ../IceSSL/SecureTransportTransceiverI.h ../IceSSL/SChannelTransceiverI.h ../IceSSL/Util.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h" "$(includedir)/IceUtil/StringUtil.h"
+Certificate$(OBJEXT): Certificate.cpp "$(includedir)/IceUtil/DisableWarnings.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/Util.h ../IceSSL/RFC2253.h
+ConnectorI$(OBJEXT): ConnectorI.cpp ../IceSSL/ConnectorI.h ../Ice/TransceiverF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" ../Ice/Connector.h ../Ice/ConnectorF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" ../IceSSL/InstanceF.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/OpenSSLTransceiverI.h ../Ice/Transceiver.h ../IceSSL/SecureTransportTransceiverI.h ../IceSSL/SChannelTransceiverI.h ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h ../Ice/EndpointI.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h "$(includedir)/IceSSL/EndpointInfo.h" ../IceSSL/Util.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h"
EndpointInfo$(OBJEXT): EndpointInfo.cpp "$(includedir)/IceSSL/EndpointInfo.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/Version.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Object.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/IceUtil/DisableWarnings.h"
ConnectionInfo$(OBJEXT): ConnectionInfo.cpp "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceUtil/DisableWarnings.h"
-EndpointI$(OBJEXT): EndpointI.cpp ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" ../Ice/IPEndpointIF.h "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Config.h" ../Ice/EndpointI.h ../Ice/EndpointIF.h "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/Version.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" ../Ice/ProtocolInstanceF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h ../IceSSL/InstanceF.h "$(includedir)/IceSSL/EndpointInfo.h" ../IceSSL/AcceptorI.h ../Ice/Acceptor.h ../IceSSL/ConnectorI.h ../Ice/Connector.h ../IceSSL/TransceiverI.h "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" ../IceSSL/SSLEngineF.h ../Ice/Transceiver.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h "$(includedir)/Ice/LocalException.h" ../Ice/DefaultsAndOverrides.h ../Ice/DefaultsAndOverridesF.h ../Ice/HashUtil.h
-Instance$(OBJEXT): Instance.cpp "$(includedir)/IceUtil/Config.h" ../IceSSL/Instance.h ../IceSSL/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h ../IceSSL/TrustManagerF.h "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/PropertiesAdmin.h"
-PluginI$(OBJEXT): PluginI.cpp ../IceSSL/PluginI.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/SSLEngineF.h ../IceSSL/Instance.h ../IceSSL/InstanceF.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h "$(includedir)/Ice/PropertiesF.h" ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceSSL/TransceiverI.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../IceSSL/TrustManagerF.h ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h ../Ice/EndpointI.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h "$(includedir)/IceSSL/EndpointInfo.h" ../Ice/ProtocolPluginFacade.h ../Ice/ProtocolPluginFacadeF.h "$(includedir)/Ice/LocalException.h"
-TransceiverI$(OBJEXT): TransceiverI.cpp ../IceSSL/TransceiverI.h "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" ../IceSSL/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/SSLEngineF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/IceUtil/MutexPtrLock.h" ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../IceSSL/TrustManagerF.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/IceUtil/DisableWarnings.h"
-SecureTransportTransceiverI$(OBJEXT): SecureTransportTransceiverI.cpp ../IceSSL/SecureTransportTransceiverI.h "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" ../IceSSL/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IceUtil/MutexPtrLock.h" ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../IceSSL/TrustManagerF.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LocalException.h"
-Util$(OBJEXT): Util.cpp "$(includedir)/IceUtil/Config.h" ../IceSSL/Util.h "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" ../IceSSL/UtilF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/Ice/LocalException.h"
+EndpointI$(OBJEXT): EndpointI.cpp ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" ../Ice/IPEndpointIF.h "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Config.h" ../Ice/EndpointI.h ../Ice/EndpointIF.h "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/Version.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" ../Ice/ProtocolInstanceF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h ../IceSSL/InstanceF.h "$(includedir)/IceSSL/EndpointInfo.h" ../IceSSL/AcceptorI.h ../Ice/Acceptor.h ../IceSSL/ConnectorI.h ../Ice/Connector.h ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/LocalException.h" ../Ice/DefaultsAndOverrides.h ../Ice/DefaultsAndOverridesF.h ../Ice/HashUtil.h
+Instance$(OBJEXT): Instance.cpp "$(includedir)/IceUtil/Config.h" ../IceSSL/Instance.h ../IceSSL/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h ../Ice/Network.h "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/PropertiesAdmin.h"
+PluginI$(OBJEXT): PluginI.cpp ../IceSSL/PluginI.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/SSLEngineF.h ../IceSSL/Instance.h ../IceSSL/InstanceF.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h "$(includedir)/Ice/PropertiesF.h" ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h ../Ice/Network.h ../IceSSL/EndpointI.h ../Ice/IPEndpointI.h ../Ice/EndpointI.h ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h "$(includedir)/IceSSL/EndpointInfo.h" ../Ice/ProtocolPluginFacade.h ../Ice/ProtocolPluginFacadeF.h "$(includedir)/Ice/LocalException.h"
+OpenSSLTransceiverI$(OBJEXT): OpenSSLTransceiverI.cpp ../IceSSL/OpenSSLTransceiverI.h "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" ../IceSSL/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/SSLEngineF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/IceUtil/MutexPtrLock.h" ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/IceUtil/DisableWarnings.h"
+SecureTransportTransceiverI$(OBJEXT): SecureTransportTransceiverI.cpp ../IceSSL/SecureTransportTransceiverI.h "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" ../IceSSL/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LocalException.h"
+Util$(OBJEXT): Util.cpp "$(includedir)/IceUtil/Config.h" ../IceSSL/Util.h "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/Ice/LocalException.h" ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h"
RFC2253$(OBJEXT): RFC2253.cpp "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/RFC2253.h
TrustManager$(OBJEXT): TrustManager.cpp ../IceSSL/TrustManager.h "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" ../IceSSL/TrustManagerF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/RFC2253.h "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h"
-SSLEngine$(OBJEXT): SSLEngine.cpp ../IceSSL/SSLEngine.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/LocalException.h"
-OpenSSLEngine$(OBJEXT): OpenSSLEngine.cpp "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" ../IceSSL/SSLEngine.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/Util.h ../IceSSL/UtilF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/FileUtil.h"
-SecureTransportEngine$(OBJEXT): SecureTransportEngine.cpp "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/Identity.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Plugin.h" ../IceSSL/SecureTransportTransceiverI.h ../IceSSL/InstanceF.h ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/UtilF.h ../IceSSL/TrustManagerF.h
+SSLEngine$(OBJEXT): SSLEngine.cpp ../IceSSL/SSLEngine.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/Util.h ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/LocalException.h"
+OpenSSLEngine$(OBJEXT): OpenSSLEngine.cpp "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" ../IceSSL/SSLEngine.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/Util.h ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" ../IceSSL/TrustManager.h ../IceSSL/RFC2253.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/FileUtil.h"
+SecureTransportEngine$(OBJEXT): SecureTransportEngine.cpp "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/Identity.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Plugin.h" ../IceSSL/SecureTransportTransceiverI.h ../IceSSL/InstanceF.h ../IceSSL/SSLEngineF.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h
+SChannelEngine$(OBJEXT): SChannelEngine.cpp ../IceSSL/SSLEngine.h "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/Util.h ../IceSSL/SSLEngineF.h ../IceSSL/TrustManagerF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IceUtil/UUID.h"
+SChannelTransceiverI$(OBJEXT): SChannelTransceiverI.cpp ../IceSSL/SChannelTransceiverI.h "$(includedir)/IceSSL/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" ../IceSSL/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/Endpoint.h" ../IceSSL/SSLEngineF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/IceUtil/StringUtil.h" ../IceSSL/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../IceSSL/SSLEngine.h ../IceSSL/Util.h ../IceSSL/TrustManagerF.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LocalException.h"
$(HDIR)\EndpointInfo.h EndpointInfo.cpp: "$(slicedir)/IceSSL/EndpointInfo.ice" "$(slicedir)/Ice/Endpoint.ice" "$(slicedir)/Ice/Version.ice" "$(slicedir)/Ice/BuiltinSequences.ice" "$(slicedir)/Ice/EndpointF.ice" "$(SLICE2CPP)" "$(SLICEPARSERLIB)"
$(HDIR)\ConnectionInfo.h ConnectionInfo.cpp: "$(slicedir)/IceSSL/ConnectionInfo.ice" "$(slicedir)/Ice/Connection.ice" "$(slicedir)/Ice/ObjectAdapterF.ice" "$(slicedir)/Ice/Identity.ice" "$(slicedir)/Ice/Endpoint.ice" "$(slicedir)/Ice/Version.ice" "$(slicedir)/Ice/BuiltinSequences.ice" "$(slicedir)/Ice/EndpointF.ice" "$(SLICE2CPP)" "$(SLICEPARSERLIB)"
diff --git a/cpp/src/IceSSL/AcceptorI.cpp b/cpp/src/IceSSL/AcceptorI.cpp
index f835f6b8044..8a7fb3ca187 100644
--- a/cpp/src/IceSSL/AcceptorI.cpp
+++ b/cpp/src/IceSSL/AcceptorI.cpp
@@ -9,8 +9,10 @@
#include <IceSSL/AcceptorI.h>
#include <IceSSL/Instance.h>
+
+#include <IceSSL/OpenSSLTransceiverI.h>
#include <IceSSL/SecureTransportTransceiverI.h>
-#include <IceSSL/TransceiverI.h>
+#include <IceSSL/SChannelTransceiverI.h>
#include <IceSSL/Util.h>
diff --git a/cpp/src/IceSSL/Certificate.cpp b/cpp/src/IceSSL/Certificate.cpp
index ba5fa9619f3..197a6ee3c36 100644
--- a/cpp/src/IceSSL/Certificate.cpp
+++ b/cpp/src/IceSSL/Certificate.cpp
@@ -45,7 +45,7 @@ using namespace IceSSL;
const char* IceSSL::CertificateReadException::_name = "IceSSL::CertificateReadException";
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT) || defined(ICE_USE_SCHANNEL)
//
// Map a certificate OID to its alias
//
@@ -74,17 +74,23 @@ const CertificateOID certificateOIDS[] =
{"1.2.840.113549.1.9.1", "emailAddress"},
{"0.9.2342.19200300.100.1.25", "DC"}
};
-
const int certificateOIDSSize = sizeof(certificateOIDS) / sizeof(CertificateOID);
+#endif
+
+
+#if defined(ICE_USE_SECURE_TRANSPORT)
+
string
certificateOIDAlias(const string& name)
{
for(int i = 0; i < certificateOIDSSize; ++i)
{
- if(name == certificateOIDS[i].name)
+ const CertificateOID* certificateOID = &certificateOIDS[i];
+ assert(certificateOID);
+ if(name == certificateOID->name)
{
- return certificateOIDS[i].alias;
+ return certificateOID->alias;
}
}
return name;
@@ -247,6 +253,166 @@ getX509String(SecCertificateRef cert, CFTypeRef key)
}
return value;
}
+
+#elif defined(ICE_USE_SCHANNEL)
+
+void
+loadCertificate(PCERT_SIGNED_CONTENT_INFO* cert, const char* buffer, DWORD length)
+{
+ DWORD outLength = length;
+ vector<BYTE> outBuffer;
+ outBuffer.resize(outLength);
+
+ if(!CryptStringToBinary(buffer, length, CRYPT_STRING_BASE64HEADER, &outBuffer[0], &outLength, 0, 0))
+ {
+ //
+ // Base64 data should always be bigger than binary
+ //
+ assert(GetLastError() != ERROR_MORE_DATA);
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+
+ DWORD decodedLeng = 0;
+ if(!CryptDecodeObjectEx(X509_ASN_ENCODING, X509_CERT, &outBuffer[0], outLength, CRYPT_DECODE_ALLOC_FLAG, 0,
+ cert, &decodedLeng))
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+}
+
+void
+loadCertificate(PCERT_SIGNED_CONTENT_INFO* cert, const string& file)
+{
+ vector<char> buffer;
+ readFile(file, buffer);
+ loadCertificate(cert, &buffer[0], static_cast<DWORD>(buffer.size()));
+}
+
+const Ice::Long TICKS_PER_MSECOND = 10000LL;
+const Ice::Long MSECS_TO_EPOCH = 11644473600000LL;
+
+IceUtil::Time
+filetimeToTime(FILETIME ftime)
+{
+ Ice::Long value = 0;
+ DWORD* dest = reinterpret_cast<DWORD*>(&value);
+ *dest++ = ftime.dwLowDateTime;
+ *dest = ftime.dwHighDateTime;
+ return IceUtil::Time::milliSeconds((value / TICKS_PER_MSECOND) - MSECS_TO_EPOCH);
+}
+
+string
+certNameToString(CERT_NAME_BLOB* name)
+{
+ assert(name);
+ DWORD length = 0;
+ if(!(length = CertNameToStr(X509_ASN_ENCODING, name, CERT_OID_NAME_STR|CERT_NAME_STR_REVERSE_FLAG, 0, 0)))
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+
+ vector<char> buffer(length);
+ if(!CertNameToStr(X509_ASN_ENCODING, name, CERT_OID_NAME_STR|CERT_NAME_STR_REVERSE_FLAG, &buffer[0], length))
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+
+ string s(&buffer[0]);
+ for(int i = 0; i < certificateOIDSSize; ++i)
+ {
+ const CertificateOID* certificateOID = &certificateOIDS[i];
+ assert(certificateOID);
+ const string name = string(certificateOID->name) + "=";
+ const string alias = string(certificateOID->alias) + "=";
+ size_t pos = 0;
+ while((pos = s.find(name, pos)) != string::npos)
+ {
+ s.replace(pos, name.size(), alias);
+ }
+ }
+ return s;
+}
+
+vector<pair<int, string> >
+certificateAltNames(CERT_INFO* certInfo, LPCSTR altNameOID)
+{
+ vector<pair<int, string> > altNames;
+
+ PCERT_EXTENSION extension = CertFindExtension(altNameOID, certInfo->cExtension, certInfo->rgExtension);
+ if(extension)
+ {
+ CERT_ALT_NAME_INFO* altName;
+ DWORD length = 0;
+ if(!CryptDecodeObjectEx(X509_ASN_ENCODING, X509_ALTERNATE_NAME, extension->Value.pbData,
+ extension->Value.cbData, CRYPT_DECODE_ALLOC_FLAG, 0, &altName, &length))
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+
+ for(DWORD i = 0; i < altName->cAltEntry; ++i)
+ {
+ CERT_ALT_NAME_ENTRY* entry = &altName->rgAltEntry[i];
+
+ switch(entry->dwAltNameChoice)
+ {
+ case CERT_ALT_NAME_RFC822_NAME:
+ {
+ altNames.push_back(make_pair(AltNameEmail, IceUtil::wstringToString(entry->pwszRfc822Name)));
+ break;
+ }
+ case CERT_ALT_NAME_DNS_NAME:
+ {
+ altNames.push_back(make_pair(AltNameDNS, IceUtil::wstringToString(entry->pwszDNSName)));
+ break;
+ }
+ case CERT_ALT_NAME_DIRECTORY_NAME:
+ {
+ altNames.push_back(make_pair(AltNameDirectory, certNameToString(&entry->DirectoryName)));
+ break;
+ }
+ case CERT_ALT_NAME_URL:
+ {
+ altNames.push_back(make_pair(AltNameURL, IceUtil::wstringToString(entry->pwszURL)));
+ break;
+ }
+ case CERT_ALT_NAME_IP_ADDRESS:
+ {
+ if(entry->IPAddress.cbData == 4)
+ {
+ //
+ // IPv4 address
+ //
+ ostringstream os;
+ Byte* src = reinterpret_cast<Byte*>(entry->IPAddress.pbData);
+ for(int j = 0; j < 4;)
+ {
+ int value = 0;
+ Byte* dest = reinterpret_cast<Byte*>(&value);
+ *dest = *src++;
+ os << value;
+ if(++j < 4)
+ {
+ os << ".";
+ }
+ }
+ altNames.push_back(make_pair(AltNAmeIP, os.str()));
+ }
+ //
+ // TODO IPv6 Address support.
+ //
+ break;
+ }
+ default:
+ {
+ // Not supported
+ break;
+ }
+ }
+ }
+ LocalFree(altName);
+ }
+ return altNames;
+}
#endif
CertificateReadException::CertificateReadException(const char* file, int line, const string& r) :
@@ -284,10 +450,8 @@ CertificateEncodingException::CertificateEncodingException(const char* file, int
Exception(file, line)
{
assert(err);
- ostringstream os;
- os << "certificate error:\n" << errorToString(err);
+ reason = "certificate error:\n" + errorToString(err);
CFRelease(err);
- reason = os.str();
}
#endif
@@ -615,17 +779,27 @@ DistinguishedName::unescape()
}
}
-PublicKey::PublicKey(KeyRef key) :
+PublicKey::PublicKey(const CertificatePtr& cert, KeyRef key) :
+ _cert(cert),
_key(key)
{
+ if(!_key)
+ {
+ throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "Invalid key reference");
+ }
}
PublicKey::~PublicKey()
{
-#ifdef ICE_USE_SECURE_TRANSPORT
- CFRelease(_key);
-#else
- EVP_PKEY_free(_key);
+#ifndef ICE_USE_SCHANNEL
+ if(_key)
+ {
+# if defined(ICE_USE_SECURE_TRANSPORT)
+ CFRelease(_key);
+# else
+ EVP_PKEY_free(_key);
+# endif
+ }
#endif
}
@@ -638,31 +812,67 @@ PublicKey::key() const
//
// The caller is responsible for incrementing the reference count.
//
-Certificate::Certificate(X509CertificateRef cert) :
- _cert(cert)
+Certificate::Certificate(X509CertificateRef cert) : _cert(cert)
+#ifdef ICE_USE_SCHANNEL
+ , _certInfo(0)
+#endif
{
if(!_cert)
{
throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "Invalid certificate reference");
}
+
+#ifdef ICE_USE_SCHANNEL
+ try
+ {
+ //
+ // Decode certificate info
+ //
+ DWORD length = 0;
+ if(!CryptDecodeObjectEx(X509_ASN_ENCODING, X509_CERT_TO_BE_SIGNED, _cert->ToBeSigned.pbData,
+ _cert->ToBeSigned.cbData, CRYPT_DECODE_ALLOC_FLAG, 0, &_certInfo, &length))
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+ }
+ catch(...)
+ {
+ LocalFree(_cert);
+ _cert = 0;
+ throw;
+ }
+#endif
}
Certificate::~Certificate()
{
-#ifdef ICE_USE_SECURE_TRANSPORT
- CFRelease(_cert);
+ if(_cert)
+ {
+#if defined(ICE_USE_SECURE_TRANSPORT)
+ CFRelease(_cert);
+#elif defined(ICE_USE_SCHANNEL)
+ LocalFree(_cert);
+ if(_certInfo)
+ {
+ LocalFree(_certInfo);
+ }
#else
- X509_free(_cert);
+ X509_free(_cert);
#endif
+ }
}
CertificatePtr
Certificate::load(const string& file)
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
SecCertificateRef cert = 0;
loadCertificate(&cert, 0, 0, 0, file);
return new Certificate(cert);
+#elif defined(ICE_USE_SCHANNEL)
+ CERT_SIGNED_CONTENT_INFO* cert;
+ loadCertificate(&cert, file);
+ return new Certificate(cert);
#else
BIO *cert = BIO_new(BIO_s_file());
if(BIO_read_filename(cert, file.c_str()) <= 0)
@@ -685,7 +895,7 @@ Certificate::load(const string& file)
CertificatePtr
Certificate::decode(const string& encoding)
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
CFDataRef data = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, reinterpret_cast<const UInt8*>(encoding.c_str()),
encoding.size(), kCFAllocatorNull);
@@ -696,34 +906,31 @@ Certificate::decode(const string& encoding)
memset(&params, 0, sizeof(params));
params.version = SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION;
- CFArrayRef items = 0;
-
+ CFArrayRef items = 0;
OSStatus err = SecItemImport(data, 0, &format, &type, 0, &params, 0, &items);
-
CFRelease(data);
-
- if(err != noErr)
+ if(err)
{
- ostringstream os;
- os << "error decoding certificate:\n" << errorToString(err);
- CertificateReadException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateEncodingException(__FILE__, __LINE__, errorToString(err));
}
SecKeychainItemRef item = (SecKeychainItemRef)CFArrayGetValueAtIndex(items, 0);
-
CFRetain(item);
CFRelease(items);
assert(SecCertificateGetTypeID() == CFGetTypeID(item));
return new Certificate((SecCertificateRef)item);
+#elif defined(ICE_USE_SCHANNEL)
+ CERT_SIGNED_CONTENT_INFO* cert;
+ loadCertificate(&cert, encoding.c_str(), static_cast<DWORD>(encoding.size()));
+ return new Certificate(cert);
#else
BIO *cert = BIO_new_mem_buf(static_cast<void*>(const_cast<char*>(&encoding[0])), static_cast<int>(encoding.size()));
X509CertificateRef x = PEM_read_bio_X509_AUX(cert, NULL, NULL, NULL);
if(x == NULL)
{
BIO_free(cert);
- throw CertificateReadException(__FILE__, __LINE__, "error decoding certificate:\n" + getSslErrors(false));
+ throw CertificateEncodingException(__FILE__, __LINE__, getSslErrors(false));
}
BIO_free(cert);
return new Certificate(x);
@@ -733,8 +940,10 @@ Certificate::decode(const string& encoding)
bool
Certificate::operator==(const Certificate& other) const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
return CFEqual(_cert, other._cert);
+#elif defined(ICE_USE_SCHANNEL)
+ return CertCompareCertificate(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, _certInfo, other._certInfo);
#else
return X509_cmp(_cert, other._cert) == 0;
#endif
@@ -743,8 +952,10 @@ Certificate::operator==(const Certificate& other) const
bool
Certificate::operator!=(const Certificate& other) const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
return !CFEqual(_cert, other._cert);
+#elif defined(ICE_USE_SCHANNEL)
+ return !CertCompareCertificate(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, _certInfo, other._certInfo);
#else
return X509_cmp(_cert, other._cert) != 0;
#endif
@@ -753,26 +964,25 @@ Certificate::operator!=(const Certificate& other) const
PublicKeyPtr
Certificate::getPublicKey() const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
SecKeyRef key;
OSStatus err = SecCertificateCopyPublicKey(_cert, &key);
- if(err != noErr)
+ if(err)
{
- ostringstream os;
- os << "certificate error:\n" << errorToString(err);
- CertificateEncodingException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateEncodingException(__FILE__, __LINE__, errorToString(err));
}
- return new PublicKey(key);
+ return new PublicKey(const_cast<Certificate*>(this), key);
+#elif defined(ICE_USE_SCHANNEL)
+ return new PublicKey(const_cast<Certificate*>(this), &_certInfo->SubjectPublicKeyInfo);
#else
- return new PublicKey(X509_get_pubkey(_cert));
+ return new PublicKey(const_cast<Certificate*>(this), X509_get_pubkey(_cert));
#endif
}
bool
Certificate::verify(const CertificatePtr& cert) const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
//
// We first check if the given certificate subject match
// our certificate issuer. Otherwhise when use SecTrustEvaluate
@@ -785,18 +995,32 @@ Certificate::verify(const CertificatePtr& cert) const
CFDataRef issuer = 0;
CFDataRef subject = 0;
- issuer = SecCertificateCopyNormalizedIssuerContent(_cert, &error);
- if(error)
+ try
{
- CertificateEncodingException ex(__FILE__, __LINE__, error);
- throw ex;
+ issuer = SecCertificateCopyNormalizedIssuerContent(_cert, &error);
+ if(error)
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, error);
+ }
+
+ subject = SecCertificateCopyNormalizedSubjectContent(cert->getCert(), &error);
+ if(error)
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, error);
+ }
}
-
- subject = SecCertificateCopyNormalizedSubjectContent(cert->getCert(), &error);
- if(error)
+ catch(...)
{
- CertificateEncodingException ex(__FILE__, __LINE__, error);
- throw ex;
+ if(issuer)
+ {
+ CFRelease(issuer);
+ }
+
+ if(subject)
+ {
+ CFRelease(subject);
+ }
+ throw;
}
//
@@ -816,37 +1040,28 @@ Certificate::verify(const CertificatePtr& cert) const
SecPolicyRef policy = SecPolicyCreateBasicX509();
SecTrustResultType trustResult = kSecTrustResultInvalid;
SecTrustRef trust;
- OSStatus err = SecTrustCreateWithCertificates(_cert, policy, &trust);
-
- if(err != noErr)
+ OSStatus err = 0;
+
+ if((err = SecTrustCreateWithCertificates(_cert, policy, &trust)))
{
- ostringstream os;
- os << "certificate error:\n" << errorToString(err);
- CertificateEncodingException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateEncodingException(__FILE__, __LINE__, errorToString(err));
}
SecCertificateRef certs[1] = { cert->getCert() };
- CFArrayRef anchorCertificates = CFArrayCreate(kCFAllocatorDefault, (const void**)&certs, 1, &kCFTypeArrayCallBacks);
+ CFArrayRef anchorCertificates = CFArrayCreate(kCFAllocatorDefault, (const void**)&certs, 1,
+ &kCFTypeArrayCallBacks);
err = SecTrustSetAnchorCertificates(trust, anchorCertificates);
CFRelease(anchorCertificates);
- if(err != noErr)
+ if(err)
{
- ostringstream os;
- os << "certificate error:\n" << errorToString(err);
- CertificateEncodingException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateEncodingException(__FILE__, __LINE__, errorToString(err));
}
- err = SecTrustEvaluate(trust, &trustResult);
- if(err != noErr)
+ if((err = SecTrustEvaluate(trust, &trustResult)))
{
- ostringstream os;
- os << "certificate error:\n" << errorToString(err);
- CertificateEncodingException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateEncodingException(__FILE__, __LINE__, errorToString(err));
}
valid = trustResult == kSecTrustResultUnspecified;
@@ -869,12 +1084,23 @@ Certificate::verify(const CertificatePtr& cert) const
}
}
return valid;
+#elif defined(ICE_USE_SCHANNEL)
+ BYTE* buffer = 0;
+ DWORD length = 0;
+ if(!CryptEncodeObjectEx(X509_ASN_ENCODING, X509_CERT, _cert, CRYPT_ENCODE_ALLOC_FLAG , 0, &buffer, &length))
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+
+ bool result = CryptVerifyCertificateSignature(0, X509_ASN_ENCODING, buffer, length, cert->getPublicKey()->key());
+ LocalFree(buffer);
+ return result;
#else
return X509_verify(_cert, cert->getPublicKey()->key()) > 0;
#endif
}
-#ifndef ICE_USE_SECURE_TRANSPORT
+#ifdef ICE_USE_OPENSSL
bool
Certificate::verify(const PublicKeyPtr& key) const
{
@@ -885,19 +1111,53 @@ Certificate::verify(const PublicKeyPtr& key) const
string
Certificate::encode() const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
CFDataRef exported;
OSStatus err = SecItemExport(_cert, kSecFormatPEMSequence, kSecItemPemArmour, 0, &exported);
if(err != noErr)
{
- ostringstream os;
- os << "error encoding certificate:\n" << errorToString(err);
- CertificateEncodingException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateEncodingException(__FILE__, __LINE__, errorToString(err));
}
string data(reinterpret_cast<const char*>(CFDataGetBytePtr(exported)), CFDataGetLength(exported));
CFRelease(exported);
return data;
+#elif defined(ICE_USE_SCHANNEL)
+ string s;
+ DWORD length = 0;
+ BYTE* buffer = 0;
+ try
+ {
+ if(!CryptEncodeObjectEx(X509_ASN_ENCODING, X509_CERT, _cert, CRYPT_ENCODE_ALLOC_FLAG , 0, &buffer, &length))
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+
+ DWORD encodedLength = 0;
+ if(!CryptBinaryToString(buffer, length, CRYPT_STRING_BASE64HEADER | CRYPT_STRING_NOCR, 0, &encodedLength))
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+
+ std::vector<char> encoded;
+ encoded.resize(encodedLength);
+ if(!CryptBinaryToString(buffer, length, CRYPT_STRING_BASE64HEADER | CRYPT_STRING_NOCR, &encoded[0],
+ &encodedLength))
+ {
+ throw CertificateEncodingException(__FILE__, __LINE__, IceUtilInternal::lastErrorToString());
+ }
+ LocalFree(buffer);
+ buffer = 0;
+ s.assign(&encoded[0]);
+ }
+ catch(...)
+ {
+ if(buffer)
+ {
+ LocalFree(buffer);
+ }
+ throw;
+ }
+ return s;
#else
BIO* out = BIO_new(BIO_s_mem());
int i = PEM_write_bio_X509_AUX(out, _cert);
@@ -930,8 +1190,10 @@ Certificate::checkValidity(const IceUtil::Time& now) const
IceUtil::Time
Certificate::getNotAfter() const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
return getX509Date(_cert, kSecOIDX509V1ValidityNotAfter);
+#elif defined(ICE_USE_SCHANNEL)
+ return filetimeToTime(_certInfo->NotAfter);
#else
return ASMUtcTimeToIceUtilTime(X509_get_notAfter(_cert));
#endif
@@ -940,8 +1202,10 @@ Certificate::getNotAfter() const
IceUtil::Time
Certificate::getNotBefore() const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
return getX509Date(_cert, kSecOIDX509V1ValidityNotBefore);
+#elif defined(ICE_USE_SCHANNEL)
+ return filetimeToTime(_certInfo->NotBefore);
#else
return ASMUtcTimeToIceUtilTime(X509_get_notBefore(_cert));
#endif
@@ -950,8 +1214,22 @@ Certificate::getNotBefore() const
string
Certificate::getSerialNumber() const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
return getX509String(_cert, kSecOIDX509V1SerialNumber);
+#elif defined(ICE_USE_SCHANNEL)
+ ostringstream os;
+ for(int i = _certInfo->SerialNumber.cbData - 1; i >= 0; --i)
+ {
+ unsigned char c = _certInfo->SerialNumber.pbData[i];
+ os.fill('0');
+ os.width(2);
+ os << hex << (int)c;
+ if(i)
+ {
+ os << ' ';
+ }
+ }
+ return IceUtilInternal::toUpper(os.str());
#else
BIGNUM* bn = ASN1_INTEGER_to_BN(X509_get_serialNumber(_cert), 0);
char* dec = BN_bn2dec(bn);
@@ -976,8 +1254,10 @@ Certificate::getSerialNumber() const
DistinguishedName
Certificate::getIssuerDN() const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
return getX509Name(_cert, kSecOIDX509V1IssuerName);
+#elif defined(ICE_USE_SCHANNEL)
+ return DistinguishedName(certNameToString(&_certInfo->Issuer));
#else
return DistinguishedName(RFC2253::parseStrict(convertX509NameToString(X509_get_issuer_name(_cert))));
#endif
@@ -986,19 +1266,22 @@ Certificate::getIssuerDN() const
vector<pair<int, string> >
Certificate::getIssuerAlternativeNames()
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
return getX509AltName(_cert, kSecOIDIssuerAltName);
+#elif defined(ICE_USE_SCHANNEL)
+ return certificateAltNames(_certInfo, szOID_ISSUER_ALT_NAME2);
#else
- return convertGeneralNames(reinterpret_cast<GENERAL_NAMES*>(
- X509_get_ext_d2i(_cert, NID_issuer_alt_name, 0, 0)));
+ return convertGeneralNames(reinterpret_cast<GENERAL_NAMES*>(X509_get_ext_d2i(_cert, NID_issuer_alt_name, 0, 0)));
#endif
}
DistinguishedName
Certificate::getSubjectDN() const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
return getX509Name(_cert, kSecOIDX509V1SubjectName);
+#elif defined(ICE_USE_SCHANNEL)
+ return DistinguishedName(certNameToString(&_certInfo->Subject));
#else
return DistinguishedName(RFC2253::parseStrict(convertX509NameToString(X509_get_subject_name(_cert))));
#endif
@@ -1007,19 +1290,22 @@ Certificate::getSubjectDN() const
vector<pair<int, string> >
Certificate::getSubjectAlternativeNames()
{
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
return getX509AltName(_cert, kSecOIDSubjectAltName);
+#elif defined(ICE_USE_SCHANNEL)
+ return certificateAltNames(_certInfo, szOID_SUBJECT_ALT_NAME2);
#else
- return convertGeneralNames(
- reinterpret_cast<GENERAL_NAMES*>(X509_get_ext_d2i(_cert, NID_subject_alt_name, 0, 0)));
+ return convertGeneralNames(reinterpret_cast<GENERAL_NAMES*>(X509_get_ext_d2i(_cert, NID_subject_alt_name, 0, 0)));
#endif
}
int
Certificate::getVersion() const
{
-#ifdef ICE_USE_SECURE_TRANSPORT
- return atoi(getX509String(_cert, kSecOIDX509V1Version).c_str());
+#if defined(ICE_USE_SECURE_TRANSPORT)
+ return atoi(getX509String(_cert, kSecOIDX509V1Version).c_str()) - 1;
+#elif defined(ICE_USE_SCHANNEL)
+ return _certInfo->dwVersion;
#else
return static_cast<int>(X509_get_version(_cert));
#endif
diff --git a/cpp/src/IceSSL/ConnectorI.cpp b/cpp/src/IceSSL/ConnectorI.cpp
index 74db5e52cb6..f1640673ba7 100644
--- a/cpp/src/IceSSL/ConnectorI.cpp
+++ b/cpp/src/IceSSL/ConnectorI.cpp
@@ -9,8 +9,11 @@
#include <IceSSL/ConnectorI.h>
#include <IceSSL/Instance.h>
+
+#include <IceSSL/OpenSSLTransceiverI.h>
#include <IceSSL/SecureTransportTransceiverI.h>
-#include <IceSSL/TransceiverI.h>
+#include <IceSSL/SChannelTransceiverI.h>
+
#include <IceSSL/EndpointI.h>
#include <IceSSL/Util.h>
#include <Ice/Communicator.h>
diff --git a/cpp/src/IceSSL/EndpointI.cpp b/cpp/src/IceSSL/EndpointI.cpp
index 93994804783..d17b7e16cc8 100644
--- a/cpp/src/IceSSL/EndpointI.cpp
+++ b/cpp/src/IceSSL/EndpointI.cpp
@@ -10,7 +10,6 @@
#include <IceSSL/EndpointI.h>
#include <IceSSL/AcceptorI.h>
#include <IceSSL/ConnectorI.h>
-#include <IceSSL/TransceiverI.h>
#include <IceSSL/Instance.h>
#include <Ice/BasicStream.h>
#include <Ice/LocalException.h>
diff --git a/cpp/src/IceSSL/Makefile b/cpp/src/IceSSL/Makefile
index 0b77453d20e..c63570744ae 100644
--- a/cpp/src/IceSSL/Makefile
+++ b/cpp/src/IceSSL/Makefile
@@ -24,14 +24,16 @@ OBJS = AcceptorI.o \
EndpointI.o \
Instance.o \
PluginI.o \
- TransceiverI.o \
+ OpenSSLTransceiverI.o \
SecureTransportTransceiverI.o \
Util.o \
RFC2253.o \
TrustManager.o \
SSLEngine.o \
OpenSSLEngine.o \
- SecureTransportEngine.o
+ SecureTransportEngine.o \
+ SChannelEngine.o \
+ SChannelTransceiverI.o
SRCS = $(OBJS:.o=.cpp)
diff --git a/cpp/src/IceSSL/Makefile.mak b/cpp/src/IceSSL/Makefile.mak
index 33ea5d194b5..4e06d935fd0 100644
--- a/cpp/src/IceSSL/Makefile.mak
+++ b/cpp/src/IceSSL/Makefile.mak
@@ -9,25 +9,25 @@
top_srcdir = ..\..
-LIBNAME = $(top_srcdir)\lib\icessl$(LIBSUFFIX).lib
+LIBNAME = $(top_srcdir)\lib\icessl$(LIBSUFFIX).lib
DLLNAME = $(top_srcdir)\bin\icessl$(SOVERSION)$(LIBSUFFIX)$(COMPSUFFIX).dll
TARGETS = $(LIBNAME) $(DLLNAME)
OBJS = AcceptorI.obj \
Certificate.obj \
- ConnectorI.obj \
- ConnectionInfo.obj \
- EndpointInfo.obj \
- EndpointI.obj \
- Instance.obj \
- PluginI.obj \
- TransceiverI.obj \
- Util.obj \
- RFC2253.obj \
- TrustManager.obj \
SSLEngine.obj \
- OpenSSLEngine.obj
+ ConnectorI.obj \
+ ConnectionInfo.obj \
+ EndpointInfo.obj \
+ EndpointI.obj \
+ Instance.obj \
+ PluginI.obj \
+ SChannelEngine.obj \
+ SChannelTransceiverI.obj \
+ Util.obj \
+ RFC2253.obj \
+ TrustManager.obj
SRCS = $(OBJS:.obj=.cpp)
@@ -39,13 +39,13 @@ SDIR = $(slicedir)\IceSSL
CPPFLAGS = -I.. $(CPPFLAGS) -DICE_SSL_API_EXPORTS -DWIN32_LEAN_AND_MEAN
SLICE2CPPFLAGS = --ice --include-dir IceSSL --dll-export ICE_SSL_API $(SLICE2CPPFLAGS)
-LINKWITH = $(OPENSSL_LIBS) $(LIBS) ws2_32.lib
+LINKWITH = $(LIBS) $(SSL_OS_LIBS) ws2_32.lib
!if "$(GENERATE_PDB)" == "yes"
-PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
+PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
!endif
-RES_FILE = IceSSL.res
+RES_FILE = IceSSL.res
$(LIBNAME): $(DLLNAME)
diff --git a/cpp/src/IceSSL/OpenSSLEngine.cpp b/cpp/src/IceSSL/OpenSSLEngine.cpp
index f4e4d196efa..3c1f54a9bc1 100644
--- a/cpp/src/IceSSL/OpenSSLEngine.cpp
+++ b/cpp/src/IceSSL/OpenSSLEngine.cpp
@@ -30,6 +30,7 @@
#include <openssl/rand.h>
#include <openssl/err.h>
#include <openssl/ssl.h>
+#include <openssl/pkcs12.h>
using namespace std;
using namespace Ice;
@@ -163,7 +164,8 @@ passwordError()
return (reason == PEM_R_BAD_BASE64_DECODE ||
reason == PEM_R_BAD_DECRYPT ||
reason == PEM_R_BAD_PASSWORD_READ ||
- reason == PEM_R_PROBLEMS_GETTING_PASSWORD);
+ reason == PEM_R_PROBLEMS_GETTING_PASSWORD ||
+ reason == PKCS12_R_MAC_VERIFY_FAILURE);
}
}
@@ -245,24 +247,21 @@ OpenSSLEngine::OpenSSLEngine(const CommunicatorPtr& communicator) :
if(!IceUtilInternal::splitString(randFiles, IceUtilInternal::pathsep, files))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: invalid value for IceSSL.Random:\n" + randFiles;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: invalid value for IceSSL.Random:\n" + randFiles);
}
for(vector<string>::iterator p = files.begin(); p != files.end(); ++p)
{
string file = *p;
if(!checkPath(file, defaultDir, false))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: entropy data file not found:\n" + file;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: entropy data file not found:\n" + file);
}
if(!RAND_load_file(file.c_str(), 1024))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: unable to load entropy data from " + file;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to load entropy data from " + file);
}
}
}
@@ -276,9 +275,8 @@ OpenSSLEngine::OpenSSLEngine(const CommunicatorPtr& communicator) :
{
if(RAND_egd(entropyDaemon.c_str()) <= 0)
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: EGD failure using file " + entropyDaemon;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: EGD failure using file " + entropyDaemon);
}
}
# endif
@@ -366,9 +364,8 @@ OpenSSLEngine::initialize()
_ctx = SSL_CTX_new(getMethod(protocols));
if(!_ctx)
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: unable to create SSL context:\n" + sslErrors();
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to create SSL context:\n" + sslErrors());
}
//
@@ -407,9 +404,8 @@ OpenSSLEngine::initialize()
{
if(!checkPath(caFile, defaultDir, false))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: CA certificate file not found:\n" + caFile;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: CA certificate file not found:\n" + caFile);
}
file = caFile.c_str();
}
@@ -417,9 +413,8 @@ OpenSSLEngine::initialize()
{
if(!checkPath(caDir, defaultDir, true))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: CA certificate directory not found:\n" + caDir;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: CA certificate directory not found:\n" + caDir);
}
dir = caDir.c_str();
}
@@ -430,18 +425,17 @@ OpenSSLEngine::initialize()
// password retries.
//
int count = 0;
- int err = 0;
+ int success = 0;
while(count < passwordRetryMax)
{
ERR_clear_error();
- err = SSL_CTX_load_verify_locations(_ctx, file, dir);
- if(err)
+ if((success = SSL_CTX_load_verify_locations(_ctx, file, dir))|| !passwordError())
{
break;
}
++count;
}
- if(err == 0)
+ if(!success)
{
string msg = "IceSSL: unable to establish CA certificates";
if(passwordError())
@@ -456,9 +450,7 @@ OpenSSLEngine::initialize()
msg += ":\n" + err;
}
}
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = msg;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__, msg);
}
}
}
@@ -467,137 +459,232 @@ OpenSSLEngine::initialize()
// Establish the certificate chains and private keys. One RSA certificate and
// one DSA certificate are allowed.
//
+ string certFile = properties->getProperty(propPrefix + "CertFile");
+ string keyFile = properties->getProperty(propPrefix + "KeyFile");
+ bool keyLoaded = false;
+
+ vector<string>::size_type numCerts = 0;
+ if(!certFile.empty())
{
- string certFile = properties->getProperty(propPrefix + "CertFile");
- string keyFile = properties->getProperty(propPrefix + "KeyFile");
- vector<string>::size_type numCerts = 0;
- if(!certFile.empty())
+ vector<string> files;
+ if(!IceUtilInternal::splitString(certFile, IceUtilInternal::pathsep, files) || files.size() > 2)
{
- vector<string> files;
- if(!IceUtilInternal::splitString(certFile, IceUtilInternal::pathsep, files) || files.size() > 2)
+ PluginInitializationException ex(__FILE__, __LINE__,
+ "IceSSL: invalid value for " + propPrefix + "CertFile:\n" + certFile);
+ }
+ numCerts = files.size();
+ for(vector<string>::iterator p = files.begin(); p != files.end(); ++p)
+ {
+ string file = *p;
+ if(!checkPath(file, defaultDir, false))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: invalid value for " + propPrefix + "CertFile:\n" + certFile;
- throw ex;
+ PluginInitializationException ex(__FILE__, __LINE__,
+ "IceSSL: certificate file not found:\n" + file);
+ }
+ //
+ // First we try to load the certificate using PKCS12 format if that fails
+ // we fallback to PEM format.
+ //
+ FILE* f = fopen(file.c_str(), "rb");
+ if(!f)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to load certificate chain from file " + file + "\n" +
+ IceUtilInternal::lastErrorToString());
}
- numCerts = files.size();
- for(vector<string>::iterator p = files.begin(); p != files.end(); ++p)
+
+ int success = 0;
+
+ PKCS12* p12 = d2i_PKCS12_fp(f, 0);
+ fclose(f);
+ if(p12)
{
- string file = *p;
- if(!checkPath(file, defaultDir, false))
+ X509* cert = 0;
+ EVP_PKEY* key = 0;
+ STACK_OF(X509)* chain = 0;
+
+ int count = 0;
+ try
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: certificate file not found:\n" + file;
- throw ex;
+ while(count < passwordRetryMax)
+ {
+ ERR_clear_error();
+ if(!(success = PKCS12_parse(p12, password(false).c_str(), &key, &cert, &chain)))
+ {
+ if(passwordError())
+ {
+ count++;
+ continue;
+ }
+ break;
+ }
+
+ if(!cert || !SSL_CTX_use_certificate(_ctx, cert))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to establish SSL certificate:\n" +
+ (cert ? sslErrors() : "certificate not found"));
+ }
+
+ if(!key || !SSL_CTX_use_PrivateKey(_ctx, key))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to establish SSL private key:\n" +
+ (key ? sslErrors() : "key not found"));
+ }
+ keyLoaded = true;
+
+ if(chain && sk_X509_num(chain))
+ {
+ for(int i = 0; i < sk_X509_num(chain); i++)
+ {
+ if(!SSL_CTX_add_extra_chain_cert(_ctx, sk_X509_value(chain, i)))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to add extra SSL certificate:\n" + sslErrors());
+ }
+ }
+ }
+
+ if(chain)
+ {
+ sk_X509_pop_free(chain, X509_free);
+ }
+ assert(key && cert);
+ EVP_PKEY_free(key);
+ X509_free(cert);
+ break;
+ }
+ PKCS12_free(p12);
+ }
+ catch(...)
+ {
+ PKCS12_free(p12);
+ if(chain)
+ {
+ sk_X509_pop_free(chain, X509_free);
+ }
+
+ if(key)
+ {
+ EVP_PKEY_free(key);
+ }
+
+ if(cert)
+ {
+ X509_free(cert);
+ }
+ throw;
}
+ }
+ else
+ {
//
// The certificate may be stored in an encrypted file, so handle
// password retries.
//
int count = 0;
- int err = 0;
while(count < passwordRetryMax)
{
ERR_clear_error();
- err = SSL_CTX_use_certificate_chain_file(_ctx, file.c_str());
- if(err)
+ if(!(success = SSL_CTX_use_certificate_chain_file(_ctx, file.c_str())))
{
- break;
+ if(passwordError())
+ {
+ count++;
+ continue;
+ }
}
- ++count;
+ count++;
}
- if(err == 0)
+ }
+
+ if(!success)
+ {
+ string msg = "IceSSL: unable to load certificate chain from file " + file;
+ if(passwordError())
{
- string msg = "IceSSL: unable to load certificate chain from file " + file;
- if(passwordError())
- {
- msg += ":\ninvalid password";
- }
- else
+ msg += ":\ninvalid password";
+ }
+ else
+ {
+ string err = sslErrors();
+ if(!err.empty())
{
- string err = sslErrors();
- if(!err.empty())
- {
- msg += ":\n" + err;
- }
+ msg += ":\n" + err;
}
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = msg;
- throw ex;
}
+ throw PluginInitializationException(__FILE__, __LINE__, msg);
}
}
- if(keyFile.empty())
+ }
+
+ if(keyFile.empty())
+ {
+ keyFile = certFile; // Assume the certificate file also contains the private key.
+ }
+ if(!keyLoaded && !keyFile.empty())
+ {
+ vector<string> files;
+ if(!IceUtilInternal::splitString(keyFile, IceUtilInternal::pathsep, files) || files.size() > 2)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: invalid value for " + propPrefix + "KeyFile:\n" + keyFile);
+ }
+ if(files.size() != numCerts)
{
- keyFile = certFile; // Assume the certificate file also contains the private key.
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: " + propPrefix + "KeyFile does not agree with " + propPrefix + "CertFile");
}
- if(!keyFile.empty())
+ for(vector<string>::iterator p = files.begin(); p != files.end(); ++p)
{
- vector<string> files;
- if(!IceUtilInternal::splitString(keyFile, IceUtilInternal::pathsep, files) || files.size() > 2)
- {
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: invalid value for " + propPrefix + "KeyFile:\n" + keyFile;
- throw ex;
- }
- if(files.size() != numCerts)
+ string file = *p;
+ if(!checkPath(file, defaultDir, false))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: " + propPrefix + "KeyFile does not agree with " + propPrefix + "CertFile";
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: key file not found:\n" + file);
}
- for(vector<string>::iterator p = files.begin(); p != files.end(); ++p)
+ //
+ // The private key may be stored in an encrypted file, so handle
+ // password retries.
+ //
+ int count = 0;
+ int err = 0;
+ while(count < passwordRetryMax)
{
- string file = *p;
- if(!checkPath(file, defaultDir, false))
+ ERR_clear_error();
+ err = SSL_CTX_use_PrivateKey_file(_ctx, file.c_str(), SSL_FILETYPE_PEM);
+ if(err)
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: key file not found:\n" + file;
- throw ex;
+ break;
}
- //
- // The private key may be stored in an encrypted file, so handle
- // password retries.
- //
- int count = 0;
- int err = 0;
- while(count < passwordRetryMax)
+ ++count;
+ }
+ if(err == 0)
+ {
+ string msg = "IceSSL: unable to load private key from file " + file;
+ if(passwordError())
{
- ERR_clear_error();
- err = SSL_CTX_use_PrivateKey_file(_ctx, file.c_str(), SSL_FILETYPE_PEM);
- if(err)
- {
- break;
- }
- ++count;
+ msg += ":\ninvalid password";
}
- if(err == 0)
+ else
{
- string msg = "IceSSL: unable to load private key from file " + file;
- if(passwordError())
- {
- msg += ":\ninvalid password";
- }
- else
+ string err = sslErrors();
+ if(!err.empty())
{
- string err = sslErrors();
- if(!err.empty())
- {
- msg += ":\n" + err;
- }
+ msg += ":\n" + err;
}
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = msg;
- throw ex;
}
- }
- if(!SSL_CTX_check_private_key(_ctx))
- {
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: unable to validate private key(s):\n" + sslErrors();
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__, msg);
}
}
+ keyLoaded = true;
+ }
+
+ if(keyLoaded && !SSL_CTX_check_private_key(_ctx))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to validate private key(s):\n" + sslErrors());
}
//
@@ -630,15 +717,13 @@ OpenSSLEngine::initialize()
string file = p->second;
if(!checkPath(file, defaultDir, false))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: DH parameter file not found:\n" + file;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: DH parameter file not found:\n" + file);
}
if(!_dhParams->add(keyLength, file))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: unable to read DH parameter file " + file;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to read DH parameter file " + file);
}
}
}
@@ -684,9 +769,8 @@ OpenSSLEngine::initialize()
{
if(!SSL_CTX_set_cipher_list(_ctx, ciphers.c_str()))
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: unable to set ciphers using `" + ciphers + "':\n" + sslErrors();
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to set ciphers using `" + ciphers + "':\n" + sslErrors());
}
}
@@ -694,7 +778,7 @@ OpenSSLEngine::initialize()
// Determine whether a certificate is required from the peer.
//
{
- int sslVerifyMode = SSL_VERIFY_PEER|SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
+ int sslVerifyMode = SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT;;
switch(getVerifyPeer())
{
case 0:
@@ -704,7 +788,7 @@ OpenSSLEngine::initialize()
sslVerifyMode = SSL_VERIFY_PEER;
break;
case 2:
- sslVerifyMode = SSL_VERIFY_PEER|SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
+ sslVerifyMode = SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
break;
default:
{
@@ -733,9 +817,7 @@ OpenSSLEngine::context(SSL_CTX* context)
{
if(initialized())
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: plug-in is already initialized";
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: plug-in is already initialized");
}
assert(!_ctx);
@@ -748,38 +830,6 @@ OpenSSLEngine::context() const
return _ctx;
}
-void
-OpenSSLEngine::verifyPeer(SSL* ssl, SOCKET fd, const string& address, const NativeConnectionInfoPtr& info)
-{
- long result = SSL_get_verify_result(ssl);
- if(result != X509_V_OK)
- {
- if(getVerifyPeer() == 0)
- {
- if(securityTraceLevel() >= 1)
- {
- ostringstream ostr;
- ostr << "IceSSL: ignoring certificate verification failure:\n" << X509_verify_cert_error_string(result);
- getLogger()->trace(securityTraceCategory(), ostr.str());
- }
- }
- else
- {
- ostringstream ostr;
- ostr << "IceSSL: certificate verification failed:\n" << X509_verify_cert_error_string(result);
- string msg = ostr.str();
- if(securityTraceLevel() >= 1)
- {
- getLogger()->trace(securityTraceCategory(), msg);
- }
- SecurityException ex(__FILE__, __LINE__);
- ex.reason = msg;
- throw ex;
- }
- }
- SSLEngine::verifyPeer(fd, address, info);
-}
-
string
OpenSSLEngine::sslErrors() const
{
@@ -853,9 +903,7 @@ OpenSSLEngine::parseProtocols(const StringSeq& protocols) const
}
else
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: unrecognized protocol `" + prot + "'";
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: unrecognized protocol `" + prot + "'");
}
}
diff --git a/cpp/src/IceSSL/TransceiverI.cpp b/cpp/src/IceSSL/OpenSSLTransceiverI.cpp
index 3fde67ef906..14aad8b9163 100644
--- a/cpp/src/IceSSL/TransceiverI.cpp
+++ b/cpp/src/IceSSL/OpenSSLTransceiverI.cpp
@@ -7,7 +7,7 @@
//
// **********************************************************************
-#include <IceSSL/TransceiverI.h>
+#include <IceSSL/OpenSSLTransceiverI.h>
#include <IceUtil/Mutex.h>
#include <IceUtil/MutexPtrLock.h>
@@ -71,23 +71,6 @@ IceSSL::TransceiverI::getNativeInfo()
return this;
}
-#ifdef ICE_USE_IOCP
-IceInternal::AsyncInfo*
-IceSSL::TransceiverI::getAsyncInfo(IceInternal::SocketOperation status)
-{
- switch(status)
- {
- case IceInternal::SocketOperationRead:
- return &_read;
- case IceInternal::SocketOperationWrite:
- return &_write;
- default:
- assert(false);
- return 0;
- }
-}
-#endif
-
IceInternal::SocketOperation
IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::Buffer& writeBuffer, bool&)
{
@@ -100,11 +83,7 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
}
else if(_state <= StateConnectPending)
{
-#ifdef ICE_USE_IOCP
- IceInternal::doFinishConnectAsync(_fd, _write);
-#else
IceInternal::doFinishConnect(_fd);
-#endif
_desc = IceInternal::fdToString(_fd, _proxy, _addr, true);
@@ -116,13 +95,6 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
_proxy->beginWriteConnectRequest(_addr, writeBuffer);
_proxy->beginReadConnectRequestResponse(readBuffer);
-#ifdef ICE_USE_IOCP
- //
- // Return SocketOperationWrite to indicate we need to start a write.
- //
- _state = StateProxyConnectRequest; // Send proxy connect request
- return IceInternal::SocketOperationWrite;
-#else
//
// Write the proxy connection message using TCP.
//
@@ -160,7 +132,6 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
_state = StateProxyConnectRequest; // Send proxy connect request
return IceInternal::SocketOperationWrite;
}
-#endif
}
_state = StateConnected;
@@ -187,42 +158,10 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
if(!_ssl)
{
-#ifdef ICE_USE_IOCP
- //
- // On Windows, limiting the buffer size is important to prevent
- // poor throughput performances when transfering large amount of
- // data. See Microsoft KB article KB823764.
- //
- _maxSendPacketSize = IceInternal::getSendBufferSize(_fd) / 2;
- if(_maxSendPacketSize < 512)
- {
- _maxSendPacketSize = 0;
- }
-
- _maxReceivePacketSize = IceInternal::getRecvBufferSize(_fd);
- if(_maxReceivePacketSize < 512)
- {
- _maxReceivePacketSize = 0;
- }
-
- _readI = _readBuffer.end();
- _writeI = _writeBuffer.end();
- _sentBytes = 0;
-#endif
-
-#ifdef ICE_USE_IOCP
- BIO* bio;
- if(!BIO_new_bio_pair(&bio, _maxSendPacketSize, &_iocpBio, _maxReceivePacketSize))
- {
- bio = 0;
- _iocpBio = 0;
- }
-#else
//
// This static_cast is necessary due to 64bit windows. There SOCKET is a non-int type.
//
BIO* bio = BIO_new_socket(static_cast<int>(_fd), 0);
-#endif
if(!bio)
{
SecurityException ex(__FILE__, __LINE__);
@@ -234,10 +173,6 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
if(!_ssl)
{
BIO_free(bio);
-#ifdef ICE_USE_IOCP
- BIO_free(_iocpBio);
- _iocpBio = 0;
-#endif
SecurityException ex(__FILE__, __LINE__);
ex.reason = "openssl failure";
throw ex;
@@ -267,16 +202,6 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
sync.release();
#endif
-#ifdef ICE_USE_IOCP
- if(BIO_ctrl_pending(_iocpBio))
- {
- if(!send())
- {
- return IceInternal::SocketOperationWrite;
- }
- continue;
- }
-#endif
if(ret <= 0)
{
switch(SSL_get_error(_ssl, ret))
@@ -292,22 +217,10 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
}
case SSL_ERROR_WANT_READ:
{
-#ifdef ICE_USE_IOCP
- if(receive())
- {
- continue;
- }
-#endif
return IceInternal::SocketOperationRead;
}
case SSL_ERROR_WANT_WRITE:
{
-#ifdef ICE_USE_IOCP
- if(send())
- {
- continue;
- }
-#endif
return IceInternal::SocketOperationWrite;
}
case SSL_ERROR_SYSCALL:
@@ -319,7 +232,6 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
throw ex;
}
-#ifndef ICE_USE_IOCP
if(ret == -1)
{
if(IceInternal::interrupted())
@@ -348,7 +260,6 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
throw ex;
}
}
-#endif
SocketException ex(__FILE__, __LINE__);
ex.error = IceInternal::getSocketErrno();
throw ex;
@@ -372,7 +283,34 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
}
}
- _engine->verifyPeer(_ssl, _fd, _host, getNativeConnectionInfo());
+ long result = SSL_get_verify_result(_ssl);
+ if(result != X509_V_OK)
+ {
+ if(_engine->getVerifyPeer() == 0)
+ {
+ if(_engine->securityTraceLevel() >= 1)
+ {
+ ostringstream ostr;
+ ostr << "IceSSL: ignoring certificate verification failure:\n"
+ << X509_verify_cert_error_string(result);
+ _instance->logger()->trace(_instance->traceCategory(), ostr.str());
+ }
+ }
+ else
+ {
+ ostringstream ostr;
+ ostr << "IceSSL: certificate verification failed:\n" << X509_verify_cert_error_string(result);
+ string msg = ostr.str();
+ if(_engine->securityTraceLevel() >= 1)
+ {
+ _instance->logger()->trace(_instance->traceCategory(), msg);
+ }
+ SecurityException ex(__FILE__, __LINE__);
+ ex.reason = msg;
+ throw ex;
+ }
+ }
+ _engine->verifyPeer(_fd, _host, getNativeConnectionInfo());
_state = StateHandshakeComplete;
}
catch(const Ice::LocalException& ex)
@@ -406,9 +344,27 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
}
}
- if(_instance->engine()->securityTraceLevel() >= 1)
+ if(_engine->securityTraceLevel() >= 1)
{
- traceConnection();
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << "SSL summary for " << (_incoming ? "incoming" : "outgoing") << " connection\n";
+
+ //
+ // The const_cast is necesary because Solaris still uses OpenSSL 0.9.7.
+ //
+ //const SSL_CIPHER *cipher = SSL_get_current_cipher(ssl);
+ SSL_CIPHER *cipher = const_cast<SSL_CIPHER*>(SSL_get_current_cipher(_ssl));
+ if(!cipher)
+ {
+ out << "unknown cipher\n";
+ }
+ else
+ {
+ out << "cipher = " << SSL_CIPHER_get_name(cipher) << "\n";
+ out << "bits = " << SSL_CIPHER_get_bits(cipher, 0) << "\n";
+ out << "protocol = " << SSL_get_version(_ssl) << "\n";
+ }
+ out << IceInternal::fdToString(SSL_get_fd(_ssl));
}
return IceInternal::SocketOperationNone;
@@ -447,14 +403,6 @@ IceSSL::TransceiverI::close()
_ssl = 0;
}
-#ifdef ICE_USE_IOCP
- if(_iocpBio)
- {
- BIO_free(_iocpBio);
- _iocpBio = 0;
- }
-#endif
-
assert(_fd != INVALID_SOCKET);
try
{
@@ -484,16 +432,6 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
return IceInternal::SocketOperationNone;
}
-#ifdef ICE_USE_IOCP
- if(_writeI != _writeBuffer.end())
- {
- if(!send())
- {
- return IceInternal::SocketOperationWrite;
- }
- }
-#endif
-
//
// It's impossible for packetSize to be more than an Int.
//
@@ -502,28 +440,7 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
{
ERR_clear_error(); // Clear any spurious errors.
assert(_fd != INVALID_SOCKET);
-#ifdef ICE_USE_IOCP
- int ret;
- if(_sentBytes > 0)
- {
- ret = _sentBytes;
- _sentBytes = 0;
- }
- else
- {
- ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
- if(ret > 0)
- {
- if(!send())
- {
- _sentBytes = ret;
- return IceInternal::SocketOperationWrite;
- }
- }
- }
-#else
int ret = SSL_write(_ssl, reinterpret_cast<const void*>(&*buf.i), packetSize);
-#endif
if(ret <= 0)
{
switch(SSL_get_error(_ssl, ret))
@@ -544,17 +461,10 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
}
case SSL_ERROR_WANT_WRITE:
{
-#ifdef ICE_USE_IOCP
- if(send())
- {
- continue;
- }
-#endif
return IceInternal::SocketOperationWrite;
}
case SSL_ERROR_SYSCALL:
{
-#ifndef ICE_USE_IOCP
if(ret == -1)
{
if(IceInternal::interrupted())
@@ -581,7 +491,6 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
throw ex;
}
}
-#endif
if(ret == 0)
{
ConnectionLostException ex(__FILE__, __LINE__);
@@ -642,16 +551,6 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool&)
return IceInternal::SocketOperationNone;
}
-#ifdef ICE_USE_IOCP
- if(_readI != _readBuffer.end())
- {
- if(!receive())
- {
- return IceInternal::SocketOperationRead;
- }
- }
-#endif
-
//
// It's impossible for packetSize to be more than an Int.
//
@@ -666,8 +565,10 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool&)
switch(SSL_get_error(_ssl, ret))
{
case SSL_ERROR_NONE:
+ {
assert(false);
break;
+ }
case SSL_ERROR_ZERO_RETURN:
{
//
@@ -687,12 +588,6 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool&)
}
case SSL_ERROR_WANT_READ:
{
-#ifdef ICE_USE_IOCP
- if(receive())
- {
- continue;
- }
-#endif
return IceInternal::SocketOperationRead;
}
case SSL_ERROR_WANT_WRITE:
@@ -702,7 +597,6 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool&)
}
case SSL_ERROR_SYSCALL:
{
-#ifndef ICE_USE_IOCP
if(ret == -1)
{
if(IceInternal::interrupted())
@@ -737,7 +631,6 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool&)
throw ex;
}
}
-#endif
if(ret == 0)
{
@@ -800,222 +693,6 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool&)
return IceInternal::SocketOperationNone;
}
-#ifdef ICE_USE_IOCP
-
-bool
-IceSSL::TransceiverI::startWrite(IceInternal::Buffer& buf)
-{
- if(_state == StateConnectPending)
- {
- IceInternal::Address addr = _proxy ? _proxy->getAddress() : _addr;
- IceInternal::doConnectAsync(_fd, addr, _write);
- return false;
- }
- else if(_state == StateProxyConnectRequest)
- {
- //
- // We need to write the proxy message, but we have to use TCP and not SSL.
- //
- assert(!buf.b.empty() && buf.i != buf.b.end());
-
- const int packetSize = static_cast<int>(buf.b.end() - buf.i);
- const int actualSize = writeAsync(reinterpret_cast<char*>(&*buf.i), packetSize);
- return packetSize == actualSize;
- }
-
- if(_writeBuffer.empty() || _writeI == _writeBuffer.end())
- {
- assert(!buf.b.empty() && buf.i != buf.b.end());
- assert(!BIO_ctrl_pending(_iocpBio));
-
- ERR_clear_error(); // Clear any spurious errors.
- int ret = SSL_write(_ssl, reinterpret_cast<void*>(&*buf.i), static_cast<int>(buf.b.end() - buf.i));
- assert(ret > 0 || SSL_get_error(_ssl, ret) == SSL_ERROR_WANT_WRITE);
- if(ret > 0)
- {
- _sentBytes = ret;
- }
- assert(BIO_ctrl_pending(_iocpBio));
- _writeBuffer.resize(BIO_ctrl_pending(_iocpBio));
-#ifndef NDEBUG
- int n =
-#endif
- BIO_read(_iocpBio, &_writeBuffer[0], static_cast<int>(_writeBuffer.size()));
- assert(n == static_cast<int>(_writeBuffer.size()));
- _writeI = _writeBuffer.begin();
- }
-
- assert(!_writeBuffer.empty() && _writeI != _writeBuffer.end());
-
- const int packetSize = static_cast<int>(_writeBuffer.end() - _writeI);
- const int actualSize = writeAsync(reinterpret_cast<char*>(&*_writeI), packetSize);
-
- return packetSize == actualSize;
-}
-
-void
-IceSSL::TransceiverI::finishWrite(IceInternal::Buffer& buf)
-{
- if(_state < StateConnected && _state != StateProxyConnectRequest)
- {
- return;
- }
-
- if(static_cast<int>(_write.count) == SOCKET_ERROR)
- {
- WSASetLastError(_write.error);
- if(IceInternal::connectionLost())
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- else
- {
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- }
-
- if(_state == StateProxyConnectRequest)
- {
- buf.i += _write.count;
- }
- else
- {
- _writeI += _write.count;
-
- if(_iocpBio && _writeI == _writeBuffer.end() && _sentBytes > 0)
- {
- int packetSize = static_cast<int>(buf.b.end() - buf.i);
- if(_instance->traceLevel() >= 3)
- {
- Trace out(_instance->logger(), _instance->traceCategory());
- out << "sent " << _sentBytes << " of " << packetSize << " bytes via " << protocol() << "\n" << toString();
- }
-
- buf.i += _sentBytes;
- _sentBytes = 0;
- }
- }
-}
-
-void
-IceSSL::TransceiverI::startRead(IceInternal::Buffer& buf)
-{
- if(_state == StateProxyConnectRequestPending)
- {
- //
- // We need to read the proxy reply, but we have to use TCP and not SSL.
- //
- assert(!buf.b.empty() && buf.i != buf.b.end());
- const int packetSize = static_cast<int>(buf.b.end() - buf.i);
- readAsync(reinterpret_cast<char*>(&*buf.i), packetSize);
- return;
- }
-
- if(_readI == _readBuffer.end())
- {
- assert(!buf.b.empty() && buf.i != buf.b.end());
- if(!BIO_ctrl_get_read_request(_iocpBio))
- {
- ERR_clear_error(); // Clear any spurious errors.
- int packetSize = static_cast<int>(buf.b.end() - buf.i);
- int ret = SSL_read(_ssl, reinterpret_cast<void*>(&*buf.i), packetSize);
- if(ret > 0)
- {
- if(_instance->traceLevel() >= 3)
- {
- Trace out(_instance->logger(), _instance->traceCategory());
- out << "received " << ret << " of " << packetSize << " bytes via " << protocol() << "\n" << toString();
- }
-
- buf.i += ret;
-
- _read.count = 0;
- completed(IceInternal::SocketOperationRead);
- return;
- }
- assert(ret <= 0 && SSL_get_error(_ssl, ret) == SSL_ERROR_WANT_READ);
- }
-
- assert(BIO_ctrl_get_read_request(_iocpBio));
- _readBuffer.resize(BIO_ctrl_get_read_request(_iocpBio));
- _readI = _readBuffer.begin();
- }
-
- assert(!_readBuffer.empty() && _readI != _readBuffer.end());
- readAsync(reinterpret_cast<char*>(&*_readI), static_cast<int>(_readBuffer.end() - _readI));
-}
-
-void
-IceSSL::TransceiverI::finishRead(IceInternal::Buffer& buf)
-{
- if(static_cast<int>(_read.count) == SOCKET_ERROR)
- {
- WSASetLastError(_read.error);
- if(IceInternal::connectionLost())
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- else
- {
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- }
- else if(_read.count == 0 && _readI < _readBuffer.end())
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = 0;
- throw ex;
- }
-
- if(_state == StateProxyConnectRequestPending)
- {
- buf.i += _read.count;
- }
- else if(_read.count > 0)
- {
- _readI += _read.count;
-
- if(_iocpBio && _readI == _readBuffer.end())
- {
- int n = BIO_write(_iocpBio, &_readBuffer[0], static_cast<int>(_readBuffer.size()));
- if(n < 0) // Expected if the transceiver was closed.
- {
- SecurityException ex(__FILE__, __LINE__);
- ex.reason = "SSL bio write failed";
- throw ex;
- }
- assert(n == static_cast<int>(_readBuffer.size()));
-
- if(!buf.b.empty() && buf.i != buf.b.end())
- {
- ERR_clear_error(); // Clear any spurious errors.
- int packetSize = static_cast<int>(buf.b.end() - buf.i);
- int ret = SSL_read(_ssl, reinterpret_cast<void*>(&*buf.i), packetSize);
- if(ret > 0)
- {
- if(_instance->traceLevel() >= 3)
- {
- Trace out(_instance->logger(), _instance->traceCategory());
- out << "received " << ret << " of " << packetSize << " bytes via " << protocol() << "\n" << toString();
- }
-
- buf.i += ret;
- }
- }
- }
- }
-}
-
-#endif
-
string
IceSSL::TransceiverI::protocol() const
{
@@ -1054,16 +731,10 @@ IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const
_incoming(false),
_ssl(0),
_state(StateNeedConnect)
-#ifdef ICE_USE_IOCP
- , _iocpBio(0),
- _read(IceInternal::SocketOperationRead),
- _write(IceInternal::SocketOperationWrite)
-#endif
{
IceInternal::setBlock(fd, false);
IceInternal::setTcpBufSize(fd, _instance->properties(), _instance->logger());
-#ifndef ICE_USE_IOCP
IceInternal::Address connectAddr = proxy ? proxy->getAddress() : addr;
if(IceInternal::doConnect(_fd, connectAddr))
{
@@ -1079,7 +750,6 @@ IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const
{
_desc = IceInternal::fdToString(_fd, _proxy, _addr, true);
}
-#endif
}
IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const string& adapterName) :
@@ -1092,11 +762,6 @@ IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const
_ssl(0),
_state(StateConnected),
_desc(IceInternal::fdToString(fd))
-#ifdef ICE_USE_IOCP
- , _iocpBio(0),
- _read(IceInternal::SocketOperationRead),
- _write(IceInternal::SocketOperationWrite)
-#endif
{
IceInternal::setBlock(fd, false);
IceInternal::setTcpBufSize(fd, _instance->properties(), _instance->logger());
@@ -1157,247 +822,6 @@ IceSSL::TransceiverI::getNativeConnectionInfo() const
return info;
}
-#ifdef ICE_USE_IOCP
-
-bool
-IceSSL::TransceiverI::receive()
-{
- if(_readI == _readBuffer.end())
- {
- assert(BIO_ctrl_get_read_request(_iocpBio));
- _readBuffer.resize(BIO_ctrl_get_read_request(_iocpBio));
- _readI = _readBuffer.begin();
- }
-
- int packetSize = static_cast<int>(_readBuffer.end() - _readI);
- while(_readI != _readBuffer.end())
- {
- assert(_fd != INVALID_SOCKET);
- ssize_t ret = ::recv(_fd, reinterpret_cast<char*>(&*_readI), packetSize, 0);
- if(ret == 0)
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = 0;
- throw ex;
- }
-
- if(ret == SOCKET_ERROR)
- {
- if(IceInternal::interrupted())
- {
- continue;
- }
-
- if(IceInternal::noBuffers() && packetSize > 1024)
- {
- packetSize /= 2;
- continue;
- }
-
- if(IceInternal::wouldBlock())
- {
- return false;
- }
-
- if(IceInternal::connectionLost())
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- else
- {
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- }
-
- _readI += ret;
- if(packetSize > _readBuffer.end() - _readI)
- {
- packetSize = static_cast<int>(_readBuffer.end() - _readI);
- }
- }
-
- assert(_readI == _readBuffer.end());
-#ifndef NDEBUG
- int n =
-#endif
- BIO_write(_iocpBio, &_readBuffer[0], static_cast<int>(_readBuffer.size()));
-
- assert(n == static_cast<int>(_readBuffer.size()));
- return true;
-}
-
-bool
-IceSSL::TransceiverI::send()
-{
- if(_writeI == _writeBuffer.end())
- {
- assert(BIO_ctrl_pending(_iocpBio));
- _writeBuffer.resize(BIO_ctrl_pending(_iocpBio));
-#ifndef NDEBUG
- int n =
-#endif
- BIO_read(_iocpBio, &_writeBuffer[0], static_cast<int>(_writeBuffer.size()));
- assert(n == static_cast<int>(_writeBuffer.size()));
- _writeI = _writeBuffer.begin();
- }
-
- int packetSize = static_cast<int>(_writeBuffer.end() - _writeI);
- if(_maxSendPacketSize > 0 && packetSize > _maxSendPacketSize)
- {
- packetSize = _maxSendPacketSize;
- }
-
- while(_writeI != _writeBuffer.end())
- {
- int ret = ::send(_fd, reinterpret_cast<const char*>(&*_writeI), packetSize, 0);
- if(ret == 0)
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = 0;
- throw ex;
- }
-
- if(ret == SOCKET_ERROR)
- {
- if(IceInternal::interrupted())
- {
- continue;
- }
-
- if(IceInternal::noBuffers() && packetSize > 1024)
- {
- packetSize /= 2;
- continue;
- }
-
- if(IceInternal::wouldBlock())
- {
- return false;
- }
-
- if(IceInternal::connectionLost())
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- else
- {
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- }
-
- _writeI += ret;
- if(packetSize > _writeBuffer.end() - _writeI)
- {
- packetSize = static_cast<int>(_writeBuffer.end() - _writeI);
- }
- }
- return true;
-}
-
-int
-IceSSL::TransceiverI::writeAsync(char* buf, int packetSize)
-{
- if(_maxSendPacketSize > 0 && packetSize > _maxSendPacketSize)
- {
- packetSize = _maxSendPacketSize;
- }
-
- _write.buf.len = packetSize;
- _write.buf.buf = buf;
-
- int err = WSASend(_fd, &_write.buf, 1, &_write.count, 0, &_write, NULL);
-
- if(err == SOCKET_ERROR)
- {
- if(!IceInternal::wouldBlock())
- {
- if(IceInternal::connectionLost())
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- else
- {
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- }
- }
-
- return packetSize;
-}
-
-int
-IceSSL::TransceiverI::readAsync(char* buf, int packetSize)
-{
- if(_maxReceivePacketSize > 0 && packetSize > _maxReceivePacketSize)
- {
- packetSize = _maxReceivePacketSize;
- }
-
- _read.buf.len = packetSize;
- _read.buf.buf = buf;
-
- int err = WSARecv(_fd, &_read.buf, 1, &_read.count, &_read.flags, &_read, NULL);
-
- if(err == SOCKET_ERROR)
- {
- if(!IceInternal::wouldBlock())
- {
- if(IceInternal::connectionLost())
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- else
- {
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
- }
- }
- }
-
- return packetSize;
-}
-
-#endif
-
-void
-IceSSL::TransceiverI::traceConnection()
-{
- Trace out(_instance->logger(), _instance->traceCategory());
- out << "SSL summary for " << (_incoming ? "incoming" : "outgoing") << " connection\n";
-
- //
- // The const_cast is necesary because Solaris still uses OpenSSL 0.9.7.
- //
- //const SSL_CIPHER *cipher = SSL_get_current_cipher(ssl);
- SSL_CIPHER *cipher = const_cast<SSL_CIPHER*>(SSL_get_current_cipher(_ssl));
- if(!cipher)
- {
- out << "unknown cipher\n";
- }
- else
- {
- out << "cipher = " << SSL_CIPHER_get_name(cipher) << "\n";
- out << "bits = " << SSL_CIPHER_get_bits(cipher, 0) << "\n";
- out << "protocol = " << SSL_get_version(_ssl) << "\n";
- }
- out << IceInternal::fdToString(SSL_get_fd(_ssl));
-}
-
bool
IceSSL::TransceiverI::writeRaw(IceInternal::Buffer& buf)
{
diff --git a/cpp/src/IceSSL/TransceiverI.h b/cpp/src/IceSSL/OpenSSLTransceiverI.h
index b74da103485..8833dcb58b8 100644
--- a/cpp/src/IceSSL/TransceiverI.h
+++ b/cpp/src/IceSSL/OpenSSLTransceiverI.h
@@ -80,7 +80,6 @@ private:
int readAsync(char*, int);
#endif
- void traceConnection();
bool writeRaw(IceInternal::Buffer&);
bool readRaw(IceInternal::Buffer&);
diff --git a/cpp/src/IceSSL/PluginI.cpp b/cpp/src/IceSSL/PluginI.cpp
index 5a39e3ee93f..145089d026e 100644
--- a/cpp/src/IceSSL/PluginI.cpp
+++ b/cpp/src/IceSSL/PluginI.cpp
@@ -9,7 +9,6 @@
#include <IceSSL/PluginI.h>
#include <IceSSL/Instance.h>
-#include <IceSSL/TransceiverI.h>
#include <IceSSL/SSLEngine.h>
#include <IceSSL/EndpointI.h>
#include <IceSSL/EndpointInfo.h>
@@ -41,10 +40,12 @@ createIceSSL(const CommunicatorPtr& communicator, const string& /*name*/, const
//
IceSSL::PluginI::PluginI(const Ice::CommunicatorPtr& communicator)
{
-#ifdef ICE_USE_OPENSSL
- _engine = new OpenSSLEngine(communicator);
-#else
+#if defined(ICE_USE_SECURE_TRANSPORT)
_engine = new SecureTransportEngine(communicator);
+#elif defined(ICE_USE_SCHANNEL)
+ _engine = new SChannelEngine(communicator);
+#else
+ _engine = new OpenSSLEngine(communicator);
#endif
IceInternal::ProtocolPluginFacadePtr facade = IceInternal::getProtocolPluginFacade(communicator);
diff --git a/cpp/src/IceSSL/PluginI.h b/cpp/src/IceSSL/PluginI.h
index bd6447fe988..6b6979ea19f 100644
--- a/cpp/src/IceSSL/PluginI.h
+++ b/cpp/src/IceSSL/PluginI.h
@@ -42,10 +42,12 @@ public:
private:
-#ifdef ICE_USE_OPENSSL
- OpenSSLEnginePtr _engine;
-#else
+#if defined(ICE_USE_SECURE_TRANSPORT)
SecureTransportEnginePtr _engine;
+#elif defined(ICE_USE_SCHANNEL)
+ SChannelEnginePtr _engine;
+#else
+ OpenSSLEnginePtr _engine;
#endif
};
diff --git a/cpp/src/IceSSL/SChannelEngine.cpp b/cpp/src/IceSSL/SChannelEngine.cpp
new file mode 100644
index 00000000000..89254a433bb
--- /dev/null
+++ b/cpp/src/IceSSL/SChannelEngine.cpp
@@ -0,0 +1,664 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <IceSSL/SSLEngine.h>
+#include <IceSSL/Plugin.h>
+
+#include <Ice/LocalException.h>
+#include <Ice/Logger.h>
+#include <Ice/Communicator.h>
+
+#include <IceUtil/StringUtil.h>
+#include <IceUtil/FileUtil.h>
+#include <IceUtil/UUID.h>
+
+using namespace std;
+using namespace Ice;
+using namespace IceUtil;
+using namespace IceSSL;
+
+#ifdef ICE_USE_SCHANNEL
+
+IceUtil::Shared* IceSSL::upCast(IceSSL::SChannelEngine* p) { return p; }
+
+namespace
+{
+
+void
+addCertificateToStore(const string& file, HCERTSTORE store, PCCERT_CONTEXT* cert = 0)
+{
+ vector<char> buffer;
+ readFile(file, buffer);
+ vector<BYTE> outBuffer;
+ outBuffer.resize(buffer.size());
+ DWORD outLength = static_cast<DWORD>(outBuffer.size());
+
+ if(!CryptStringToBinary(&buffer[0], static_cast<DWORD>(buffer.size()), CRYPT_STRING_BASE64HEADER,
+ &outBuffer[0], &outLength, 0, 0))
+ {
+ //
+ // Base64 data should always be bigger than binary
+ //
+ assert(GetLastError() != ERROR_MORE_DATA);
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error decoding certificate:\n" + IceUtilInternal::lastErrorToString());
+ }
+
+ if(!CertAddEncodedCertificateToStore(store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &outBuffer[0],
+ outLength, CERT_STORE_ADD_NEW, cert))
+ {
+ if(GetLastError() != static_cast<DWORD>(CRYPT_E_EXISTS))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error decoding certificate:\n" + IceUtilInternal::lastErrorToString());
+ }
+ }
+}
+
+DWORD
+parseProtocols(const StringSeq& protocols)
+{
+ DWORD v = 0;
+
+ for(Ice::StringSeq::const_iterator p = protocols.begin(); p != protocols.end(); ++p)
+ {
+ string prot = *p;
+
+ if(prot == "ssl3" || prot == "sslv3")
+ {
+ v |= SP_PROT_SSL3_SERVER;
+ v |= SP_PROT_SSL3_CLIENT;
+ }
+ else if(prot == "tls" || prot == "tls1" || prot == "tlsv1" || prot == "tls1_0" || prot == "tlsv1_0")
+ {
+ v |= SP_PROT_TLS1_SERVER;
+ v |= SP_PROT_TLS1_CLIENT;
+ }
+ else if(prot == "tls1_1" || prot == "tlsv1_1")
+ {
+ v |= SP_PROT_TLS1_1_SERVER;
+ v |= SP_PROT_TLS1_1_CLIENT;
+ }
+ else if(prot == "tls1_2" || prot == "tlsv1_2")
+ {
+ v |= SP_PROT_TLS1_2_SERVER;
+ v |= SP_PROT_TLS1_2_CLIENT;
+ }
+ else
+ {
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: unrecognized protocol `" + prot + "'");
+ }
+ }
+
+ return v;
+}
+
+const ALG_ID supportedChipers[] = {CALG_3DES, CALG_AES_128, CALG_AES_256, CALG_DES, CALG_RC2, CALG_RC4};
+const int supportedChipersSize = sizeof(supportedChipers)/sizeof(ALG_ID);
+
+ALG_ID
+algorithmId(const string& name)
+{
+ if(name == "3DES")
+ {
+ return CALG_3DES;
+ }
+ if(name == "AES_128")
+ {
+ return CALG_AES_128;
+ }
+ if(name == "AES_256")
+ {
+ return CALG_AES_256;
+ }
+ if(name == "DES")
+ {
+ return CALG_DES;
+ }
+ if(name == "RC2")
+ {
+ return CALG_RC2;
+ }
+ if(name == "RC4")
+ {
+ return CALG_RC4;
+ }
+ return 0;
+}
+
+}
+
+SChannelEngine::SChannelEngine(const CommunicatorPtr& communicator) :
+ SSLEngine(communicator),
+ _initialized(false),
+ _rootStore(0),
+ _chainEngine(0)
+{
+}
+
+void
+SChannelEngine::initialize()
+{
+ IceUtil::Mutex::Lock lock(_mutex);
+ if(_initialized)
+ {
+ return;
+ }
+
+ SSLEngine::initialize();
+
+ const string prefix = "IceSSL.";
+ const PropertiesPtr properties = communicator()->getProperties();
+
+ //
+ // Protocols selects which protocols to enable.
+ //
+ const_cast<DWORD&>(_protocols) = parseProtocols(properties->getPropertyAsList(prefix + "Protocols"));
+
+ //
+ // Check for a default directory. We look in this directory for
+ // files mentioned in the configuration.
+ //
+ string defaultDir = properties->getProperty(prefix + "DefaultDir");
+
+ int passwordRetryMax = properties->getPropertyAsIntWithDefault(prefix + "PasswordRetryMax", 3);
+ PasswordPromptPtr passwordPrompt = getPasswordPrompt();
+ setPassword(properties->getProperty(prefix + "Password"));
+
+ string ciphers = properties->getProperty(prefix + "Ciphers");
+ if(!ciphers.empty())
+ {
+ parseCiphers(ciphers);
+ }
+
+ if(securityTraceLevel() >= 1)
+ {
+ ostringstream os;
+ os << "enabling SSL ciphersuites:";
+ if(_ciphers.empty())
+ {
+ for(int i = 0; i < supportedChipersSize; ++i)
+ {
+ os << "\n " << getCipherName(supportedChipers[i]);
+ }
+ }
+ else
+ {
+ for(vector<ALG_ID>::const_iterator i = _ciphers.begin(); i != _ciphers.end(); ++i)
+ {
+ os << "\n " << getCipherName(*i);
+ }
+ }
+ getLogger()->trace(securityTraceCategory(), os.str());
+ }
+
+ string certStore = properties->getPropertyWithDefault(prefix + "CertStore", "CurrentUser");
+ if(certStore != "CurrentUser" && certStore != "LocalMachine")
+ {
+ getLogger()->warning("Invalid IceSSL.CertStore value `" + certStore + "' adjusted to `CurrentUser'");
+ certStore = "CurrentUser";
+ }
+
+ //
+ // Create trusted CA store with contents of CertAuthFile
+ //
+ string caFile = properties->getProperty(prefix + "CertAuthFile");
+ if(!caFile.empty())
+ {
+ _rootStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
+ if(!_rootStore)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error creating in memory certificate store:\n" + IceUtilInternal::lastErrorToString());
+ }
+
+ if(!checkPath(caFile, defaultDir, false))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: CA certificate file not found:\n" + caFile);
+ }
+
+ addCertificateToStore(caFile, _rootStore);
+
+ //
+ // Create a chain engine that uses our Trusted Root Store
+ //
+#ifdef __MINGW32__
+ CertChainEngineConfig config;
+ memset(&config, 0, sizeof(CertChainEngineConfig));
+ config.cbSize = sizeof(CertChainEngineConfig);
+#else
+ CERT_CHAIN_ENGINE_CONFIG config;
+ memset(&config, 0, sizeof(CERT_CHAIN_ENGINE_CONFIG));
+ config.cbSize = sizeof(CERT_CHAIN_ENGINE_CONFIG);
+#endif
+ config.hExclusiveRoot = _rootStore;
+
+ //
+ // Build the chain using the LocalMachine registry location as opposed
+ // to the CurrentUser location.
+ //
+ if(certStore == "LocalMachine")
+ {
+ config.dwFlags = CERT_CHAIN_USE_LOCAL_MACHINE_STORE;
+ }
+
+#ifdef __MINGW32__
+ if(!CertCreateCertificateChainEngine(reinterpret_cast<CERT_CHAIN_ENGINE_CONFIG*>(&config), &_chainEngine))
+#else
+ if(!CertCreateCertificateChainEngine(&config, &_chainEngine))
+#endif
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error creating certificate chain engine:\n" + IceUtilInternal::lastErrorToString());
+ }
+ }
+ else
+ {
+ _chainEngine = (certStore == "LocalMachine") ? HCCE_LOCAL_MACHINE : HCCE_CURRENT_USER;
+ }
+
+ //
+ // Import the application certificate and private keys.
+ //
+ string keySet = properties->getPropertyWithDefault(prefix + "KeySet", "DefaultKeySet");
+ if(keySet != "DefaultKeySet" && keySet != "UserKeySet" && keySet != "MachineKeySet")
+ {
+ getLogger()->warning("Invalid IceSSL.KeySet value `" + keySet + "' adjusted to `DefaultKeySet'");
+ keySet = "DefaultKeySet";
+ }
+
+ DWORD importFlags = (keySet == "MachineKeySet") ? CRYPT_MACHINE_KEYSET : CRYPT_USER_KEYSET;
+
+ string certFile = properties->getProperty(prefix + "CertFile");
+ string keyFile = properties->getPropertyWithDefault(prefix + "KeyFile", certFile);
+
+ if(!certFile.empty())
+ {
+ vector<string> certFiles;
+ if(!IceUtilInternal::splitString(certFile, IceUtilInternal::pathsep, certFiles) || certFiles.size() > 2)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: invalid value for " + prefix + "CertFile:\n" + certFile);
+ }
+
+ vector<string> keyFiles;
+ if(!IceUtilInternal::splitString(keyFile, IceUtilInternal::pathsep, keyFiles) || keyFiles.size() > 2)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: invalid value for " + prefix + "KeyFile:\n" + keyFile);
+ }
+
+ if(certFiles.size() != keyFiles.size())
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: " + prefix + "KeyFile does not agree with " + prefix + "CertFile");
+ }
+
+ for(size_t i = 0; i < certFiles.size(); ++i)
+ {
+ string certFile = certFiles[i];
+ if(!checkPath(certFile, defaultDir, false))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: certificate file not found:\n" + certFile);
+ }
+
+ vector<char> buffer;
+ readFile(certFile, buffer);
+
+ CRYPT_DATA_BLOB pfxBlob;
+ pfxBlob.cbData = static_cast<DWORD>(buffer.size());
+ pfxBlob.pbData = reinterpret_cast<BYTE*>(&buffer[0]);
+
+ HCERTSTORE store = 0;
+ PCCERT_CONTEXT cert = 0;
+ int err = 0;
+ int count = 0;
+ do
+ {
+ string s = password(false);
+ store = PFXImportCertStore(&pfxBlob, stringToWstring(s).c_str(), importFlags);
+ err = store ? 0 : GetLastError();
+ }
+ while(err == ERROR_INVALID_PASSWORD && passwordPrompt && ++count < passwordRetryMax);
+
+ if(store)
+ {
+ _stores.push_back(store);
+ cert = CertFindCertificateInStore(store, X509_ASN_ENCODING, 0, CERT_FIND_ANY, 0, cert);
+ if(!cert)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: certificate error:\n" + IceUtilInternal::lastErrorToString());
+ }
+ _certs.push_back(cert);
+ continue;
+ }
+
+ assert(err);
+
+ if(err != CRYPT_E_BAD_ENCODE)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error decoding certificate:\n" + IceUtilInternal::lastErrorToString());
+ }
+
+ //
+ // Try to load certificate & key as PEM files.
+ //
+ err = 0;
+ keyFile = keyFiles[i];
+ if(!checkPath(keyFile, defaultDir, false))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: key file not found:\n" + keyFile);
+ }
+
+ readFile(keyFile, buffer);
+
+ vector<BYTE> outBuffer;
+ outBuffer.resize(buffer.size());
+ DWORD outLength = static_cast<DWORD>(buffer.size());
+
+ //
+ // Convert the PEM encoded buffer to DER binary format.
+ //
+ if(!CryptStringToBinary(&buffer[0], static_cast<DWORD>(buffer.size()), CRYPT_STRING_BASE64HEADER,
+ &outBuffer[0], &outLength, 0, 0))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error decoding key:\n" + IceUtilInternal::lastErrorToString());
+ }
+
+ PCRYPT_PRIVATE_KEY_INFO keyInfo = 0;
+ BYTE* key = 0;
+ HCRYPTKEY hKey = 0;
+
+ try
+ {
+ DWORD decodedLength = 0;
+ if(!CryptDecodeObjectEx(X509_ASN_ENCODING, PKCS_PRIVATE_KEY_INFO, &outBuffer[0], outLength,
+ CRYPT_DECODE_ALLOC_FLAG, 0, &keyInfo, &decodedLength))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error decoding key:\n" + IceUtilInternal::lastErrorToString());
+ }
+
+ //
+ // Check that we are using a RSA Key
+ //
+ if(strcmp(keyInfo->Algorithm.pszObjId, szOID_RSA_RSA))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ string("IceSSL: error unknow key algorithm: `") + keyInfo->Algorithm.pszObjId + "'");
+ }
+
+ //
+ // Create a new RSA key set to store our key
+ //
+ const wstring keySetName = stringToWstring(IceUtil::generateUUID());
+ HCRYPTPROV cryptProv = 0;
+
+ DWORD contextFlags = (keySet == "MachineKeySet") ? CRYPT_MACHINE_KEYSET | CRYPT_NEWKEYSET :
+ CRYPT_NEWKEYSET;
+
+ if(!CryptAcquireContextW(&cryptProv, keySetName.c_str(), MS_DEF_PROV_W, PROV_RSA_FULL, contextFlags))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error acquiring cryptographic context:\n" + IceUtilInternal::lastErrorToString());
+ }
+
+ //
+ // Decode the private key BLOB
+ //
+ if(!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, PKCS_RSA_PRIVATE_KEY,
+ keyInfo->PrivateKey.pbData, keyInfo->PrivateKey.cbData,
+ CRYPT_DECODE_ALLOC_FLAG, 0, &key, &outLength))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error decoding key:\n" + IceUtilInternal::lastErrorToString());
+ }
+ LocalFree(keyInfo);
+ keyInfo = 0;
+
+ //
+ // Import the private key
+ //
+ if(!CryptImportKey(cryptProv, key, outLength, 0, 0, &hKey))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error importing key:\n" + IceUtilInternal::lastErrorToString());
+ }
+ LocalFree(key);
+ key = 0;
+
+ CryptDestroyKey(hKey);
+ hKey = 0;
+
+ //
+ // Create a new memory store to place the certificate
+ //
+ store = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
+ if(!store)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error creating certificate store:\n" + IceUtilInternal::lastErrorToString());
+ }
+
+ addCertificateToStore(certFile, store, &cert);
+
+ //
+ // Associate key & certificate
+ //
+ CRYPT_KEY_PROV_INFO keyProvInfo;
+ memset(&keyProvInfo, 0, sizeof(keyProvInfo));
+ keyProvInfo.pwszContainerName = const_cast<wchar_t*>(keySetName.c_str());
+ keyProvInfo.pwszProvName = const_cast<wchar_t*>(MS_DEF_PROV_W);
+ keyProvInfo.dwProvType = PROV_RSA_FULL;
+ keyProvInfo.dwKeySpec = AT_KEYEXCHANGE;
+
+ if(!CertSetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, 0, &keyProvInfo))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error seting certificate property:\n" + IceUtilInternal::lastErrorToString());
+ }
+
+ _certs.push_back(cert);
+ _stores.push_back(store);
+ }
+ catch(...)
+ {
+ if(keyInfo)
+ {
+ LocalFree(keyInfo);
+ }
+
+ if(key)
+ {
+ LocalFree(key);
+ }
+
+ if(hKey)
+ {
+ CryptDestroyKey(hKey);
+ }
+
+ if(cert)
+ {
+ CertFreeCertificateContext(cert);
+ }
+
+ if(store)
+ {
+ CertCloseStore(store, 0);
+ }
+ throw;
+ }
+ }
+ }
+ _initialized = true;
+}
+
+string
+SChannelEngine::getCipherName(ALG_ID cipher) const
+{
+ switch(cipher)
+ {
+ case CALG_RSA_KEYX:
+ return "RSA_KEYX";
+ case CALG_RSA_SIGN:
+ return "RSA_SIGN";
+ case CALG_DSS_SIGN:
+ return "DSS_SIGN";
+ case CALG_KEA_KEYX:
+ return "KEA_KEYX";
+ case CALG_DH_EPHEM:
+ return "DH_EPHEM";
+ case CALG_ECDH:
+ return "ECDH";
+ case CALG_ECDSA:
+ return "ECDSA";
+ case CALG_3DES:
+ return "3DES";
+ case CALG_AES_128:
+ return "AES_128";
+ case CALG_AES_256:
+ return "AES_256";
+ case CALG_DES:
+ return "DES";
+ case CALG_RC2:
+ return "RC2";
+ case CALG_RC4:
+ return "RC4";
+ default:
+ return "Unknown";
+ }
+}
+
+bool
+SChannelEngine::initialized() const
+{
+ IceUtil::Mutex::Lock lock(_mutex);
+ return _initialized;
+}
+
+CredHandle
+SChannelEngine::newCredentialsHandle(bool incoming)
+{
+ SCHANNEL_CRED cred;
+ memset(&cred, 0, sizeof(cred));
+ cred.dwVersion = SCHANNEL_CRED_VERSION;
+
+ if(!_certs.empty())
+ {
+ cred.cCreds = static_cast<DWORD>(_certs.size());
+ cred.paCred = &_certs[0];
+ }
+
+ cred.grbitEnabledProtocols = _protocols;
+
+ if(incoming)
+ {
+ cred.dwFlags = SCH_CRED_NO_SYSTEM_MAPPER | SCH_SEND_ROOT_CERT;
+ }
+ else
+ {
+ cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION | SCH_CRED_NO_SERVERNAME_CHECK | SCH_CRED_NO_DEFAULT_CREDS;
+ }
+
+ if(!_ciphers.empty())
+ {
+ cred.cSupportedAlgs = static_cast<DWORD>(_ciphers.size());
+ cred.palgSupportedAlgs = &_ciphers[0];
+ }
+
+ CredHandle credHandle;
+ memset(&credHandle, 0, sizeof(credHandle));
+
+ SECURITY_STATUS err =
+ AcquireCredentialsHandle(0, const_cast<char*>(UNISP_NAME), (incoming ? SECPKG_CRED_INBOUND : SECPKG_CRED_OUTBOUND), 0, &cred, 0,
+ 0, &credHandle, 0);
+
+ if(err != SEC_E_OK)
+ {
+ throw SecurityException(__FILE__, __LINE__,
+ "IceSSL: failed to acquire credentials handle:\n" + IceUtilInternal::lastErrorToString());
+ }
+ return credHandle;
+}
+
+HCERTCHAINENGINE
+SChannelEngine::chainEngine() const
+{
+ return _chainEngine;
+}
+
+void
+SChannelEngine::parseCiphers(const std::string& ciphers)
+{
+ vector<string> tokens;
+ IceUtilInternal::splitString(ciphers, " \t", tokens);
+ for(vector<string>::const_iterator i = tokens.begin(); i != tokens.end(); ++i)
+ {
+ ALG_ID id = algorithmId(*i);
+ if(id)
+ {
+ _ciphers.push_back(id);
+ }
+ }
+}
+
+void
+SChannelEngine::destroy()
+{
+ if(_chainEngine && _chainEngine != HCCE_CURRENT_USER && _chainEngine != HCCE_LOCAL_MACHINE)
+ {
+ CertFreeCertificateChainEngine(_chainEngine);
+ }
+
+ if(_rootStore)
+ {
+ CertCloseStore(_rootStore, 0);
+ }
+
+ for(vector<PCCERT_CONTEXT>::const_iterator i = _certs.begin(); i != _certs.end(); ++i)
+ {
+ PCCERT_CONTEXT cert = *i;
+
+ UniquePtr<CRYPT_KEY_PROV_INFO> keyProvInfo;
+ DWORD size = 0;
+
+ //
+ // Retrieve the certificate CERT_KEY_PROV_INFO_PROP_ID property, we use the CRYPT_KEY_PROV_INFO
+ // data to then remove the key set associated with the certificate.
+ //
+ if(CertGetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, 0, &size))
+ {
+ vector<char> buf(size);
+ if(CertGetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, &buf[0], &size))
+ {
+ CRYPT_KEY_PROV_INFO* keyProvInfo = reinterpret_cast<CRYPT_KEY_PROV_INFO*>(&buf[0]);
+ HCRYPTPROV cryptProv = 0;
+ if(CryptAcquireContextW(&cryptProv, keyProvInfo->pwszContainerName, keyProvInfo->pwszProvName,
+ keyProvInfo->dwProvType, 0))
+ {
+ CryptAcquireContextW(&cryptProv, keyProvInfo->pwszContainerName, keyProvInfo->pwszProvName,
+ keyProvInfo->dwProvType, CRYPT_DELETEKEYSET);
+ }
+ }
+ CertFreeCertificateContext(cert);
+ }
+ }
+
+ for(vector<HCERTSTORE>::const_iterator i = _stores.begin(); i != _stores.end(); ++i)
+ {
+ CertCloseStore(*i, 0);
+ }
+}
+#endif
diff --git a/cpp/src/IceSSL/SChannelTransceiverI.cpp b/cpp/src/IceSSL/SChannelTransceiverI.cpp
new file mode 100644
index 00000000000..ae36570991a
--- /dev/null
+++ b/cpp/src/IceSSL/SChannelTransceiverI.cpp
@@ -0,0 +1,1463 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <IceSSL/SChannelTransceiverI.h>
+
+#include <IceUtil/StringUtil.h>
+
+#include <IceSSL/ConnectionInfo.h>
+#include <IceSSL/Instance.h>
+#include <IceSSL/SSLEngine.h>
+#include <IceSSL/Util.h>
+#include <Ice/Communicator.h>
+#include <Ice/LoggerUtil.h>
+#include <Ice/Buffer.h>
+#include <Ice/LocalException.h>
+
+#ifdef ICE_USE_SCHANNEL
+
+using namespace std;
+using namespace Ice;
+using namespace IceSSL;
+
+namespace
+{
+
+string
+protocolName(DWORD protocol)
+{
+ switch(protocol)
+ {
+ case SP_PROT_SSL2_CLIENT:
+ case SP_PROT_SSL2_SERVER:
+ return "SSL 2.0";
+ case SP_PROT_SSL3_CLIENT:
+ case SP_PROT_SSL3_SERVER:
+ return "SSL 3.0";
+ case SP_PROT_TLS1_CLIENT:
+ case SP_PROT_TLS1_SERVER:
+ return "TLS 1.0";
+ case SP_PROT_TLS1_1_CLIENT:
+ case SP_PROT_TLS1_1_SERVER:
+ return "TLS 1.1";
+ case SP_PROT_TLS1_2_CLIENT:
+ case SP_PROT_TLS1_2_SERVER:
+ return "TLS 1.2";
+ default:
+ return "Unknown";
+ }
+}
+
+string
+trustStatusToString(DWORD status)
+{
+ if(status & CERT_TRUST_NO_ERROR)
+ {
+ return "CERT_TRUST_NO_ERROR";
+ }
+
+ if(status & CERT_TRUST_IS_NOT_TIME_VALID)
+ {
+ return "CERT_TRUST_IS_NOT_TIME_VALID";
+ }
+
+ if(status & CERT_TRUST_IS_REVOKED)
+ {
+ return "CERT_TRUST_IS_REVOKED";
+ }
+
+ if(status & CERT_TRUST_IS_NOT_SIGNATURE_VALID)
+ {
+ return "CERT_TRUST_IS_NOT_SIGNATURE_VALID";
+ }
+
+ if(status & CERT_TRUST_IS_NOT_VALID_FOR_USAGE)
+ {
+ return "CERT_TRUST_IS_NOT_VALID_FOR_USAGE";
+ }
+
+ if(status & CERT_TRUST_IS_UNTRUSTED_ROOT)
+ {
+ return "CERT_TRUST_IS_UNTRUSTED_ROOT";
+ }
+
+ if(status & CERT_TRUST_REVOCATION_STATUS_UNKNOWN)
+ {
+ return "CERT_TRUST_REVOCATION_STATUS_UNKNOWN";
+ }
+
+ if(status & CERT_TRUST_IS_CYCLIC)
+ {
+ return "CERT_TRUST_IS_CYCLIC";
+ }
+
+ if(status & CERT_TRUST_INVALID_EXTENSION)
+ {
+ return "CERT_TRUST_INVALID_EXTENSION";
+ }
+
+ if(status & CERT_TRUST_INVALID_POLICY_CONSTRAINTS)
+ {
+ return "CERT_TRUST_INVALID_POLICY_CONSTRAINTS";
+ }
+
+ if(status & CERT_TRUST_INVALID_BASIC_CONSTRAINTS)
+ {
+ return "CERT_TRUST_INVALID_BASIC_CONSTRAINTS";
+ }
+
+ if(status & CERT_TRUST_INVALID_NAME_CONSTRAINTS)
+ {
+ return "CERT_TRUST_INVALID_NAME_CONSTRAINTS";
+ }
+
+ if(status & CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT)
+ {
+ return "CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT";
+ }
+
+ if(status & CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT)
+ {
+ return "CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT";
+ }
+
+ if(status & CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT)
+ {
+ return "CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT";
+ }
+
+ if(status & CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT)
+ {
+ return "CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT";
+ }
+
+ if(status & CERT_TRUST_IS_OFFLINE_REVOCATION)
+ {
+ return "CERT_TRUST_IS_OFFLINE_REVOCATION";
+ }
+
+ if(status & CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY)
+ {
+ return "CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY";
+ }
+
+ if(status & CERT_TRUST_IS_EXPLICIT_DISTRUST)
+ {
+ return "CERT_TRUST_IS_EXPLICIT_DISTRUST";
+ }
+
+ if(status & CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT)
+ {
+ return "CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT";
+ }
+
+ //
+ // New in Windows 8
+ //
+ //if(status & CERT_TRUST_HAS_WEAK_SIGNATURE)
+ //{
+ // return "CERT_TRUST_HAS_WEAK_SIGNATURE";
+ //}
+
+ if(status & CERT_TRUST_IS_PARTIAL_CHAIN)
+ {
+ return "CERT_TRUST_IS_PARTIAL_CHAIN";
+ }
+
+ if(status & CERT_TRUST_CTL_IS_NOT_TIME_VALID)
+ {
+ return "CERT_TRUST_CTL_IS_NOT_TIME_VALID";
+ }
+
+ if(status & CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID)
+ {
+ return "CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID";
+ }
+
+ if(status & CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE)
+ {
+ return "CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE";
+ }
+
+ ostringstream os;
+ os << "UNKNOWN TRUST FAILURE: " << status;
+ return os.str();
+}
+
+SecBuffer*
+getSecBufferWithType(const SecBufferDesc& desc, ULONG bufferType)
+{
+ for(ULONG i = 0; i < desc.cBuffers; ++i)
+ {
+ if(desc.pBuffers[i].BufferType == bufferType)
+ {
+ return &desc.pBuffers[i];
+ }
+ }
+ return 0;
+}
+
+}
+
+IceInternal::NativeInfoPtr
+IceSSL::TransceiverI::getNativeInfo()
+{
+ return this;
+}
+
+#ifdef ICE_USE_IOCP
+IceInternal::AsyncInfo*
+IceSSL::TransceiverI::getAsyncInfo(IceInternal::SocketOperation status)
+{
+ switch(status)
+ {
+ case IceInternal::SocketOperationRead:
+ return &_read;
+ case IceInternal::SocketOperationWrite:
+ return &_write;
+ default:
+ assert(false);
+ return 0;
+ }
+}
+#endif
+
+IceInternal::SocketOperation
+IceSSL::TransceiverI::sslHandshake()
+{
+ DWORD flags = ASC_REQ_SEQUENCE_DETECT | ASC_REQ_REPLAY_DETECT | ASC_REQ_CONFIDENTIALITY | ASC_REQ_ALLOCATE_MEMORY |
+ ASC_REQ_STREAM;
+ if(_incoming)
+ {
+ flags |= ASC_REQ_EXTENDED_ERROR;
+ if(_engine->getVerifyPeer() > 0)
+ {
+ flags |= ASC_REQ_MUTUAL_AUTH;
+ }
+ }
+ else
+ {
+ flags |= ISC_REQ_USE_SUPPLIED_CREDS | ISC_REQ_MANUAL_CRED_VALIDATION | ISC_RET_EXTENDED_ERROR;
+ }
+
+ SECURITY_STATUS err = SEC_E_OK;
+ DWORD ctxFlags = 0;
+
+ while(true)
+ {
+ if(_state == StateConnected)
+ {
+ assert(!_incoming);
+ SecBuffer outBuffer = { 0, SECBUFFER_TOKEN, 0 };
+ SecBufferDesc outBufferDesc = { SECBUFFER_VERSION, 1, &outBuffer };
+
+ err = InitializeSecurityContext(&_credentials, 0, const_cast<char *>(_host.c_str()), flags, 0, 0, 0, 0,
+ &_ssl, &outBufferDesc, &ctxFlags, 0);
+ _sslInitialized = true;
+ if(err != SEC_E_OK && err != SEC_I_CONTINUE_NEEDED)
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: handshake failure:\n" +
+ IceUtilInternal::lastErrorToString());
+ }
+
+ //
+ // Copy the data to the write buffer
+ //
+ _writeBuffer.b.resize(outBuffer.cbBuffer);
+ _writeBuffer.i = _writeBuffer.b.begin();
+ memcpy(_writeBuffer.i, outBuffer.pvBuffer, outBuffer.cbBuffer);
+ FreeContextBuffer(outBuffer.pvBuffer);
+
+ _state = StateHandshakeWriteContinue;
+ }
+
+ if(_state == StateHandshakeReadContinue)
+ {
+ // If read buffer is empty, try to read some data.
+ if(_readBuffer.i == _readBuffer.b.begin() && !readRaw(_readBuffer))
+ {
+ return IceInternal::SocketOperationRead;
+ }
+
+ SecBuffer inBuffers[2] = {
+ { static_cast<DWORD>(_readBuffer.i - _readBuffer.b.begin()), SECBUFFER_TOKEN, _readBuffer.b.begin() },
+ { 0, SECBUFFER_EMPTY, 0 }
+ };
+ SecBufferDesc inBufferDesc = { SECBUFFER_VERSION, 2, inBuffers };
+
+ SecBuffer outBuffers[2] = {
+ { 0, SECBUFFER_TOKEN, 0 },
+ { 0, SECBUFFER_ALERT, 0 }
+ };
+ SecBufferDesc outBufferDesc = { SECBUFFER_VERSION, 2, outBuffers };
+
+ if(_incoming)
+ {
+ err = AcceptSecurityContext(&_credentials, (_sslInitialized ? &_ssl : 0), &inBufferDesc, flags, 0,
+ &_ssl, &outBufferDesc, &ctxFlags, 0);
+ _sslInitialized = true;
+ }
+ else
+ {
+ err = InitializeSecurityContext(&_credentials, &_ssl, const_cast<char*>(_host.c_str()), flags, 0, 0,
+ &inBufferDesc, 0, 0, &outBufferDesc, &ctxFlags, 0);
+ }
+
+ //
+ // If the message is incomplete we need to read more data.
+ //
+ if(err == SEC_E_INCOMPLETE_MESSAGE)
+ {
+ SecBuffer* missing = getSecBufferWithType(inBufferDesc, SECBUFFER_MISSING);
+ size_t pos = _readBuffer.i - _readBuffer.b.begin();
+ _readBuffer.b.resize(missing ? (pos + missing->cbBuffer) : (pos * 2));
+ _readBuffer.i = _readBuffer.b.begin() + pos;
+ return IceInternal::SocketOperationRead;
+ }
+ else if(err != SEC_I_CONTINUE_NEEDED && err != SEC_E_OK)
+ {
+ throw SecurityException(__FILE__, __LINE__, "SSL handshake failure:\n" +
+ IceUtilInternal::lastErrorToString());
+ }
+
+ //
+ // Copy out security tokens to the write buffer if any.
+ //
+ SecBuffer* token = getSecBufferWithType(outBufferDesc, SECBUFFER_TOKEN);
+ assert(token);
+ if(token->cbBuffer)
+ {
+ _writeBuffer.b.resize(static_cast<size_t>(token->cbBuffer));
+ _writeBuffer.i = _writeBuffer.b.begin();
+ memcpy(_writeBuffer.i, token->pvBuffer, token->cbBuffer);
+ FreeContextBuffer(token->pvBuffer);
+ }
+
+ //
+ // Check for remaining data in the input buffer.
+ //
+ SecBuffer* extra = getSecBufferWithType(inBufferDesc, SECBUFFER_EXTRA);
+ if(extra)
+ {
+ // Shift the extra data to the start of the input buffer
+ memmove(_readBuffer.b.begin(), _readBuffer.i - extra->cbBuffer, extra->cbBuffer);
+ _readBuffer.i = _readBuffer.b.begin() + extra->cbBuffer;
+ }
+ else
+ {
+ _readBuffer.i = _readBuffer.b.begin();
+ }
+
+ if(token->cbBuffer)
+ {
+ _state = StateHandshakeWriteContinue; // Continue writing if we have a token.
+ }
+ else if(err == SEC_E_OK)
+ {
+ break; // We're done.
+ }
+
+ // Otherwise continue either reading credentials
+ }
+
+ if(_state == StateHandshakeWriteContinue)
+ {
+ //
+ // Write any pending data.
+ //
+ if(!writeRaw(_writeBuffer))
+ {
+ return IceInternal::SocketOperationWrite;
+ }
+ if(err == SEC_E_OK)
+ {
+ break; // Token is written and we weren't told to continue, so we're done!
+ }
+ assert(err == SEC_I_CONTINUE_NEEDED);
+ _state = StateHandshakeReadContinue;
+ }
+ }
+
+ //
+ // Check if the requested capabilities are met
+ //
+ if(flags != ctxFlags)
+ {
+ if(_incoming)
+ {
+ if(!(ctxFlags & ASC_REQ_SEQUENCE_DETECT))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup sequence detect");
+ }
+
+ if(!(ctxFlags & ASC_REQ_REPLAY_DETECT))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup replay detect");
+ }
+
+ if(!(ctxFlags & ASC_REQ_CONFIDENTIALITY))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup confidentiality");
+ }
+
+ if(!(ctxFlags & ASC_REQ_EXTENDED_ERROR))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup extended error");
+ }
+
+ if(!(ctxFlags & ASC_REQ_ALLOCATE_MEMORY))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup memory allocation");
+ }
+
+ if(!(ctxFlags & ASC_REQ_STREAM))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup stream");
+ }
+ }
+ else
+ {
+ if(!(ctxFlags & ISC_REQ_SEQUENCE_DETECT))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup sequence detect");
+ }
+
+ if(!(ctxFlags & ISC_REQ_REPLAY_DETECT))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup replay detect");
+ }
+
+ if(!(ctxFlags & ISC_REQ_CONFIDENTIALITY))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup confidentiality");
+ }
+
+ if(!(ctxFlags & ISC_REQ_EXTENDED_ERROR))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup extended error");
+ }
+
+ if(!(ctxFlags & ISC_REQ_ALLOCATE_MEMORY))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup memory allocation");
+ }
+
+ if(!(ctxFlags & ISC_REQ_STREAM))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: SChannel failed to setup stream");
+ }
+ }
+ }
+
+ err = QueryContextAttributes(&_ssl, SECPKG_ATTR_STREAM_SIZES, &_sizes);
+ if(err != SEC_E_OK)
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: failure to query stream sizes attributes:\n" +
+ IceUtilInternal::lastErrorToString());
+ }
+
+ size_t pos = _readBuffer.i - _readBuffer.b.begin();
+ if(pos <= (_sizes.cbHeader + _sizes.cbMaximumMessage + _sizes.cbTrailer))
+ {
+ _readBuffer.b.resize(_sizes.cbHeader + _sizes.cbMaximumMessage + _sizes.cbTrailer);
+ _readBuffer.i = _readBuffer.b.begin() + pos;
+ }
+
+ _writeBuffer.b.reset();
+ _writeBuffer.i = _writeBuffer.b.begin();
+
+ return IceInternal::SocketOperationNone;
+}
+
+//
+// Try to decrypt a message and return the number of bytes decrypted, if the number of bytes
+// decrypted is less than the size requested it means that the application needs to read more
+// data before it can decrypt the complete message.
+//
+size_t
+IceSSL::TransceiverI::decryptMessage(IceInternal::Buffer& buffer)
+{
+ assert(_readBuffer.i != _readBuffer.b.begin() || !_readUnprocessed.b.empty());
+
+ //
+ // First check if there is data in the unprocessed buffer.
+ //
+ size_t length = std::min(static_cast<size_t>(buffer.b.end() - buffer.i), _readUnprocessed.b.size());
+ if(length > 0)
+ {
+ memcpy(buffer.i, _readUnprocessed.b.begin(), length);
+ memmove(_readUnprocessed.b.begin(), _readUnprocessed.b.begin() + length, _readUnprocessed.b.size() - length);
+ _readUnprocessed.b.resize(_readUnprocessed.b.size() - length);
+ }
+
+ while(true)
+ {
+ //
+ // If we have filled the buffer or if nothing left to read from
+ // the read buffer, we're done.
+ //
+ Byte* i = buffer.i + length;
+ if(i == buffer.b.end() || _readBuffer.i == _readBuffer.b.begin())
+ {
+ break;
+ }
+
+ //
+ // Try to decrypt the buffered data.
+ //
+ SecBuffer inBuffers[4] = {
+ { static_cast<DWORD>(_readBuffer.i - _readBuffer.b.begin()), SECBUFFER_DATA, _readBuffer.b.begin() },
+ { 0, SECBUFFER_EMPTY, 0 },
+ { 0, SECBUFFER_EMPTY, 0 },
+ { 0, SECBUFFER_EMPTY, 0 }
+ };
+ SecBufferDesc inBufferDesc = { SECBUFFER_VERSION, 4, inBuffers };
+
+ SECURITY_STATUS err = DecryptMessage(&_ssl, &inBufferDesc, 0, 0);
+ if(err == SEC_E_INCOMPLETE_MESSAGE)
+ {
+ //
+ // There isn't enough data to decrypt the message. The input
+ // buffer is resized to the SSL max message size after the SSL
+ // handshake completes so an incomplete message can only occur
+ // if the read buffer is not full.
+ //
+ assert(_readBuffer.i != _readBuffer.b.end());
+ return length;
+ }
+ else if(err == SEC_I_CONTEXT_EXPIRED || err == SEC_I_RENEGOTIATE)
+ {
+ //
+ // The message sender has finished using the connection and
+ // has initiated a shutdown.
+ //
+ throw ConnectionLostException(__FILE__, __LINE__, 0);
+ }
+ else if(err == SEC_E_MESSAGE_ALTERED || err == SEC_E_DECRYPT_FAILURE)
+ {
+ //
+ // Forcefully closing a connection can result in SSL_read
+ // reporting "decryption failed or bad record mac". We trap
+ // that error and treat it as the loss of a connection.
+ //
+ throw ConnectionLostException(__FILE__, __LINE__, 0);
+ }
+ else if(err != SEC_E_OK)
+ {
+ throw ProtocolException(__FILE__, __LINE__, "IceSSL: protocol error during read:\n" +
+ IceUtilInternal::lastErrorToString());
+ }
+
+ SecBuffer* dataBuffer = getSecBufferWithType(inBufferDesc, SECBUFFER_DATA);
+ assert(dataBuffer);
+ DWORD remaining = min(static_cast<DWORD>(buffer.b.end() - i), dataBuffer->cbBuffer);
+ length += remaining;
+ if(remaining)
+ {
+ memcpy(i, dataBuffer->pvBuffer, remaining);
+
+ //
+ // Copy remaining decrypted data to unprocessed buffer
+ //
+ if(dataBuffer->cbBuffer > remaining)
+ {
+ _readUnprocessed.b.resize(dataBuffer->cbBuffer - remaining);
+ memcpy(_readUnprocessed.b.begin(), reinterpret_cast<Byte*>(dataBuffer->pvBuffer) + remaining,
+ dataBuffer->cbBuffer - remaining);
+ }
+ }
+
+ //
+ // Move any remaining encrypted data to the begining of the input buffer
+ //
+ SecBuffer* extraBuffer = getSecBufferWithType(inBufferDesc, SECBUFFER_EXTRA);
+ if(extraBuffer && extraBuffer->cbBuffer > 0)
+ {
+ memmove(_readBuffer.b.begin(), _readBuffer.i - extraBuffer->cbBuffer, extraBuffer->cbBuffer);
+ _readBuffer.i = _readBuffer.b.begin() + extraBuffer->cbBuffer;
+ }
+ else
+ {
+ _readBuffer.i = _readBuffer.b.begin();
+ }
+ }
+ return length;
+}
+
+//
+// Encrypt a message and return the number of bytes that has been encrypted, if the
+// number of bytes is less than the message size, the function must be called again.
+//
+size_t
+IceSSL::TransceiverI::encryptMessage(IceInternal::Buffer& buffer)
+{
+ //
+ // Limit the message size to cbMaximumMessage which is the maximun size data that can be
+ // embeded in a SSL record.
+ //
+ DWORD length = std::min(static_cast<DWORD>(buffer.b.end() - buffer.i), _sizes.cbMaximumMessage);
+
+ //
+ // Resize the buffer to hold the encrypted data
+ //
+ _writeBuffer.b.resize(_sizes.cbHeader + length + _sizes.cbTrailer);
+ _writeBuffer.i = _writeBuffer.b.begin();
+
+ SecBuffer buffers[4] = {
+ { _sizes.cbHeader, SECBUFFER_STREAM_HEADER, _writeBuffer.i },
+ { length, SECBUFFER_DATA, _writeBuffer.i + _sizes.cbHeader },
+ { _sizes.cbTrailer, SECBUFFER_STREAM_TRAILER, _writeBuffer.i + _sizes.cbHeader + length },
+ { 0, SECBUFFER_EMPTY, 0 }
+ };
+ SecBufferDesc buffersDesc = { SECBUFFER_VERSION, 4, buffers };
+
+ // Data is encrypted in place, copy the data to be encrypted to the data buffer.
+ memcpy(buffers[1].pvBuffer, buffer.i, length);
+
+ SECURITY_STATUS err = EncryptMessage(&_ssl, 0, &buffersDesc, 0);
+ if(err != SEC_E_OK)
+ {
+ throw ProtocolException(__FILE__, __LINE__, "IceSSL: protocol error encrypting message:\n" +
+ IceUtilInternal::lastErrorToString());
+ }
+
+ // EncryptMessage resizes the buffers, so resize the write buffer as well to reflect this.
+ _writeBuffer.b.resize(buffers[0].cbBuffer + buffers[1].cbBuffer + buffers[2].cbBuffer);
+ _writeBuffer.i = _writeBuffer.b.begin();
+
+ return length;
+}
+
+IceInternal::SocketOperation
+IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::Buffer& writeBuffer, bool& hasMoreData)
+{
+ try
+ {
+ if(_state == StateNeedConnect)
+ {
+ _state = StateConnectPending;
+ return IceInternal::SocketOperationConnect;
+ }
+ else if(_state <= StateConnectPending)
+ {
+ IceInternal::doFinishConnectAsync(_fd, _write);
+
+ _desc = IceInternal::fdToString(_fd, _proxy, _addr, true);
+
+ if(_proxy)
+ {
+ //
+ // Prepare the read & write buffers in advance.
+ //
+ _proxy->beginWriteConnectRequest(_addr, writeBuffer);
+ _proxy->beginReadConnectRequestResponse(readBuffer);
+
+ //
+ // Return SocketOperationWrite to indicate we need to start a write.
+ //
+ _state = StateProxyConnectRequest; // Send proxy connect request
+ return IceInternal::SocketOperationWrite;
+ }
+
+ _state = StateConnected;
+ }
+ else if(_state == StateProxyConnectRequest)
+ {
+ //
+ // Write completed.
+ //
+ _proxy->endWriteConnectRequest(writeBuffer);
+ _state = StateProxyConnectRequestPending; // Wait for proxy response
+ return IceInternal::SocketOperationRead;
+ }
+ else if(_state == StateProxyConnectRequestPending)
+ {
+ //
+ // Read completed.
+ //
+ _proxy->endReadConnectRequestResponse(readBuffer);
+ _state = StateConnected;
+ }
+
+ assert(_state >= StateConnected && _state <= StateHandshakeWriteContinue);
+
+ if(!_credentialsInitialized)
+ {
+ _readBuffer.b.resize(2048);
+ _readBuffer.i = _readBuffer.b.begin();
+
+ _credentials = _engine->newCredentialsHandle(_incoming);
+ _credentialsInitialized = true;
+ }
+
+ IceInternal::SocketOperation op = sslHandshake();
+ if(op != IceInternal::SocketOperationNone)
+ {
+ return op;
+ }
+
+ if(!_incoming || _engine->getVerifyPeer() > 0)
+ {
+ //
+ // Build the peer certificate chain and verify it.
+ //
+ PCCERT_CONTEXT cert = 0;
+ SECURITY_STATUS err = QueryContextAttributes(&_ssl, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &cert);
+ if(err && err != SEC_E_NO_CREDENTIALS)
+ {
+ throw ProtocolException(__FILE__, __LINE__, "IceSSL: certificate verification failure:" +
+ IceUtilInternal::lastErrorToString());
+ }
+
+ if(!cert && (!_incoming || _engine->getVerifyPeer() == 2))
+ {
+ // Clients require server certificate if VerifyPeer>0
+ // and servers require client certificate if
+ // VerifyPeer=2
+ throw ProtocolException(__FILE__, __LINE__, "IceSSL: certificate required:" +
+ IceUtilInternal::lastErrorToString());
+ }
+ else if(cert) // Verify the remote certificate
+ {
+ try
+ {
+ CERT_CHAIN_PARA chainP;
+ memset(&chainP, 0, sizeof(chainP));
+ chainP.cbSize = sizeof(chainP);
+
+ PCCERT_CHAIN_CONTEXT certChain;
+ if(!CertGetCertificateChain(_engine->chainEngine(), cert, 0, 0, &chainP,
+ CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY, 0, &certChain))
+ {
+ CertFreeCertificateContext(cert);
+ throw IceUtilInternal::lastErrorToString();
+ }
+
+ CERT_SIMPLE_CHAIN* simpleChain = certChain->rgpChain[0];
+
+ string trustError;
+ if(simpleChain->TrustStatus.dwErrorStatus != CERT_TRUST_NO_ERROR)
+ {
+ trustError = trustStatusToString(certChain->TrustStatus.dwErrorStatus);
+ }
+
+ CertFreeCertificateChain(certChain);
+ CertFreeCertificateContext(cert);
+ if(!trustError.empty())
+ {
+ throw trustError;
+ }
+ }
+ catch(const string& reason)
+ {
+ if(_engine->getVerifyPeer() == 0)
+ {
+ if(_instance->traceLevel() >= 1)
+ {
+ _instance->logger()->trace(_instance->traceCategory(),
+ "IceSSL: ignoring certificate verification failure\n" + reason);
+ }
+ }
+ else
+ {
+ ostringstream os;
+ os << "IceSSL: certificate verification failure\n" << reason;
+ string msg = os.str();
+ if(_instance->traceLevel() >= 1)
+ {
+ _instance->logger()->trace(_instance->traceCategory(), msg);
+ }
+ throw ProtocolException(__FILE__, __LINE__, msg);
+ }
+ }
+ }
+ }
+ _engine->verifyPeer(_fd, _host, getNativeConnectionInfo());
+ _state = StateHandshakeComplete;
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ if(_instance->traceLevel() >= 2)
+ {
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << "failed to establish " << _instance->protocol() << " connection\n";
+ if(_incoming)
+ {
+ out << IceInternal::fdToString(_fd) << "\n" << ex;
+ }
+ else
+ {
+ out << IceInternal::fdToString(_fd, _proxy, _addr, false) << "\n" << ex;
+ }
+ }
+ throw;
+ }
+
+ if(_instance->traceLevel() >= 1)
+ {
+ Trace out(_instance->logger(), _instance->traceCategory());
+ if(_incoming)
+ {
+ out << "accepted " << _instance->protocol() << " connection\n" << _desc;
+ }
+ else
+ {
+ out << _instance->protocol() << " connection established\n" << _desc;
+ }
+ }
+
+ if(_instance->engine()->securityTraceLevel() >= 1)
+ {
+ string sslCipherName;
+ string sslKeyExchangeAlgorithm;
+ string sslProtocolName;
+ SecPkgContext_ConnectionInfo info;
+ if(QueryContextAttributes(&_ssl, SECPKG_ATTR_CONNECTION_INFO, &info) == SEC_E_OK)
+ {
+ sslCipherName = _engine->getCipherName(info.aiCipher);
+ sslKeyExchangeAlgorithm = _engine->getCipherName(info.aiExch);
+ sslProtocolName = protocolName(info.dwProtocol);
+ }
+
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << "SSL summary for " << (_incoming ? "incoming" : "outgoing") << " connection\n";
+
+ if(sslCipherName.empty())
+ {
+ out << "unknown cipher\n";
+ }
+ else
+ {
+ out << "cipher = " << sslCipherName
+ << "\nkey exchange = " << sslKeyExchangeAlgorithm
+ << "\nprotocol = " << sslProtocolName << "\n";
+ }
+ out << IceInternal::fdToString(_fd);
+ }
+ hasMoreData = !_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin();
+ return IceInternal::SocketOperationNone;
+}
+
+IceInternal::SocketOperation
+IceSSL::TransceiverI::closing(bool initiator, const Ice::LocalException&)
+{
+ // If we are initiating the connection closure, wait for the peer
+ // to close the TCP/IP connection. Otherwise, close immediately.
+ return initiator ? IceInternal::SocketOperationRead : IceInternal::SocketOperationNone;
+}
+
+void
+IceSSL::TransceiverI::close()
+{
+ if(_state == StateHandshakeComplete && _instance->traceLevel() >= 1)
+ {
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << "closing " << _instance->protocol() << " connection\n" << toString();
+ }
+ if(_sslInitialized)
+ {
+ DeleteSecurityContext(&_ssl);
+ }
+
+ if(_credentialsInitialized)
+ {
+ FreeCredentialsHandle(&_credentials);
+ }
+
+ assert(_fd != INVALID_SOCKET);
+ try
+ {
+ IceInternal::closeSocket(_fd);
+ _fd = INVALID_SOCKET;
+ }
+ catch(const SocketException&)
+ {
+ _fd = INVALID_SOCKET;
+ throw;
+ }
+}
+
+IceInternal::SocketOperation
+IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
+{
+ if(buf.i == buf.b.end())
+ {
+ return IceInternal::SocketOperationNone;
+ }
+ assert(_state == StateHandshakeComplete);
+
+ while(buf.i != buf.b.end())
+ {
+ if(_bufferedW == 0)
+ {
+ assert(_writeBuffer.i == _writeBuffer.b.end());
+ _bufferedW = encryptMessage(buf);
+ }
+
+ if(!writeRaw(_writeBuffer))
+ {
+ return IceInternal::SocketOperationWrite;
+ }
+
+ assert(_writeBuffer.i == _writeBuffer.b.end()); // Finished writing the encrypted data
+
+ if(_instance->traceLevel() >= 3)
+ {
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << "sent " << _bufferedW << " of " << (buf.b.end() - buf.i) << " bytes via " << _instance->protocol()
+ << '\n' << toString();
+ }
+
+ buf.i += _bufferedW;
+ _bufferedW = 0;
+ }
+ return IceInternal::SocketOperationNone;
+}
+
+IceInternal::SocketOperation
+IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool& hasMoreData)
+{
+ if(buf.i == buf.b.end())
+ {
+ return IceInternal::SocketOperationNone;
+ }
+ assert(_state == StateHandshakeComplete);
+
+ hasMoreData = false;
+ while(buf.i != buf.b.end())
+ {
+ if(_readUnprocessed.b.empty() && _readBuffer.i == _readBuffer.b.begin() && !readRaw(_readBuffer))
+ {
+ return IceInternal::SocketOperationRead;
+ }
+
+ size_t decrypted = decryptMessage(buf);
+ if(decrypted == 0)
+ {
+ if(!readRaw(_readBuffer))
+ {
+ return IceInternal::SocketOperationRead;
+ }
+ continue;
+ }
+
+ if(_instance->traceLevel() >= 3)
+ {
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << "received " << decrypted << " of " << buf.b.end() - buf.i << " bytes via " << _instance->protocol()
+ << '\n' << toString();
+ }
+ buf.i += decrypted;
+ }
+ hasMoreData = !_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin();
+ return IceInternal::SocketOperationNone;
+}
+
+#ifdef ICE_USE_IOCP
+
+bool
+IceSSL::TransceiverI::startWrite(IceInternal::Buffer& buffer)
+{
+ if(_state == StateConnectPending)
+ {
+ IceInternal::Address addr = _proxy ? _proxy->getAddress() : _addr;
+ doConnectAsync(_fd, addr, _write);
+ return false;
+ }
+
+ IceInternal::Buffer& buf = _state == StateProxyConnectRequest ? buffer : _writeBuffer;
+
+ if(_state == StateHandshakeComplete && _bufferedW == 0)
+ {
+ assert(_writeBuffer.i == _writeBuffer.b.end());
+ _bufferedW = encryptMessage(buf);
+ }
+
+ assert(buf.i != buf.b.end());
+ int packetSize = static_cast<int>(buf.b.end() - buf.i);
+ if(_maxSendPacketSize > 0 && packetSize > _maxSendPacketSize)
+ {
+ packetSize = _maxSendPacketSize;
+ }
+ assert(packetSize > 0);
+ _write.buf.len = static_cast<DWORD>(packetSize);
+ _write.buf.buf = reinterpret_cast<char*>(buf.i);
+ int err = WSASend(_fd, &_write.buf, 1, &_write.count, 0, &_write, NULL);
+ if(err == SOCKET_ERROR)
+ {
+ if(!IceInternal::wouldBlock())
+ {
+ if(IceInternal::connectionLost())
+ {
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ else
+ {
+ SocketException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ }
+ }
+ return packetSize == static_cast<int>(buf.b.end() - buf.i);
+}
+
+void
+IceSSL::TransceiverI::finishWrite(IceInternal::Buffer& buf)
+{
+ if(_state < StateConnected && _state != StateProxyConnectRequest)
+ {
+ return;
+ }
+
+ if(static_cast<int>(_write.count) == SOCKET_ERROR)
+ {
+ WSASetLastError(_write.error);
+ if(IceInternal::connectionLost())
+ {
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ else
+ {
+ SocketException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ }
+
+ if(_state == StateProxyConnectRequest)
+ {
+ buf.i += _write.count;
+ }
+ else
+ {
+ _writeBuffer.i += _write.count;
+ if(_writeBuffer.i == _writeBuffer.b.end())
+ {
+ if(_instance->traceLevel() >= 3)
+ {
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << "sent " << _bufferedW << " of " << (buf.b.end() - buf.i) << " bytes via "
+ << _instance->protocol() << '\n' << toString();
+ }
+ buf.i += _bufferedW;
+ _bufferedW = 0;
+ }
+ }
+}
+
+void
+IceSSL::TransceiverI::startRead(IceInternal::Buffer& buffer)
+{
+ IceInternal::Buffer& buf = _state == StateProxyConnectRequest ? buffer : _readBuffer;
+
+ int packetSize = static_cast<int>(buf.b.end() - buf.i);
+ if(_maxReceivePacketSize > 0 && packetSize > _maxReceivePacketSize)
+ {
+ packetSize = _maxReceivePacketSize;
+ }
+ assert(!buf.b.empty() && buf.i != buf.b.end());
+
+ _read.buf.len = static_cast<DWORD>(packetSize);
+ _read.buf.buf = reinterpret_cast<char*>(buf.i);
+
+ int err = WSARecv(_fd, &_read.buf, 1, &_read.count, &_read.flags, &_read, NULL);
+ if(err == SOCKET_ERROR)
+ {
+ if(!IceInternal::wouldBlock())
+ {
+ if(IceInternal::connectionLost())
+ {
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ else
+ {
+ SocketException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ }
+ }
+}
+
+void
+IceSSL::TransceiverI::finishRead(IceInternal::Buffer& buf, bool& hasMoreData)
+{
+ if(static_cast<int>(_read.count) == SOCKET_ERROR)
+ {
+ WSASetLastError(_read.error);
+ if(IceInternal::connectionLost())
+ {
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ else
+ {
+ SocketException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ }
+ else if(_read.count == 0)
+ {
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = 0;
+ throw ex;
+ }
+
+ if(_state == StateProxyConnectRequest)
+ {
+ buf.i += _read.count;
+ }
+ else
+ {
+ _readBuffer.i += _read.count;
+ if(_state == StateHandshakeComplete)
+ {
+ size_t decrypted = decryptMessage(buf);
+ if(decrypted > 0)
+ {
+ if(_instance->traceLevel() >= 3)
+ {
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << "received " << decrypted << " of " << buf.b.end() - buf.i << " bytes via "
+ << _instance->protocol() << '\n' << toString();
+ }
+ buf.i += decrypted;
+ hasMoreData = !_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin();
+ }
+ else
+ {
+ hasMoreData = false;
+ }
+ }
+ }
+}
+#endif
+
+string
+IceSSL::TransceiverI::protocol() const
+{
+ return _instance->protocol();
+}
+
+string
+IceSSL::TransceiverI::toString() const
+{
+ return _desc;
+}
+
+Ice::ConnectionInfoPtr
+IceSSL::TransceiverI::getInfo() const
+{
+ return getNativeConnectionInfo();
+}
+
+void
+IceSSL::TransceiverI::checkSendSize(const IceInternal::Buffer& buf, size_t messageSizeMax)
+{
+ if(buf.b.size() > messageSizeMax)
+ {
+ IceInternal::Ex::throwMemoryLimitException(__FILE__, __LINE__, buf.b.size(), messageSizeMax);
+ }
+}
+
+IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const IceInternal::NetworkProxyPtr& proxy,
+ const string& host, const IceInternal::Address& addr) :
+ IceInternal::NativeInfo(fd),
+ _instance(instance),
+ _engine(SChannelEnginePtr::dynamicCast(instance->engine())),
+ _proxy(proxy),
+ _host(host),
+ _addr(addr),
+ _incoming(false),
+ _state(StateNeedConnect),
+ _writeBuffer(0),
+ _bufferedW(0),
+ _readBuffer(0),
+ _readUnprocessed(0),
+ _sslInitialized(false),
+ _credentialsInitialized(false)
+#ifdef ICE_USE_IOCP
+ , _read(IceInternal::SocketOperationRead),
+ _write(IceInternal::SocketOperationWrite)
+#endif
+{
+ IceInternal::setBlock(fd, false);
+ IceInternal::setTcpBufSize(fd, _instance->properties(), _instance->logger());
+
+ //
+ // On Windows, limiting the buffer size is important to prevent
+ // poor throughput performances when transfering large amount of
+ // data. See Microsoft KB article KB823764.
+ //
+ _maxSendPacketSize = IceInternal::getSendBufferSize(_fd) / 2;
+ if(_maxSendPacketSize < 512)
+ {
+ _maxSendPacketSize = 0;
+ }
+
+ _maxReceivePacketSize = IceInternal::getRecvBufferSize(_fd);
+ if(_maxReceivePacketSize < 512)
+ {
+ _maxReceivePacketSize = 0;
+ }
+
+#ifndef ICE_USE_IOCP
+ IceInternal::Address connectAddr = proxy ? proxy->getAddress() : addr;
+ if(IceInternal::doConnect(_fd, connectAddr))
+ {
+ _state = StateConnected;
+ _desc = IceInternal::fdToString(_fd, _proxy, _addr, true);
+ if(_instance->traceLevel() >= 1)
+ {
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << _instance->protocol() << " connection established\n" << _desc;
+ }
+ }
+ else
+ {
+ _desc = IceInternal::fdToString(_fd, _proxy, _addr, true);
+ }
+#endif
+}
+
+IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const string& adapterName) :
+ IceInternal::NativeInfo(fd),
+ _instance(instance),
+ _engine(SChannelEnginePtr::dynamicCast(instance->engine())),
+ _addr(IceInternal::Address()),
+ _adapterName(adapterName),
+ _incoming(true),
+ _state(StateHandshakeReadContinue),
+ _desc(IceInternal::fdToString(fd)),
+ _writeBuffer(0),
+ _bufferedW(0),
+ _readBuffer(0),
+ _readUnprocessed(0),
+ _sslInitialized(false),
+ _credentialsInitialized(false)
+#ifdef ICE_USE_IOCP
+ , _read(IceInternal::SocketOperationRead),
+ _write(IceInternal::SocketOperationWrite)
+#endif
+{
+ IceInternal::setBlock(fd, false);
+ IceInternal::setTcpBufSize(fd, _instance->properties(), _instance->logger());
+
+ //
+ // On Windows, limiting the buffer size is important to prevent
+ // poor throughput performances when transfering large amount of
+ // data. See Microsoft KB article KB823764.
+ //
+ _maxSendPacketSize = IceInternal::getSendBufferSize(_fd) / 2;
+ if(_maxSendPacketSize < 512)
+ {
+ _maxSendPacketSize = 0;
+ }
+
+ _maxReceivePacketSize = IceInternal::getRecvBufferSize(_fd);
+ if(_maxReceivePacketSize < 512)
+ {
+ _maxReceivePacketSize = 0;
+ }
+}
+
+IceSSL::TransceiverI::~TransceiverI()
+{
+ assert(_fd == INVALID_SOCKET);
+}
+
+NativeConnectionInfoPtr
+IceSSL::TransceiverI::getNativeConnectionInfo() const
+{
+ NativeConnectionInfoPtr info = new NativeConnectionInfo();
+ IceInternal::fdToAddressAndPort(_fd, info->localAddress, info->localPort, info->remoteAddress, info->remotePort);
+
+ if(_sslInitialized)
+ {
+ CtxtHandle* ssl = const_cast<CtxtHandle*>(&_ssl);
+ PCCERT_CONTEXT cert = 0;
+ PCCERT_CHAIN_CONTEXT certChain = 0;
+ SECURITY_STATUS err = QueryContextAttributes(ssl, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &cert);
+ if(err == SEC_E_OK)
+ {
+ CERT_CHAIN_PARA chainP;
+ memset(&chainP, 0, sizeof(chainP));
+ chainP.cbSize = sizeof(chainP);
+
+ if(CertGetCertificateChain(_engine->chainEngine(), cert, 0, 0, &chainP,
+ CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY, 0, &certChain))
+ {
+ CERT_SIMPLE_CHAIN* simpleChain = certChain->rgpChain[0];
+ for(DWORD i = 0; i < simpleChain->cElement; ++i)
+ {
+ PCCERT_CONTEXT c = simpleChain->rgpElement[i]->pCertContext;
+ PCERT_SIGNED_CONTENT_INFO cc;
+
+ DWORD length = 0;
+ if(!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, X509_CERT, c->pbCertEncoded,
+ c->cbCertEncoded, CRYPT_DECODE_ALLOC_FLAG, 0, &cc, &length))
+ {
+ CertFreeCertificateChain(certChain);
+ CertFreeCertificateContext(cert);
+ throw SecurityException(__FILE__, __LINE__,
+ "IceSSL: error decoding peer certificate chain:\n" +
+ IceUtilInternal::lastErrorToString());
+ }
+
+ CertificatePtr certificate = new Certificate(cc);
+ info->nativeCerts.push_back(certificate);
+ info->certs.push_back(certificate->encode());
+ }
+ CertFreeCertificateChain(certChain);
+ }
+ }
+ CertFreeCertificateContext(cert);
+
+ SecPkgContext_ConnectionInfo connInfo;
+ if(QueryContextAttributes(ssl, SECPKG_ATTR_CONNECTION_INFO, &connInfo) == SEC_E_OK)
+ {
+ info->cipher = _engine->getCipherName(connInfo.aiCipher);
+ }
+ }
+
+ info->adapterName = _adapterName;
+ info->incoming = _incoming;
+ return info;
+}
+
+bool
+IceSSL::TransceiverI::writeRaw(IceInternal::Buffer& buf)
+{
+ int packetSize = static_cast<int>(buf.b.end() - buf.i);
+#ifdef ICE_USE_IOCP
+ //
+ // Limit packet size to avoid performance problems on WIN32
+ //
+ if(_maxSendPacketSize > 0 && packetSize > _maxSendPacketSize)
+ {
+ packetSize = _maxSendPacketSize;
+ }
+#endif
+
+ while(buf.i != buf.b.end())
+ {
+ assert(_fd != INVALID_SOCKET);
+
+ int ret = ::send(_fd, reinterpret_cast<const char*>(buf.i), packetSize, 0);
+ if(ret == 0)
+ {
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = 0;
+ throw ex;
+ }
+
+ if(ret == SOCKET_ERROR)
+ {
+ if(IceInternal::interrupted())
+ {
+ continue;
+ }
+
+ if(IceInternal::noBuffers() && packetSize > 1024)
+ {
+ packetSize /= 2;
+ continue;
+ }
+
+ if(IceInternal::wouldBlock())
+ {
+ return false;
+ }
+
+ if(IceInternal::connectionLost())
+ {
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ else
+ {
+ SocketException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ }
+ buf.i += ret;
+ if(packetSize > static_cast<int>(buf.b.end() - buf.i))
+ {
+ packetSize = static_cast<int>(buf.b.end() - buf.i);
+ }
+ }
+ return true;
+}
+
+bool
+IceSSL::TransceiverI::readRaw(IceInternal::Buffer& buf)
+{
+ assert(buf.i != buf.b.end());
+ int packetSize = static_cast<int>(buf.b.end() - buf.i);
+ Byte* i = buf.i;
+ while(buf.i != buf.b.end())
+ {
+ assert(_fd != INVALID_SOCKET);
+ ssize_t ret = ::recv(_fd, reinterpret_cast<char*>(buf.i), packetSize, 0);
+
+ if(ret == 0)
+ {
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = 0;
+ throw ex;
+ }
+
+ if(ret == SOCKET_ERROR)
+ {
+ if(IceInternal::interrupted())
+ {
+ continue;
+ }
+
+ if(IceInternal::noBuffers() && packetSize > 1024)
+ {
+ packetSize /= 2;
+ continue;
+ }
+
+ if(IceInternal::wouldBlock())
+ {
+ return buf.i != i;
+ }
+
+ if(IceInternal::connectionLost())
+ {
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ else
+ {
+ SocketException ex(__FILE__, __LINE__);
+ ex.error = IceInternal::getSocketErrno();
+ throw ex;
+ }
+ }
+ buf.i += ret;
+ packetSize = static_cast<int>(buf.b.end() - buf.i);
+ }
+ return buf.i != i;
+}
+#endif
diff --git a/cpp/src/IceSSL/SChannelTransceiverI.h b/cpp/src/IceSSL/SChannelTransceiverI.h
new file mode 100644
index 00000000000..7bf2fcb2137
--- /dev/null
+++ b/cpp/src/IceSSL/SChannelTransceiverI.h
@@ -0,0 +1,145 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef ICE_SSL_SCHANNELTRANSCEIVER_I_H
+#define ICE_SSL_SCHANNELTRANSCEIVER_I_H
+
+#include <IceSSL/Config.h>
+#include <IceSSL/InstanceF.h>
+#include <IceSSL/Plugin.h>
+#include <IceSSL/SSLEngineF.h>
+
+#include <Ice/Transceiver.h>
+#include <Ice/Network.h>
+#include <Ice/Buffer.h>
+
+#ifdef ICE_USE_SCHANNEL
+
+#ifdef SECURITY_WIN32
+# undef SECURITY_WIN32
+#endif
+
+#ifdef SECURITY_KERNEL
+# undef SECURITY_KERNEL
+#endif
+
+#define SECURITY_WIN32 1
+#include <security.h>
+#include <sspi.h>
+#include <schannel.h>
+#undef SECURITY_WIN32
+
+namespace IceSSL
+{
+
+class ConnectorI;
+class AcceptorI;
+
+class TransceiverI : public IceInternal::Transceiver, public IceInternal::NativeInfo
+{
+ enum State
+ {
+ StateNeedConnect,
+ StateConnectPending,
+ StateProxyConnectRequest,
+ StateProxyConnectRequestPending,
+ StateConnected,
+ StateHandshakeReadContinue,
+ StateHandshakeWriteContinue,
+ StateHandshakeComplete
+ };
+
+public:
+
+ virtual IceInternal::NativeInfoPtr getNativeInfo();
+ virtual IceInternal::AsyncInfo* getAsyncInfo(IceInternal::SocketOperation);
+
+ virtual IceInternal::SocketOperation initialize(IceInternal::Buffer&, IceInternal::Buffer&, bool&);
+ virtual IceInternal::SocketOperation closing(bool, const Ice::LocalException&);
+ virtual void close();
+ virtual IceInternal::SocketOperation write(IceInternal::Buffer&);
+ virtual IceInternal::SocketOperation read(IceInternal::Buffer&, bool&);
+ virtual bool startWrite(IceInternal::Buffer&);
+ virtual void finishWrite(IceInternal::Buffer&);
+ virtual void startRead(IceInternal::Buffer&);
+ virtual void finishRead(IceInternal::Buffer&, bool&);
+ virtual std::string protocol() const;
+ virtual std::string toString() const;
+ virtual Ice::ConnectionInfoPtr getInfo() const;
+ virtual void checkSendSize(const IceInternal::Buffer&, size_t);
+
+private:
+
+ TransceiverI(const InstancePtr&, SOCKET, const IceInternal::NetworkProxyPtr&, const std::string&,
+ const IceInternal::Address&);
+ TransceiverI(const InstancePtr&, SOCKET, const std::string&);
+ virtual ~TransceiverI();
+
+ virtual NativeConnectionInfoPtr getNativeConnectionInfo() const;
+
+ IceInternal::SocketOperation sslHandshake();
+
+ size_t decryptMessage(IceInternal::Buffer&);
+ size_t encryptMessage(IceInternal::Buffer&);
+
+ bool writeRaw(IceInternal::Buffer&);
+ bool readRaw(IceInternal::Buffer&);
+
+ friend class ConnectorI;
+ friend class AcceptorI;
+
+ const InstancePtr _instance;
+ const SChannelEnginePtr _engine;
+
+ const IceInternal::NetworkProxyPtr _proxy;
+ const std::string _host;
+ const IceInternal::Address _addr;
+
+ const std::string _adapterName;
+ const bool _incoming;
+
+ State _state;
+ std::string _desc;
+
+ //
+ // Buffered encrypted data that has not been written.
+ //
+ IceInternal::Buffer _writeBuffer;
+ size_t _bufferedW;
+
+ //
+ // Buffered data that has not been decrypted.
+ //
+ IceInternal::Buffer _readBuffer;
+
+ //
+ // Buffered data that was decrypted but not yet processed.
+ //
+ IceInternal::Buffer _readUnprocessed;
+
+ CtxtHandle _ssl;
+ bool _sslInitialized;
+ CredHandle _credentials;
+ bool _credentialsInitialized;
+
+#ifdef ICE_USE_IOCP
+ IceInternal::AsyncInfo _read;
+ IceInternal::AsyncInfo _write;
+ int _maxSendPacketSize;
+ int _maxReceivePacketSize;
+#endif
+ SecPkgContext_StreamSizes _sizes;
+};
+typedef IceUtil::Handle<TransceiverI> TransceiverIPtr;
+
+}
+
+#endif
+
+#endif
diff --git a/cpp/src/IceSSL/SSLEngine.cpp b/cpp/src/IceSSL/SSLEngine.cpp
index adbfb439bc0..cd5c77e4597 100644
--- a/cpp/src/IceSSL/SSLEngine.cpp
+++ b/cpp/src/IceSSL/SSLEngine.cpp
@@ -148,11 +148,11 @@ IceSSL::SSLEngine::verifyPeer(SOCKET fd, const string& address, const NativeConn
vector<string> dnsNames;
for(vector<pair<int, string> >::const_iterator p = subjectAltNames.begin(); p != subjectAltNames.end(); ++p)
{
- if(p->first == 7)
+ if(p->first == AltNAmeIP)
{
ipAddresses.push_back(IceUtilInternal::toLower(p->second));
}
- else if(p->first == 2)
+ else if(p->first == AltNameDNS)
{
dnsNames.push_back(IceUtilInternal::toLower(p->second));
}
@@ -237,7 +237,7 @@ IceSSL::SSLEngine::verifyPeer(SOCKET fd, const string& address, const NativeConn
string msg = ostr.str();
if(_securityTraceLevel >= 1)
{
- Trace out(getLogger(), _securityTraceCategory);
+ Trace out(_logger, _securityTraceCategory);
out << msg;
}
if(_checkCertName)
@@ -258,7 +258,7 @@ IceSSL::SSLEngine::verifyPeer(SOCKET fd, const string& address, const NativeConn
string msg = ostr.str();
if(_securityTraceLevel >= 1)
{
- getLogger()->trace(_securityTraceCategory, msg + "\n" + IceInternal::fdToString(fd));
+ _logger->trace(_securityTraceCategory, msg + "\n" + IceInternal::fdToString(fd));
}
SecurityException ex(__FILE__, __LINE__);
ex.reason = msg;
@@ -270,7 +270,7 @@ IceSSL::SSLEngine::verifyPeer(SOCKET fd, const string& address, const NativeConn
string msg = string(info->incoming ? "incoming" : "outgoing") + " connection rejected by trust manager";
if(_securityTraceLevel >= 1)
{
- getLogger()->trace(_securityTraceCategory, msg + "\n" + IceInternal::fdToString(fd));
+ _logger->trace(_securityTraceCategory, msg + "\n" + IceInternal::fdToString(fd));
}
SecurityException ex(__FILE__, __LINE__);
ex.reason = msg;
@@ -282,7 +282,7 @@ IceSSL::SSLEngine::verifyPeer(SOCKET fd, const string& address, const NativeConn
string msg = string(info->incoming ? "incoming" : "outgoing") + " connection rejected by certificate verifier";
if(_securityTraceLevel >= 1)
{
- getLogger()->trace(_securityTraceCategory, msg + "\n" + IceInternal::fdToString(fd));
+ _logger->trace(_securityTraceCategory, msg + "\n" + IceInternal::fdToString(fd));
}
SecurityException ex(__FILE__, __LINE__);
ex.reason = msg;
diff --git a/cpp/src/IceSSL/SSLEngine.h b/cpp/src/IceSSL/SSLEngine.h
index 645f23151e8..f8bd39d9447 100644
--- a/cpp/src/IceSSL/SSLEngine.h
+++ b/cpp/src/IceSSL/SSLEngine.h
@@ -15,15 +15,30 @@
#include <IceSSL/SSLEngineF.h>
#include <IceSSL/TrustManagerF.h>
-#include <IceUtil/ScopedArray.h>
-#include <IceUtil/UniquePtr.h>
#include <IceUtil/Shared.h>
#include <IceUtil/Mutex.h>
#include <Ice/CommunicatorF.h>
#include <Ice/Network.h>
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
# include <Security/Security.h>
+#elif defined(ICE_USE_SCHANNEL)
+
+//
+// SECURITY_WIN32 or SECURITY_KERNEL, must be defined before including security.h
+// indicating who is compiling the code.
+//
+# ifdef SECURITY_WIN32
+# undef SECURITY_WIN32
+# endif
+# ifdef SECURITY_KERNEL
+# undef SECURITY_KERNEL
+# endif
+# define SECURITY_WIN32 1
+# include <security.h>
+# include <sspi.h>
+# include <schannel.h>
+# undef SECURITY_WIN32
#endif
namespace IceSSL
@@ -57,8 +72,7 @@ public:
//
// Verify peer certificate
//
- virtual void verifyPeer(SOCKET, const std::string&, const NativeConnectionInfoPtr&);
-
+ void verifyPeer(SOCKET, const std::string&, const NativeConnectionInfoPtr&);
CertificateVerifierPtr getCertificateVerifier() const;
PasswordPromptPtr getPasswordPrompt() const;
@@ -87,7 +101,7 @@ private:
std::string _securityTraceCategory;
};
-#ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
class SecureTransportEngine : public SSLEngine
{
@@ -102,36 +116,131 @@ public:
SSLContextRef newContext(bool);
CFArrayRef getCertificateAuthorities() const;
std::string getCipherName(SSLCipherSuite) const;
- SecCertificateRef getCertificate() const;
- SecKeychainRef getKeychain() const;
private:
- void parseCiphers(const std::string& ciphers);
+ void parseCiphers(const std::string&);
bool _initialized;
- SSLContextRef _ctx;
- CFArrayRef _certificateAuthorities;
- SecCertificateRef _cert;
- SecKeyRef _key;
- SecIdentityRef _identity;
- SecKeychainRef _keychain;
+ CFArrayRef _certificateAuthorities;
+ CFMutableArrayRef _chain;
SSLProtocol _protocolVersionMax;
SSLProtocol _protocolVersionMin;
std::string _defaultDir;
-
-
- IceUtil::UniquePtr< IceUtil::ScopedArray<char> > _dhParams;
- size_t _dhParamsLength;
+
+ std::vector<char> _dhParams;
std::vector<SSLCipherSuite> _ciphers;
- bool _allCiphers;
IceUtil::Mutex _mutex;
};
-#else
+#elif defined(ICE_USE_SCHANNEL)
+
+
+#ifdef __MINGW32__
+
+//
+// Add some definitions missing from MinGW headers.
+//
+
+# ifndef CERT_TRUST_IS_EXPLICIT_DISTRUST
+# define CERT_TRUST_IS_EXPLICIT_DISTRUST 0x04000000
+# endif
+
+# ifndef CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT
+# define CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT 0x08000000
+# endif
+
+# ifndef SECBUFFER_ALERT
+# define SECBUFFER_ALERT 17
+# endif
+
+# ifndef SCH_SEND_ROOT_CERT
+# define SCH_SEND_ROOT_CERT 0x00040000
+# endif
+
+# ifndef SP_PROT_TLS1_1_SERVER
+# define SP_PROT_TLS1_1_SERVER 0x00000100
+# endif
+
+# ifndef SP_PROT_TLS1_1_CLIENT
+# define SP_PROT_TLS1_1_CLIENT 0x00000200
+# endif
+
+# ifndef SP_PROT_TLS1_2_SERVER
+# define SP_PROT_TLS1_2_SERVER 0x00000400
+# endif
+
+# ifndef SP_PROT_TLS1_2_CLIENT
+# define SP_PROT_TLS1_2_CLIENT 0x00000800
+# endif
+
+//
+// CERT_CHAIN_ENGINE_CONFIG struct in mingw headers doesn't include
+// new members added in Windows 7, we add our ouwn definition and
+// then cast it to CERT_CHAIN_ENGINE_CONFIG this works because the
+// linked libraries include the new version.
+//
+struct CertChainEngineConfig
+{
+ DWORD cbSize;
+ HCERTSTORE hRestrictedRoot;
+ HCERTSTORE hRestrictedTrust;
+ HCERTSTORE hRestrictedOther;
+ DWORD cAdditionalStore;
+ HCERTSTORE *rghAdditionalStore;
+ DWORD dwFlags;
+ DWORD dwUrlRetrievalTimeout;
+ DWORD MaximumCachedCertificates;
+ DWORD CycleDetectionModulus;
+ HCERTSTORE hExclusiveRoot;
+ HCERTSTORE hExclusiveTrustedPeople;
+};
+
+#endif
+class SChannelEngine : public SSLEngine
+{
+public:
+
+ SChannelEngine(const Ice::CommunicatorPtr&);
+
+ //
+ // Setup the engine.
+ //
+ virtual void initialize();
+
+ virtual bool initialized() const;
+
+ //
+ // Destroy the engine.
+ //
+ virtual void destroy();
+
+ std::string getCipherName(ALG_ID) const;
+
+ CredHandle newCredentialsHandle(bool);
+
+ HCERTCHAINENGINE chainEngine() const;
+
+private:
+
+ void parseCiphers(const std::string&);
+
+ bool _initialized;
+ std::vector<PCCERT_CONTEXT> _certs;
+ DWORD _protocols;
+ IceUtil::Mutex _mutex;
+
+ std::vector<HCERTSTORE> _stores;
+
+ HCERTSTORE _rootStore;
+
+ HCERTCHAINENGINE _chainEngine;
+ std::vector<ALG_ID> _ciphers;
+};
+#else // OpenSSL
class OpenSSLEngine : public SSLEngine
{
public:
@@ -142,12 +251,11 @@ public:
virtual void initialize();
virtual bool initialized() const;
virtual void destroy();
- virtual void verifyPeer(SSL*, SOCKET, const std::string&, const NativeConnectionInfoPtr&);
int verifyCallback(int , SSL*, X509_STORE_CTX*);
-# ifndef OPENSSL_NO_DH
+# ifndef OPENSSL_NO_DH
DH* dhParams(int);
-# endif
+# endif
SSL_CTX* context() const;
void context(SSL_CTX*);
std::string sslErrors() const;
@@ -165,9 +273,9 @@ private:
SSL_CTX* _ctx;
std::string _defaultDir;
-# ifndef OPENSSL_NO_DH
+# ifndef OPENSSL_NO_DH
DHParamsPtr _dhParams;
-# endif
+# endif
IceUtil::Mutex _mutex;
};
#endif
diff --git a/cpp/src/IceSSL/SSLEngineF.h b/cpp/src/IceSSL/SSLEngineF.h
index c064c2f4250..a485da2d4fd 100644
--- a/cpp/src/IceSSL/SSLEngineF.h
+++ b/cpp/src/IceSSL/SSLEngineF.h
@@ -22,15 +22,19 @@ class SSLEngine;
ICE_SSL_API IceUtil::Shared* upCast(IceSSL::SSLEngine*);
typedef IceInternal::Handle<SSLEngine> SSLEnginePtr;
-# ifdef ICE_USE_SECURE_TRANSPORT
+#if defined(ICE_USE_SECURE_TRANSPORT)
class SecureTransportEngine;
ICE_SSL_API IceUtil::Shared* upCast(IceSSL::SecureTransportEngine*);
typedef IceInternal::Handle<SecureTransportEngine> SecureTransportEnginePtr;
-# else
+#elif defined(ICE_USE_SCHANNEL)
+class SChannelEngine;
+ICE_SSL_API IceUtil::Shared* upCast(IceSSL::SChannelEngine*);
+typedef IceInternal::Handle<SChannelEngine> SChannelEnginePtr;
+#else // OpenSSL
class OpenSSLEngine;
ICE_SSL_API IceUtil::Shared* upCast(IceSSL::OpenSSLEngine*);
typedef IceInternal::Handle<OpenSSLEngine> OpenSSLEnginePtr;
-# endif
+#endif
}
diff --git a/cpp/src/IceSSL/SecureTransportEngine.cpp b/cpp/src/IceSSL/SecureTransportEngine.cpp
index f2ac0d7947a..37ae0a2dceb 100644
--- a/cpp/src/IceSSL/SecureTransportEngine.cpp
+++ b/cpp/src/IceSSL/SecureTransportEngine.cpp
@@ -26,7 +26,6 @@
#ifdef ICE_USE_SECURE_TRANSPORT
#include <regex.h>
-#include <dirent.h>
using namespace std;
using namespace IceUtil;
@@ -56,39 +55,13 @@ public:
Init init;
-vector<string>
-dir(const string& path)
-{
- vector<string> result;
-
- DIR* d = opendir(path.c_str());
- if(!d)
- {
- ostringstream os;
- os << "failed to open dir `" << path << "'";
- throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, os.str());
- }
-
- struct dirent* dp = 0;
- while((dp = readdir(d)))
- {
- string name(dp->d_name);
- if(IceUtilInternal::fileExists(path + "/" + name))
- {
- result.push_back(name);
- }
- }
- closedir(d);
- return result;
-}
-
class RegExp : public IceUtil::Shared
{
public:
- RegExp(const std::string&);
+ RegExp(const string&);
~RegExp();
- bool match(const std::string&);
+ bool match(const string&);
private:
@@ -96,14 +69,12 @@ private:
};
typedef IceUtil::Handle<RegExp> RegExpPtr;
-RegExp::RegExp(const std::string& regexp)
+RegExp::RegExp(const string& regexp)
{
int err = regcomp(&_preg, regexp.c_str(), REG_EXTENDED | REG_NOSUB);
- if(err != 0)
+ if(err)
{
- ostringstream os;
- os << "failed to compiler regular expression `" << regexp << "' (error = " << err << ")";
- throw IllegalArgumentException(__FILE__, __LINE__, os.str());
+ throw IceUtil::SyscallException(__FILE__, __LINE__, err);
}
}
@@ -113,7 +84,7 @@ RegExp::~RegExp()
}
bool
-RegExp::match(const std::string& value)
+RegExp::match(const string& value)
{
return regexec(&_preg, value.c_str(), 0, 0, 0) == 0;
}
@@ -132,6 +103,7 @@ public:
static void initialize();
static SSLCipherSuite cipherForName(const string& name);
static string cipherName(SSLCipherSuite cipher);
+ static map<string, SSLCipherSuite> ciphers();
private:
@@ -376,8 +348,7 @@ CiphersHelper::cipherForName(const string& name)
map<string, SSLCipherSuite>::const_iterator i = _ciphers.find(name);
if(i == _ciphers.end() || i->second == SSL_NO_SUCH_CIPHERSUITE)
{
- PluginInitializationException ex(__FILE__, __LINE__, "IceSSL: no such cipher " + name);
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: no such cipher " + name);
}
return i->second;
}
@@ -773,8 +744,14 @@ CiphersHelper::cipherName(SSLCipherSuite cipher)
}
}
+map<string, SSLCipherSuite>
+CiphersHelper::ciphers()
+{
+ return _ciphers;
+}
+
SSLProtocol
-parseProtocol(const std::string& prot)
+parseProtocol(const string& prot)
{
if(prot == "ssl2" || prot == "sslv2")
{
@@ -798,9 +775,7 @@ parseProtocol(const std::string& prot)
}
else
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: unrecognized protocol `" + prot + "'";
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: unrecognized protocol `" + prot + "'");
}
}
@@ -811,17 +786,10 @@ IceUtil::Shared* IceSSL::upCast(IceSSL::SecureTransportEngine* p) { return p; }
IceSSL::SecureTransportEngine::SecureTransportEngine(const Ice::CommunicatorPtr& communicator) :
SSLEngine(communicator),
_initialized(false),
- _ctx(0),
_certificateAuthorities(0),
- _cert(0),
- _key(0),
- _identity(0),
- _keychain(0),
+ _chain(0),
_protocolVersionMax(kSSLProtocolUnknown),
- _protocolVersionMin(kSSLProtocolUnknown),
- _dhParams(0),
- _dhParamsLength(0),
- _allCiphers(false)
+ _protocolVersionMin(kSSLProtocolUnknown)
{
}
@@ -863,296 +831,369 @@ IceSSL::SecureTransportEngine::initialize()
bool usePassword = !keychainPassword.empty();
size_t size = keychainPassword.size();
const char* password = usePassword ? keychainPassword.c_str() : 0;
- OSStatus err = noErr;
- if(keychainPath.empty())
+
+ CFDataRef hash = 0;
+ SecKeychainRef keychain = 0;
+ SecCertificateRef cert = 0;
+ SecKeyRef key = 0;
+ SecIdentityRef identity = 0;
+
+ try
{
- err = SecKeychainCopyDefault(&_keychain);
- if(err != noErr)
+ OSStatus err = 0;
+ if(keychainPath.empty())
{
- ostringstream os;
- os << "IceSSL: unable to retrieve default keychain:\n" << errorToString(err);
- throw PluginInitializationException(__FILE__, __LINE__, os.str());
- }
- }
- else
- {
- //
- // KeyChain path is relative to the current working directory.
- //
- if(!IceUtilInternal::isAbsolutePath(keychainPath))
- {
- string cwd;
- if(IceUtilInternal::getcwd(cwd) == 0)
+ if((err = SecKeychainCopyDefault(&keychain)))
{
- keychainPath = string(cwd) + '/' + keychainPath;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to retrieve default keychain:\n" + errorToString(err));
}
}
-
- err = SecKeychainOpen(keychainPath.c_str(), &_keychain);
- if(err != noErr)
+ else
{
- ostringstream os;
- os << "IceSSL: unable to open keychain: `" << keychainPath << "'\n" << errorToString(err);
- throw PluginInitializationException(__FILE__, __LINE__, os.str());
+ //
+ // KeyChain path is relative to the current working directory.
+ //
+ if(!IceUtilInternal::isAbsolutePath(keychainPath))
+ {
+ string cwd;
+ if(IceUtilInternal::getcwd(cwd) == 0)
+ {
+ keychainPath = string(cwd) + '/' + keychainPath;
+ }
+ }
+
+ if((err = SecKeychainOpen(keychainPath.c_str(), &keychain)))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: unable to open keychain: `" +
+ keychainPath + "'\n" + errorToString(err));
+ }
}
- }
-
- SecKeychainStatus status;
- err = SecKeychainGetStatus(_keychain, &status);
+
+ SecKeychainStatus status;
+ err = SecKeychainGetStatus(keychain, &status);
- if(err == noErr)
- {
- err = SecKeychainUnlock(_keychain, size, password, usePassword);
- if(err != noErr)
+ if(err == noErr)
{
- ostringstream os;
- os << "IceSSL: unable to unlock keychain:\n" << errorToString(err);
- throw PluginInitializationException(__FILE__, __LINE__, os.str());
- }
- }
- else if(err == errSecNoSuchKeychain)
- {
- err = SecKeychainCreate(keychainPath.c_str(), size, password, keychainPassword.empty(), 0, &_keychain);
- if(err != noErr)
- {
- ostringstream os;
- os << "IceSSL: unable to create keychain:\n" << errorToString(err);
- throw PluginInitializationException(__FILE__, __LINE__, os.str());
+ if((err = SecKeychainUnlock(keychain, size, password, usePassword)))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to unlock keychain:\n" + errorToString(err));
+ }
}
- }
- else
- {
- ostringstream os;
- os << "IceSSL: unable to open keychain:\n" << errorToString(err);
- throw PluginInitializationException(__FILE__, __LINE__, os.str());
- }
-
- int passwordRetryMax = properties->getPropertyAsIntWithDefault(propPrefix + "PasswordRetryMax", 3);
- PasswordPromptPtr passwordPrompt = getPasswordPrompt();
-
- //
- // Load the CA certificates used to authenticate peers into
- // _certificateAuthorities array.
- //
- {
- try
+ else if(err == errSecNoSuchKeychain)
{
- string caFile = properties->getProperty(propPrefix + "CertAuthFile");
- if(!caFile.empty())
+ if((err = SecKeychainCreate(keychainPath.c_str(), size, password, keychainPassword.empty(), 0, &keychain)))
{
- if(!checkPath(caFile, defaultDir, false))
- {
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: CA certificate file not found:\n" + caFile;
- throw ex;
- }
- _certificateAuthorities = loadCACertificates(caFile);
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to create keychain:\n" + errorToString(err));
}
}
- catch(const CertificateReadException& ce)
+ else
{
- PluginInitializationException ex(__FILE__, __LINE__, ce.reason);
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to open keychain:\n" + errorToString(err));
}
- catch(const CertificateEncodingException& ce)
+
+ //
+ // Set keychain settings to avoid keychain lock.
+ //
+ SecKeychainSettings settings;
+ settings.version = SEC_KEYCHAIN_SETTINGS_VERS1;
+ settings.lockOnSleep = FALSE;
+ settings.useLockInterval = FALSE;
+ settings.lockInterval = INT_MAX;
+
+ if((err = SecKeychainSetSettings(keychain, &settings)))
{
- PluginInitializationException ex(__FILE__, __LINE__, ce.reason);
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error setting keychain settings:\n" + errorToString(err));
}
- string caDir = properties->getPropertyWithDefault(propPrefix + "CertAuthDir", defaultDir);
- if(!caDir.empty())
+ int passwordRetryMax = properties->getPropertyAsIntWithDefault(propPrefix + "PasswordRetryMax", 3);
+ PasswordPromptPtr passwordPrompt = getPasswordPrompt();
+
+ //
+ // Load the CA certificates used to authenticate peers into
+ // _certificateAuthorities array.
+ //
{
- CFMutableArrayRef certificateAuthorities;
- if(_certificateAuthorities)
+ try
{
- certificateAuthorities = CFArrayCreateMutableCopy(kCFAllocatorDefault, 0, _certificateAuthorities);
- CFRelease(_certificateAuthorities);
+ string caFile = properties->getProperty(propPrefix + "CertAuthFile");
+ if(!caFile.empty())
+ {
+ if(!checkPath(caFile, defaultDir, false))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: CA certificate file not found:\n" + caFile);
+ }
+ _certificateAuthorities = loadCACertificates(caFile);
+ }
}
- else
+ catch(const CertificateReadException& ce)
{
- certificateAuthorities = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
+ throw PluginInitializationException(__FILE__, __LINE__, ce.reason);
}
-
- vector<string> files = dir(caDir);
- for(vector<string>::const_iterator i = files.begin(); i != files.end(); ++i)
+ catch(const CertificateEncodingException& ce)
{
- try
- {
- CFArrayRef tmp = loadCACertificates(caDir + "/" + *i);
-
- CFArrayAppendArray(certificateAuthorities, tmp, CFRangeMake(0, CFArrayGetCount(tmp)));
- CFRelease(tmp);
- }
- catch(const CertificateReadException&)
- {
- //
- // Some files in CertAuthDir might not be certificates, we just ignore those files.
- //
- }
- catch(const CertificateEncodingException&)
- {
- //
- // Some files in CertAuthDir might not be certificates, we just ignore those files.
- //
- }
+ throw PluginInitializationException(__FILE__, __LINE__, ce.reason);
}
- _certificateAuthorities = certificateAuthorities;
}
- }
-
- //
- // Import the application certificate and private keys into the application
- // keychain.
- //
- {
- string certFile = properties->getProperty(propPrefix + "CertFile");
- string keyFile = properties->getProperty(propPrefix + "KeyFile");
- vector<string>::size_type numCerts = 0;
- CFDataRef hash = 0;
-
- if(!certFile.empty())
+ //
+ // Import the application certificate and private keys into the application
+ // keychain.
+ //
{
- vector<string> files;
- if(!IceUtilInternal::splitString(certFile, IceUtilInternal::pathsep, files) || files.size() > 2)
+ string certFile = properties->getProperty(propPrefix + "CertFile");
+ string keyFile = properties->getPropertyWithDefault(propPrefix + "KeyFile", certFile);
+ vector<string>::size_type numCerts = 0;
+
+ if(!certFile.empty())
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: invalid value for " + propPrefix + "CertFile:\n" + certFile;
- throw ex;
+ vector<string> files;
+ if(!IceUtilInternal::splitString(certFile, IceUtilInternal::pathsep, files) || files.size() > 2)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: invalid value for " + propPrefix +
+ "CertFile:\n" + certFile);
+ }
+ numCerts = files.size();
+ for(vector<string>::iterator p = files.begin(); p != files.end();)
+ {
+ string file = *p;
+ if(!checkPath(file, defaultDir, false))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: certificate file not found:\n" + file);
+ }
+
+ try
+ {
+ loadCertificate(&cert, &hash, &key, keychain, file,
+ properties->getProperty(propPrefix + "Password"), passwordPrompt,
+ passwordRetryMax);
+ break;
+ }
+ catch(const CertificateReadException& ce)
+ {
+ //
+ // If this is the last certificate rethrow the exception as PluginInitializationException,
+ // otherwise try the next certificate.
+ //
+ if(++p == files.end())
+ {
+ throw PluginInitializationException(__FILE__, __LINE__, ce.reason);
+ }
+ }
+ }
}
- numCerts = files.size();
- for(vector<string>::iterator p = files.begin(); p != files.end();)
+
+ if(!key && !keyFile.empty())
{
- string file = *p;
- if(!checkPath(file, defaultDir, false))
+ vector<string> files;
+ if(!IceUtilInternal::splitString(keyFile, IceUtilInternal::pathsep, files) || files.size() > 2)
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: certificate file not found:\n" + file;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: invalid value for " + propPrefix + "KeyFile:\n" + keyFile);
}
-
- try
+ if(files.size() != numCerts)
{
- loadCertificate(&_cert, &hash, keyFile.empty() ? &_key : 0, _keychain, file,
- properties->getProperty(propPrefix + "Password"), passwordPrompt,
- passwordRetryMax);
- break;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: IceSSL.KeyFile does not agree with IceSSL.CertFile");
}
- catch(const CertificateReadException& ce)
+ for(vector<string>::iterator p = files.begin(); p != files.end();)
{
- //
- // If this is the last certificate rethrow the exception as PluginInitializationException,
- // otherwise try the next certificate.
- //
- if(++p == files.end())
+ string file = *p;
+ if(!checkPath(file, defaultDir, false))
{
- PluginInitializationException ex(__FILE__, __LINE__, ce.reason);
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: key file not found:\n" + file);
+ }
+
+ try
+ {
+ loadPrivateKey(&key, keyLabel(cert), hash, keychain, file,
+ properties->getProperty(propPrefix + "Password"),
+ passwordPrompt, passwordRetryMax);
+ break;
+ }
+ catch(const CertificateReadException& ce)
+ {
+ //
+ // If this is the last key rethrow the exception as PluginInitializationException,
+ // otherwise try the next certificate.
+ //
+ if(++p == files.end())
+ {
+ PluginInitializationException ex(__FILE__, __LINE__, ce.reason);
+ throw ex;
+ }
}
}
}
- }
-
- if(!keyFile.empty())
- {
- vector<string> files;
- if(!IceUtilInternal::splitString(keyFile, IceUtilInternal::pathsep, files) || files.size() > 2)
- {
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: invalid value for " + propPrefix + "KeyFile:\n" + keyFile;
- throw ex;
- }
- if(files.size() != numCerts)
- {
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: " + propPrefix + "KeyFile does not agree with " + propPrefix + "CertFile";
- throw ex;
- }
- for(vector<string>::iterator p = files.begin(); p != files.end();)
+
+ if(cert)
{
- string file = *p;
- if(!checkPath(file, defaultDir, false))
+ if((err = SecIdentityCreateWithCertificate(keychain, cert, &identity)) != noErr)
{
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: key file not found:\n" + file;
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error creating certificate identity:\n" + errorToString(err));
}
-
+ }
+
+ if(identity)
+ {
+ SecTrustRef trust = 0;
try
{
- loadPrivateKey(&_key, keyLabel(_cert), hash, _keychain, file,
- properties->getProperty(propPrefix + "Password"),
- passwordPrompt, passwordRetryMax);
- break;
- }
- catch(const CertificateReadException& ce)
- {
//
- // If this is the last key rethrow the exception as PluginInitializationException,
- // otherwise try the next certificate.
+ // Retrieve the certificate chain
//
- if(++p == files.end())
+ SecPolicyRef policy = SecPolicyCreateSSL(true, 0);
+ err = SecTrustCreateWithCertificates((CFArrayRef)cert, policy, &trust);
+ CFRelease(policy);
+ if(err || !trust)
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error creating trust object" + (err ? ":\n" + errorToString(err) : ""));
+ }
+
+ if((err = SecTrustSetAnchorCertificates(trust, _certificateAuthorities)))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error while establish the anchor certificates:\n" + errorToString(err));
+ }
+
+ SecTrustResultType trustResult;
+ if((err = SecTrustEvaluate(trust, &trustResult)))
+ {
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: error evaluating trust:\n" + errorToString(err));
+ }
+
+ int chainLength = SecTrustGetCertificateCount(trust);
+ _chain = CFArrayCreateMutable(kCFAllocatorDefault, chainLength, &kCFTypeArrayCallBacks);
+ CFArrayAppendValue(_chain, identity);
+ for(int i = 1; i < chainLength; ++i)
+ {
+ CFArrayAppendValue(_chain, SecTrustGetCertificateAtIndex(trust, i));
+ }
+ CFRelease(trust);
+ }
+ catch(...)
+ {
+ if(trust)
{
- PluginInitializationException ex(__FILE__, __LINE__, ce.reason);
- throw ex;
+ CFRelease(trust);
}
+ throw;
}
}
- }
-
- if(_cert)
- {
- err = SecIdentityCreateWithCertificate(_keychain, _cert, &_identity);
- if(err != noErr)
+
+ if(hash)
+ {
+ CFRelease(hash);
+ }
+
+ if(keychain)
{
- ostringstream os;
- os << "IceSSL: unable to create the certificate identity:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ CFRelease(keychain);
+ }
+
+ if(cert)
+ {
+ CFRelease(cert);
+ }
+
+ if(key)
+ {
+ CFRelease(key);
+ }
+
+ if(identity)
+ {
+ CFRelease(identity);
}
}
-
+ }
+ catch(...)
+ {
if(hash)
{
CFRelease(hash);
}
+
+ if(keychain)
+ {
+ CFRelease(keychain);
+ }
+
+ if(cert)
+ {
+ CFRelease(cert);
+ }
+
+ if(key)
+ {
+ CFRelease(key);
+ }
+
+ if(identity)
+ {
+ CFRelease(identity);
+ }
+
+ throw;
}
-
//
// DiffieHellmanParams in DER format.
//
+ string dhFile = properties->getProperty(propPrefix + "DHParams");
+ if(!dhFile.empty())
{
- string dhParams = properties->getProperty(propPrefix + "DHParams");
- if(!dhParams.empty())
+ if(!checkPath(dhFile, defaultDir, false))
{
- if(!checkPath(dhParams, defaultDir, false))
- {
- PluginInitializationException ex(__FILE__, __LINE__);
- ex.reason = "IceSSL: DH params file not found:\n" + dhParams;
- throw ex;
- }
-
- ScopedArray<char> buffer;
- _dhParamsLength = readFile(dhParams, buffer);
- _dhParams.reset(new ScopedArray<char>(buffer));
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: DH params file not found:\n" + dhFile);
}
+
+ readFile(dhFile, _dhParams);
}
//
// Establish the cipher list.
//
string ciphers = properties->getProperty(propPrefix + "Ciphers");
+ CiphersHelper::initialize();
+
if(!ciphers.empty())
{
- //
- // Context used to get the cipher list
- //
- _ctx = SSLCreateContext(kCFAllocatorDefault, kSSLServerSide, kSSLStreamType);
- CiphersHelper::initialize();
parseCiphers(ciphers);
}
+ if(securityTraceLevel() >= 1)
+ {
+ ostringstream os;
+ os << "enabling SSL ciphersuites:";
+
+ if(_ciphers.empty())
+ {
+ map<string, SSLCipherSuite> enabled = CiphersHelper::ciphers();
+ for(map<string, SSLCipherSuite>::const_iterator i = enabled.begin(); i != enabled.end(); ++i)
+ {
+ os << "\n " << i->first;
+ }
+ }
+ else
+ {
+ for(vector<SSLCipherSuite>::const_iterator i = _ciphers.begin(); i != _ciphers.end(); ++i)
+ {
+ os << "\n " << getCipherName(*i);
+ }
+ }
+ getLogger()->trace(securityTraceCategory(), os.str());
+ }
+
//
// Parse protocols
//
@@ -1182,45 +1223,21 @@ IceSSL::SecureTransportEngine::destroy()
_certificateAuthorities = 0;
}
- if(_identity)
- {
- CFRelease(_identity);
- _identity = 0;
- }
-
- if(_cert)
+ if(_chain)
{
- CFRelease(_cert);
- _cert = 0;
- }
-
- if(_key)
- {
- CFRelease(_key);
- _key = 0;
- }
-
- if(_keychain)
- {
- CFRelease(_keychain);
- _keychain = 0;
- }
-
- if(_ctx)
- {
- CFRelease(_ctx);
- _ctx = 0;
+ CFRelease(_chain);
+ _chain = 0;
}
}
SSLContextRef
IceSSL::SecureTransportEngine::newContext(bool incoming)
{
- SSLContextRef ssl = SSLCreateContext(kCFAllocatorDefault, incoming ? kSSLServerSide : kSSLClientSide, kSSLStreamType);
+ SSLContextRef ssl = SSLCreateContext(kCFAllocatorDefault, incoming ? kSSLServerSide : kSSLClientSide,
+ kSSLStreamType);
if(!ssl)
{
- PluginInitializationException ex(__FILE__, __LINE__, "IceSSL: unable to create SSL context");
- throw ex;
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: unable to create SSL context");
}
OSStatus err = noErr;
@@ -1250,125 +1267,53 @@ IceSSL::SecureTransportEngine::newContext(bool incoming)
}
}
- if(_dhParamsLength > 0)
+ if(!_dhParams.empty())
{
- err = SSLSetDiffieHellmanParams(ssl, _dhParams->get(), _dhParamsLength);
- if(err != noErr)
+ if((err = SSLSetDiffieHellmanParams(ssl, &_dhParams[0], _dhParams.size())))
{
- ostringstream os;
- os << "IceSSL: unable to create the trust object:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw SecurityException(__FILE__, __LINE__,
+ "IceSSL: unable to create the trust object:\n" + errorToString(err));
}
}
}
- if(_cert)
- {
- //
- // Retrieve the certificate chain
- //
- SecPolicyRef policy = SecPolicyCreateSSL(incoming, 0);
- SecTrustRef trust;
- err = SecTrustCreateWithCertificates((CFArrayRef)_cert, policy, &trust);
- CFRelease(policy);
- if(err != noErr || !trust)
- {
- ostringstream os;
- os << "IceSSL: unable to create the trust object";
- if(err != noErr)
- {
- os << ":\n" << errorToString(err);
- }
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
- }
-
- err = SecTrustSetAnchorCertificates(trust, _certificateAuthorities);
- if(err != noErr)
- {
- ostringstream os;
- os << "IceSSL: unable to establish the anchor certificates:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
- }
-
- SecTrustResultType trustResult;
- err = SecTrustEvaluate(trust, &trustResult);
- if(err != noErr)
- {
- ostringstream os;
- os << "IceSSL: unable to evaluate trust:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
- }
-
- int chainLength = SecTrustGetCertificateCount(trust);
- CFMutableArrayRef chain = CFArrayCreateMutable(kCFAllocatorDefault, chainLength, &kCFTypeArrayCallBacks);
- CFArrayAppendValue(chain, _identity);
- for(int i = 1; i < chainLength; ++i)
- {
- CFArrayAppendValue(chain, SecTrustGetCertificateAtIndex(trust, i));
- }
- CFRelease(trust);
-
- err = SSLSetCertificate(ssl, chain);
-
- CFRelease(chain);
-
- if(err != noErr)
- {
- ostringstream os;
- os << "IceSSL: unable to set the SSL context certificate identity:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
- }
+ if(_chain && (err = SSLSetCertificate(ssl, _chain)))
+ {
+ throw SecurityException(__FILE__, __LINE__,
+ "IceSSL: error while set the SSL context certificate:\n" + errorToString(err));
}
if(!_ciphers.empty())
{
- err = SSLSetEnabledCiphers(ssl, reinterpret_cast<SSLCipherSuite*>(&_ciphers[0]), _ciphers.size());
- if(err != noErr)
+ if((err = SSLSetEnabledCiphers(ssl, &_ciphers[0], _ciphers.size())))
{
- ostringstream os;
- os << "IceSSL: failed to set enabled ciphers:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: error while set ciphers:\n" + errorToString(err));
}
}
- err = SSLSetSessionOption(ssl, incoming ? kSSLSessionOptionBreakOnClientAuth : kSSLSessionOptionBreakOnServerAuth,
- true);
- if(err != noErr)
+ if((err = SSLSetSessionOption(ssl, incoming ? kSSLSessionOptionBreakOnClientAuth :
+ kSSLSessionOptionBreakOnServerAuth,
+ true)))
{
- ostringstream os;
- os << "IceSSL: failed to set SSL option:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: error while set SSL option:\n" + errorToString(err));
}
if(_protocolVersionMax != kSSLProtocolUnknown)
{
- err = SSLSetProtocolVersionMax(ssl, _protocolVersionMax);
- if(err != noErr)
+ if((err = SSLSetProtocolVersionMax(ssl, _protocolVersionMax)))
{
- ostringstream os;
- os << "IceSSL: failed to set SSL protocol version max:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw SecurityException(__FILE__, __LINE__,
+ "IceSSL: error while set SSL protocol version max:\n" + errorToString(err));
}
}
if(_protocolVersionMin != kSSLProtocolUnknown)
{
- err = SSLSetProtocolVersionMin(ssl, _protocolVersionMin);
- if(err != noErr)
+ if((err = SSLSetProtocolVersionMin(ssl, _protocolVersionMin)))
{
- ostringstream os;
- os << "IceSSL: failed to set SSL protocol version min:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw SecurityException(__FILE__, __LINE__,
+ "IceSSL: error while set SSL protocol version min:\n" + errorToString(err));
}
}
@@ -1393,6 +1338,7 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
vector<string> tokens;
vector<CipherExpression> cipherExpressions;
+ bool allCiphers = false;
IceUtilInternal::splitString(ciphers, " \t", tokens);
for(vector<string>::const_iterator i = tokens.begin(); i != tokens.end(); ++i)
{
@@ -1401,21 +1347,17 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
{
if(i != tokens.begin())
{
- ostringstream os;
- os << "IceSSL: `ALL' must be first in cipher list `" << ciphers << "'";
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: `ALL' must be first in cipher list `" + ciphers + "'");
}
- _allCiphers = true;
+ allCiphers = true;
}
else if(token == "NONE")
{
if(i != tokens.begin())
{
- ostringstream os;
- os << "IceSSL: `NONE' must be first in cipher list `" << ciphers << "'";
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: `NONE' must be first in cipher list `" + ciphers + "'");
}
}
else
@@ -1430,10 +1372,8 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
}
else
{
- ostringstream os;
- os << "IceSSL: invalid cipher expression `" << token << "'";
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: invalid cipher expression `" + token + "'");
}
}
else
@@ -1445,10 +1385,8 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
{
if(token.rfind(')') != token.size() - 1)
{
- ostringstream os;
- os << "IceSSL: invalid cipher expression `" << token << "'";
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: invalid cipher expression `" + token + "'");
}
try
@@ -1457,10 +1395,8 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
}
catch(const Ice::SyscallException&)
{
- ostringstream os;
- os << "IceSSL: invalid cipher expression `" << token << "'";
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: invalid cipher expression `" + token + "'");
}
}
else
@@ -1472,25 +1408,25 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
}
}
+ //
+ // Context used to get the cipher list
+ //
+ SSLContextRef ctx = SSLCreateContext(kCFAllocatorDefault, kSSLServerSide, kSSLStreamType);
size_t numSupportedCiphers = 0;
- SSLGetNumberSupportedCiphers(_ctx, &numSupportedCiphers);
+ SSLGetNumberSupportedCiphers(ctx, &numSupportedCiphers);
vector<SSLCipherSuite> supported;
supported.resize(numSupportedCiphers);
- OSStatus err = SSLGetSupportedCiphers(_ctx,
- reinterpret_cast<SSLCipherSuite*>(&supported[0]),
- &numSupportedCiphers);
- if(err != noErr)
+ OSStatus err = SSLGetSupportedCiphers(ctx, &supported[0], &numSupportedCiphers);
+ if(err)
{
- ostringstream os;
- os << "IceSSL: unable to get supported ciphers list:\n" << errorToString(err);
- PluginInitializationException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw PluginInitializationException(__FILE__, __LINE__,
+ "IceSSL: unable to get supported ciphers list:\n" + errorToString(err));
}
vector<SSLCipherSuite> enabled;
- if(_allCiphers)
+ if(allCiphers)
{
enabled = supported;
}
@@ -1555,17 +1491,4 @@ IceSSL::SecureTransportEngine::parseCiphers(const string& ciphers)
}
_ciphers = enabled;
}
-
-SecCertificateRef
-IceSSL::SecureTransportEngine::getCertificate() const
-{
- return _cert;
-}
-
-SecKeychainRef
-IceSSL::SecureTransportEngine::getKeychain() const
-{
- return _keychain;
-}
-
#endif
diff --git a/cpp/src/IceSSL/SecureTransportTransceiverI.cpp b/cpp/src/IceSSL/SecureTransportTransceiverI.cpp
index 6454743acb5..a64b4d8ee65 100644
--- a/cpp/src/IceSSL/SecureTransportTransceiverI.cpp
+++ b/cpp/src/IceSSL/SecureTransportTransceiverI.cpp
@@ -8,17 +8,10 @@
// **********************************************************************
#include <IceSSL/SecureTransportTransceiverI.h>
-#include <IceUtil/FileUtil.h>
-#include <IceUtil/Mutex.h>
-#include <IceUtil/MutexPtrLock.h>
-
-#include <IceSSL/ConnectionInfo.h>
#include <IceSSL/Instance.h>
#include <IceSSL/SSLEngine.h>
-#include <IceSSL/Util.h>
-#include <Ice/Communicator.h>
+
#include <Ice/LoggerUtil.h>
-#include <Ice/Buffer.h>
#include <Ice/LocalException.h>
#ifdef ICE_USE_SECURE_TRANSPORT
@@ -46,7 +39,7 @@ trustResultDescription(SecTrustResultType result)
case kSecTrustResultRecoverableTrustFailure:
case kSecTrustResultFatalTrustFailure:
{
- return "Trust denied; no simple fix is available";
+ return "Trust denied";
}
case kSecTrustResultOtherError:
{
@@ -102,6 +95,76 @@ socketRead(SSLConnectionRef connection, void* data, size_t* length)
return transceiver->readRaw(reinterpret_cast<char*>(data), length);
}
+void
+checkTrustResult(SecTrustRef trust, const SecureTransportEnginePtr& engine, const InstancePtr& instance)
+{
+ OSStatus err = noErr;
+ SecTrustResultType trustResult = kSecTrustResultOtherError;
+ if(trust)
+ {
+ if((err = SecTrustSetAnchorCertificates(trust, engine->getCertificateAuthorities())))
+ {
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: handshake failure:\n" + errorToString(err));
+ }
+
+ //
+ // Disable network fetch, we don't want this to block.
+ //
+ if((err = SecTrustSetNetworkFetchAllowed(trust, false)))
+ {
+ throw ProtocolException(__FILE__, __LINE__, "IceSSL: handshake failure:\n" + errorToString(err));
+ }
+
+ //
+ // Evaluate the trust
+ //
+ if((err = SecTrustEvaluate(trust, &trustResult)))
+ {
+ throw ProtocolException(__FILE__, __LINE__, "IceSSL: handshake failure:\n" + errorToString(err));
+ }
+ }
+
+ switch(trustResult)
+ {
+ case kSecTrustResultUnspecified:
+ case kSecTrustResultProceed:
+ {
+ //
+ // Trust verify success.
+ //
+ break;
+ }
+ case kSecTrustResultInvalid:
+ //case kSecTrustResultConfirm: // Used in old OS X versions
+ case kSecTrustResultDeny:
+ case kSecTrustResultRecoverableTrustFailure:
+ case kSecTrustResultFatalTrustFailure:
+ case kSecTrustResultOtherError:
+ {
+ if(engine->getVerifyPeer() == 0)
+ {
+ if(instance->traceLevel() >= 1)
+ {
+ ostringstream os;
+ os << "IceSSL: ignoring certificate verification failure\n" << trustResultDescription(trustResult);
+ instance->logger()->trace(instance->traceCategory(), os.str());
+ }
+ break;
+ }
+ else
+ {
+ ostringstream os;
+ os << "IceSSL: certificate verification failure\n" << trustResultDescription(trustResult);
+ string msg = os.str();
+ if(instance->traceLevel() >= 1)
+ {
+ instance->logger()->trace(instance->traceCategory(), msg);
+ }
+ throw ProtocolException(__FILE__, __LINE__, msg);
+ }
+ }
+ }
+}
}
IceInternal::NativeInfoPtr
@@ -194,26 +257,23 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
assert(_state == StateConnected);
- OSStatus err = noErr;
-
+ OSStatus err = 0;
if(!_ssl)
{
//
// Initialize SSL context
//
_ssl = _engine->newContext(_incoming);
- if((err = SSLSetIOFuncs(_ssl, socketRead, socketWrite)) != noErr)
+ if((err = SSLSetIOFuncs(_ssl, socketRead, socketWrite)))
{
- ostringstream os;
- os << "IceSSL: cannot set SSL IO functions\n" << errorToString(err);
- throw PluginInitializationException(__FILE__, __LINE__, os.str());
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: setting IO functions failed\n" +
+ errorToString(err));
}
- if((err = SSLSetConnection(_ssl, reinterpret_cast<SSLConnectionRef>(this))) != noErr)
+ if((err = SSLSetConnection(_ssl, reinterpret_cast<SSLConnectionRef>(this))))
{
- ostringstream os;
- os << "IceSSL: cannot set SSL connection\n" << errorToString(err);
- throw PluginInitializationException(__FILE__, __LINE__, os.str());
+ throw SecurityException(__FILE__, __LINE__, "IceSSL: setting SSL connection failed\n" +
+ errorToString(err));
}
}
@@ -226,136 +286,41 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
while(state == kSSLHandshake || state == kSSLIdle)
{
err = SSLHandshake(_ssl);
- if(err != noErr)
+ if(err == noErr)
+ {
+ break; // We're done!
+ }
+ else if(err == errSSLWouldBlock)
{
- switch(err)
+ assert(_flags & SSLWantRead || _flags & SSLWantWrite);
+ return _flags & SSLWantRead ? IceInternal::SocketOperationRead : IceInternal::SocketOperationWrite;
+ }
+ else if(err == errSSLPeerAuthCompleted)
+ {
+ assert(!_trust);
+ err = SSLCopyPeerTrust(_ssl, &_trust);
+ if(err == noErr)
{
- case errSSLWouldBlock:
- {
- assert(_flags & SSLWantRead || _flags & SSLWantWrite);
- return _flags & SSLWantRead ? IceInternal::SocketOperationRead : IceInternal::SocketOperationWrite;
- }
- case errSSLPeerAuthCompleted:
- {
- assert(!_trust);
- err = SSLCopyPeerTrust(_ssl, &_trust);
- if(err != noErr)
- {
- break;
- }
-
- SecTrustResultType trustResult = kSecTrustResultOtherError;
-
- if(_trust)
- {
- err = SecTrustSetAnchorCertificates(_trust, _engine->getCertificateAuthorities());
-
- if(err != noErr)
- {
- ostringstream os;
- os << "SSL handsake failure:\n" << errorToString(err);
- throw SecurityException(__FILE__, __LINE__, os.str());
- }
-
- //
- // Disable network fetch, we don't want this to block.
- //
- err = SecTrustSetNetworkFetchAllowed(_trust, false);
- if(err != noErr)
- {
- ostringstream os;
- os << "SSL handsake failure:\n" << errorToString(err);
- throw SecurityException(__FILE__, __LINE__, os.str());
- }
-
- //
- // Evaluate the trust
- //
- err = SecTrustEvaluate(_trust, &trustResult);
- if(err != noErr)
- {
- ostringstream os;
- os << "SSL handsake failure:\n" << errorToString(err);
- throw SecurityException(__FILE__, __LINE__, os.str());;
- }
- }
-
- switch(trustResult)
- {
- case kSecTrustResultUnspecified:
- case kSecTrustResultProceed:
- {
- //
- // Trust verify success.
- //
- break;
- }
- case kSecTrustResultInvalid:
- //case kSecTrustResultConfirm: // Used in old OS X versions
- case kSecTrustResultDeny:
- case kSecTrustResultRecoverableTrustFailure:
- case kSecTrustResultFatalTrustFailure:
- case kSecTrustResultOtherError:
- {
- if(_engine->getVerifyPeer() == 0)
- {
- if(_instance->traceLevel() >= 1)
- {
- ostringstream os;
- os << "IceSSL: ignoring certificate verification failure\n"
- << trustResultDescription(trustResult);
- _instance->logger()->trace(_instance->traceCategory(), os.str());
- }
- break;
- }
- else
- {
- ostringstream os;
- os << "IceSSL: certificate verification failure\n"
- << trustResultDescription(trustResult);
- string msg = os.str();
- if(_instance->traceLevel() >= 1)
- {
- _instance->logger()->trace(_instance->traceCategory(), msg);
- }
- throw ProtocolException(__FILE__, __LINE__, msg);
- }
- }
- }
- //
- // Call SSLHandshake to resume the handsake.
- //
- continue;
- }
- default:
- {
- break;
- }
+ checkTrustResult(_trust, _engine, _instance);
+ continue; // Call SSLHandshake to resume the handsake.
}
+ // Let it fall through, this will raise a SecurityException with the SSLCopyPeerTrust error.
+ }
+ else if(err == errSSLClosedGraceful || err == errSSLClosedAbort)
+ {
+ throw ConnectionLostException(__FILE__, __LINE__, 0);
+ }
- if(err == errSSLClosedGraceful || err == errSSLClosedAbort)
- {
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = 0;
- throw ex;
- }
- else
- {
- IceInternal::Address remoteAddr;
- string desc = "<not available>";
- if(IceInternal::fdToRemoteAddress(_fd, remoteAddr))
- {
- desc = IceInternal::addrToString(remoteAddr);
- }
- ostringstream os;
- os << "SSL error occurred for new " << (_incoming ? "incoming" : "outgoing")
- << " connection:\nremote address = " << desc << "\n"
- << errorToString(err);
- ProtocolException ex(__FILE__, __LINE__, os.str());
- throw ex;
- }
+ IceInternal::Address remoteAddr;
+ string desc = "<not available>";
+ if(IceInternal::fdToRemoteAddress(_fd, remoteAddr))
+ {
+ desc = IceInternal::addrToString(remoteAddr);
}
- break;
+ ostringstream os;
+ os << "IceSSL: ssl error occurred for new " << (_incoming ? "incoming" : "outgoing") << " connection:\n"
+ << "remote address = " << desc << "\n" << errorToString(err);
+ throw ProtocolException(__FILE__, __LINE__, os.str());
}
_engine->verifyPeer(_fd, _host, getNativeConnectionInfo());
_state = StateHandshakeComplete;
@@ -474,22 +439,6 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
return writeRaw(buf) ? IceInternal::SocketOperationNone : IceInternal::SocketOperationWrite;
}
- size_t processed = 0;
-
- if(_buffered > 0)
- {
- //
- // Required to flush SSL buffers
- //
- if(SSLWrite(_ssl, 0, 0, &processed) == errSSLWouldBlock)
- {
- return IceInternal::SocketOperationWrite;
- }
-
- buf.i += _buffered;
- _buffered = 0;
- }
-
if(buf.i == buf.b.end())
{
return IceInternal::SocketOperationNone;
@@ -503,58 +452,71 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
while(buf.i != buf.b.end())
{
assert(_fd != INVALID_SOCKET);
- OSStatus ret = SSLWrite(_ssl, reinterpret_cast<const void*>(buf.i), packetSize, &processed);
- if(ret != noErr)
+ size_t processed = 0;
+ OSStatus err = _buffered ? SSLWrite(_ssl, 0, 0, &processed) :
+ SSLWrite(_ssl, reinterpret_cast<const void*>(buf.i), packetSize, &processed);
+
+ if(err)
{
- if(ret == errSSLWouldBlock)
+ if(err == errSSLWouldBlock)
{
- _buffered = processed;
+ if(_buffered == 0)
+ {
+ _buffered = processed;
+ }
assert(_flags & SSLWantWrite);
return IceInternal::SocketOperationWrite;
}
- if(ret == errSSLClosedGraceful)
+ if(err == errSSLClosedGraceful)
{
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = 0;
- throw ex;
+ throw ConnectionLostException(__FILE__, __LINE__, 0);
}
//
// SSL protocol errors are defined in SecureTransport.h are in the range
// -9800 to -9849
//
- if(ret <= -9800 && ret >= -9849)
+ if(err <= -9800 && err >= -9849)
{
- ProtocolException ex(__FILE__, __LINE__);
- ostringstream os;
- os << "SSL protocol error during read:\n" << errorToString(ret);
- ex.reason = os.str();
- throw ex;
+ throw ProtocolException(__FILE__, __LINE__, "IceSSL: error during read:\n" + errorToString(err));
}
- errno = ret;
+ errno = err;
if(IceInternal::connectionLost())
{
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
}
else
{
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
+ throw SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
}
}
if(_instance->traceLevel() >= 3)
{
Trace out(_instance->logger(), _instance->traceCategory());
- out << "sent " << processed << " of " << packetSize << " bytes via " << protocol() << "\n" << toString();
+ out << "sent ";
+ if(_buffered)
+ {
+ out << _buffered << " of " << _buffered;
+ }
+ else
+ {
+ out << processed << " of " << packetSize;
+ }
+ out << " bytes via " << protocol() << "\n" << toString();
}
- buf.i += processed;
+ if(_buffered)
+ {
+ buf.i += _buffered;
+ _buffered = 0;
+ }
+ else
+ {
+ buf.i += processed;
+ }
if(packetSize > buf.b.end() - buf.i)
{
@@ -587,73 +549,65 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool&)
{
return IceInternal::SocketOperationNone;
}
- //
- // It's impossible for packetSize to be more than an Int.
- //
+
size_t packetSize = buf.b.end() - buf.i;
- size_t processed = 0;
-
packetSize = std::min(packetSize, _maxReceivePacketSize);
-
+
while(buf.i != buf.b.end())
{
assert(_fd != INVALID_SOCKET);
- OSStatus ret = SSLRead(_ssl, reinterpret_cast<void*>(buf.i), packetSize, &processed);
- if(ret != noErr)
+ size_t processed = 0;
+ OSStatus err = SSLRead(_ssl, reinterpret_cast<void*>(buf.i), packetSize, &processed);
+
+ if(processed)
{
- if(ret == errSSLWouldBlock)
+ if(_instance->traceLevel() >= 3)
+ {
+ Trace out(_instance->logger(), _instance->traceCategory());
+ out << "received " << processed << " of " << packetSize << " bytes via " << protocol() << "\n"
+ << toString();
+ }
+ }
+
+ if(err)
+ {
+ if(err == errSSLWouldBlock)
{
buf.i += processed;
assert(_flags & SSLWantRead);
return IceInternal::SocketOperationRead;
}
- if(ret == errSSLClosedGraceful || ret == errSSLPeerBadRecordMac || ret == errSSLPeerDecryptionFail)
+ if(err == errSSLClosedGraceful || err == errSSLPeerBadRecordMac || err == errSSLPeerDecryptionFail)
{
//
// Forcefully closing a connection can result in SSLRead reporting
// "decryption failed or bad record mac". We trap that error and
// treat it as the loss of a connection.
//
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = 0;
- throw ex;
+ throw ConnectionLostException(__FILE__, __LINE__, 0);
}
//
// SSL protocol errors are defined in SecureTransport.h are in the range
// -9800 to -9849
//
- if(ret <= -9800 && ret >= -9849)
+ if(err <= -9800 && err >= -9849)
{
- ProtocolException ex(__FILE__, __LINE__);
- ostringstream os;
- os << "SSL protocol error during read:\n" << errorToString(ret);
- ex.reason = os.str();
- throw ex;
+ throw ProtocolException(__FILE__, __LINE__, "IceSSL: error during read:\n" + errorToString(err));
}
- errno = ret;
+ errno = err;
if(IceInternal::connectionLost())
{
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
}
else
{
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
+ throw SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
}
}
- if(_instance->traceLevel() >= 3)
- {
- Trace out(_instance->logger(), _instance->traceCategory());
- out << "received " << processed << " of " << packetSize << " bytes via " << protocol() << "\n"
- << toString();
- }
buf.i += processed;
if(packetSize > buf.b.end() - buf.i)
@@ -726,8 +680,8 @@ IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const
}
//
- // Limit the size of packet passed to SSLWrite/SSLRead to avoid blocking and
- // holding too much memory.
+ // Limit the size of packets passed to SSLWrite/SSLRead to avoid
+ // blocking and holding too much memory.
//
_maxSendPacketSize = std::max(512, IceInternal::getSendBufferSize(fd));
_maxReceivePacketSize = std::max(512, IceInternal::getRecvBufferSize(fd));
@@ -751,8 +705,8 @@ IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance, SOCKET fd, const
IceInternal::setTcpBufSize(fd, _instance->properties(), _instance->logger());
//
- // Limit the size of packet passed to SSLWrite/SSLRead to avoid blocking and
- // holding too much memory.
+ // Limit the size of packets passed to SSLWrite/SSLRead to avoid
+ // blocking and holding too much memory.
//
_maxSendPacketSize = std::max(512, IceInternal::getSendBufferSize(fd));
_maxReceivePacketSize = std::max(512, IceInternal::getRecvBufferSize(fd));
@@ -827,15 +781,11 @@ IceSSL::TransceiverI::writeRaw(IceInternal::Buffer& buf)
if(IceInternal::connectionLost())
{
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
}
else
{
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
+ throw SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
}
}
@@ -867,9 +817,7 @@ IceSSL::TransceiverI::readRaw(IceInternal::Buffer& buf)
if(ret == 0)
{
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = 0;
- throw ex;
+ throw ConnectionLostException(__FILE__, __LINE__, 0);
}
if(ret == SOCKET_ERROR)
@@ -892,15 +840,11 @@ IceSSL::TransceiverI::readRaw(IceInternal::Buffer& buf)
if(IceInternal::connectionLost())
{
- ConnectionLostException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
+ throw ConnectionLostException(__FILE__, __LINE__, IceInternal::getSocketErrno());
}
else
{
- SocketException ex(__FILE__, __LINE__);
- ex.error = IceInternal::getSocketErrno();
- throw ex;
+ throw SocketException(__FILE__, __LINE__, IceInternal::getSocketErrno());
}
}
@@ -911,7 +855,10 @@ IceSSL::TransceiverI::readRaw(IceInternal::Buffer& buf)
}
buf.i += ret;
- packetSize = buf.b.end() - buf.i;
+ if(packetSize > buf.b.end() - buf.i)
+ {
+ packetSize = buf.b.end() - buf.i;
+ }
}
return true;
@@ -1010,7 +957,10 @@ IceSSL::TransceiverI::readRaw(char* data, size_t* length) const
}
i += ret;
- packetSize = end - i;
+ if(packetSize > end - i)
+ {
+ packetSize = end - i;
+ }
}
*length = i - data;
diff --git a/cpp/src/IceSSL/SecureTransportTransceiverI.h b/cpp/src/IceSSL/SecureTransportTransceiverI.h
index bef04b5c8c0..ea5051814df 100644
--- a/cpp/src/IceSSL/SecureTransportTransceiverI.h
+++ b/cpp/src/IceSSL/SecureTransportTransceiverI.h
@@ -68,8 +68,6 @@ private:
virtual NativeConnectionInfoPtr getNativeConnectionInfo() const;
- void traceConnection();
-
bool writeRaw(IceInternal::Buffer&);
bool readRaw(IceInternal::Buffer&);
diff --git a/cpp/src/IceSSL/Util.cpp b/cpp/src/IceSSL/Util.cpp
index 27fd312c3d6..37a4888e11f 100644
--- a/cpp/src/IceSSL/Util.cpp
+++ b/cpp/src/IceSSL/Util.cpp
@@ -13,18 +13,14 @@
#endif
#include <IceSSL/Util.h>
-#include <IceUtil/ScopedArray.h>
#include <IceUtil/FileUtil.h>
+#include <IceUtil/StringUtil.h>
#include <Ice/LocalException.h>
#include <Ice/Network.h>
#include <Ice/Object.h>
#ifdef ICE_USE_OPENSSL
-# ifdef _WIN32
-# include <direct.h>
-# include <sys/types.h>
-# endif
# include <openssl/err.h>
#endif
@@ -33,6 +29,27 @@ using namespace Ice;
using namespace IceUtil;
using namespace IceSSL;
+void
+IceSSL::readFile(const string& file, vector<char>& buffer)
+{
+ IceUtilInternal::ifstream is(file, ios::in | ios::binary);
+ if(!is.good())
+ {
+ throw CertificateReadException(__FILE__, __LINE__, "error opening file " + file);
+ }
+
+ is.seekg(0, is.end);
+ buffer.resize(static_cast<int>(is.tellg()));
+ is.seekg(0, is.beg);
+
+ is.read(&buffer[0], buffer.size());
+
+ if(!is.good())
+ {
+ throw CertificateReadException(__FILE__, __LINE__, "error reading file " + file);
+ }
+}
+
#ifdef ICE_USE_OPENSSL
namespace
{
@@ -179,8 +196,6 @@ convertDH(unsigned char* p, int plen, unsigned char* g, int glen)
return dh;
}
-IceUtil::Shared* IceSSL::upCast(IceSSL::DHParams* p) { return p; }
-
IceSSL::DHParams::DHParams() :
_dh512(0), _dh1024(0), _dh2048(0), _dh4096(0)
{
@@ -370,37 +385,14 @@ IceSSL::fromCFString(CFStringRef v)
if(v)
{
CFIndex size = CFStringGetMaximumSizeForEncoding(CFStringGetLength(v), kCFStringEncodingUTF8);
- IceUtil::ScopedArray<char> buffer(new char[size + 1]);
- CFStringGetCString(v, buffer.get(), size + 1, kCFStringEncodingUTF8);
- s.assign(buffer.get());
+ vector<char> buffer;
+ buffer.resize(size + 1);
+ CFStringGetCString(v, &buffer[0], buffer.size(), kCFStringEncodingUTF8);
+ s.assign(&buffer[0]);
}
return s;
}
-int
-IceSSL::readFile(const string& file, ScopedArray<char>& buffer)
-{
- IceUtilInternal::ifstream is(file);
-
- if(!is.good())
- {
- throw CertificateReadException(__FILE__, __LINE__, "error opening file " + file);
- }
-
- is.seekg (0, is.end);
- streampos length = is.tellg();
- is.seekg (0, is.beg);
-
- buffer.reset(new char[length]);
- is.read(buffer.get(), length);
-
- if(!is.good())
- {
- throw CertificateReadException(__FILE__, __LINE__, "error reading file " + file);
- }
- return length;
-}
-
CFDictionaryRef
IceSSL::getCertificateProperty(SecCertificateRef cert, CFTypeRef key)
{
@@ -519,10 +511,8 @@ copyMatching(SecKeychainRef keychain, CFDataRef hash, CFTypeRef type)
if(err != noErr && err != errSecItemNotFound)
{
- ostringstream os;
- os << "Error searching for keychain items\n" << errorToString(err);
- CertificateReadException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateReadException(__FILE__, __LINE__,
+ "Error searching for keychain items\n" + errorToString(err));
}
return item;
@@ -561,8 +551,7 @@ addToKeychain(SecKeychainRef keychain, SecKeychainItemRef item, CFDataRef hash,
ostringstream os;
os << "Failure adding " << (type == kSecClassKey ? "key" : "certificate")
<< " to keychain\n" << errorToString(err);
- CertificateReadException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateReadException(__FILE__, __LINE__, os.str());
}
newItem = (SecKeychainItemRef)CFArrayGetValueAtIndex(added, 0);
CFRetain(newItem);
@@ -579,73 +568,105 @@ addToKeychain(SecKeychainRef keychain, SecKeychainItemRef item, CFDataRef hash,
// the list of items, the caller must release it.
//
void
-loadKeychainItems(CFArrayRef* items, CFTypeRef type, const string& file, const string& passphrase,
- const PasswordPromptPtr& prompt, int passwordRetryMax)
+loadKeychainItems(CFArrayRef* items, CFTypeRef type, const string& file, SecExternalFormat* format,
+ SecKeychainRef keychain, const string& passphrase, const PasswordPromptPtr& prompt,
+ int passwordRetryMax)
{
assert(type == kSecClassCertificate || type == kSecClassKey);
- ScopedArray<char> buffer;
- int length = readFile(file, buffer);
+ vector<char> buffer;
+ readFile(file, buffer);
+
CFDataRef data = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault,
- (const UInt8*)buffer.get(),
- length,
+ reinterpret_cast<const UInt8*>(&buffer[0]),
+ buffer.size(),
kCFAllocatorNull);
-
- SecExternalFormat format = kSecFormatUnknown;
- SecExternalItemType itemType = type == kSecClassKey ? kSecItemTypePrivateKey : kSecItemTypeCertificate;
+ SecExternalItemType itemType = kSecItemTypeUnknown;
SecItemImportExportKeyParameters params;
memset(&params, 0, sizeof(params));
params.version = SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION;
- if(type == kSecClassKey)
+
{
- params.flags |= kSecKeyNoAccessControl;
+ const void* values[] = {kSecACLAuthorizationAny};
+ params.keyUsage = CFArrayCreate(0, values, 1, 0);
+ }
+
+ params.flags |= kSecKeyNoAccessControl;
+
+ OSStatus err = noErr;
+ int count = 0;
+
+ while(true)
+ {
+ if(!passphrase.empty())
+ {
+ assert(!params.passphrase);
+ params.passphrase = toCFString(passphrase);
+ }
+ err = SecItemImport(data, 0, format, &itemType, 0, &params, *format == kSecFormatPKCS12 ? keychain : 0,
+ items);
+ if(params.passphrase)
+ {
+ CFRelease(params.passphrase);
+ params.passphrase = 0;
+ }
+
+ if(err == noErr)
+ {
+ break;
+ }
//
- // If the application doesn't provide an password prompt configure
- // the default OS X password prompt.
+ // Try PKCS12 format.
//
- if(!prompt)
+ if(err == errSecUnknownFormat && *format != kSecFormatPKCS12)
+ {
+ *format = kSecFormatPKCS12;
+ itemType = kSecItemTypeAggregate;
+ continue;
+ }
+
+ //
+ // Error
+ //
+ if(!passphrase.empty() || (err != errSecPassphraseRequired &&
+ err != errSecInvalidData &&
+ err != errSecPkcs12VerifyFailure))
+ {
+ break;
+ }
+
+ if(prompt && count < passwordRetryMax)
+ {
+ params.passphrase = toCFString(prompt->getPassword());
+ }
+ //
+ // Configure the default OS X password prompt if passphrase is required
+ // and the user doesn't provide a passphrase or password prompt.
+ //
+ else if(!prompt && !(params.flags & kSecKeySecurePassphrase))
{
params.flags |= kSecKeySecurePassphrase;
ostringstream os;
os << "Enter the password for\n" << file;
-
params.alertPrompt = toCFString(os.str());
+ continue;
}
- }
-
- if(!passphrase.empty())
- {
- params.passphrase = toCFString(passphrase);
- }
- OSStatus err = SecItemImport(data, 0, &format, &itemType, 0, &params, 0, items);
- if(params.passphrase)
- {
- CFRelease(params.passphrase);
- }
-
- if(prompt && err == errSecPassphraseRequired)
- {
- for(int i = 0; i < passwordRetryMax; ++i)
+ //
+ // Password retry.
+ //
+ if(++count >= passwordRetryMax)
{
- params.passphrase = toCFString(prompt->getPassword());
- err = SecItemImport(data, 0, &format, &itemType, 0, &params, 0, items);
- if(params.passphrase)
- {
- CFRelease(params.passphrase);
- }
-
- if(err != errSecPassphraseRequired && err != errSecInvalidData)
- {
- break;
- }
+ break;
}
}
+
if(params.alertPrompt)
{
CFRelease(params.alertPrompt);
}
+
CFRelease(data);
if(err != noErr)
@@ -653,8 +674,7 @@ loadKeychainItems(CFArrayRef* items, CFTypeRef type, const string& file, const s
ostringstream os;
os << "Error reading " << (type == kSecClassCertificate ? "certificate " : "private key ")
<< "from file: `" << file << "'\n" << errorToString(err);
- CertificateReadException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateReadException(__FILE__, __LINE__, os.str());
}
}
@@ -671,10 +691,7 @@ IceSSL::keyLabel(SecCertificateRef cert)
OSStatus err = SecCertificateCopyCommonName(cert, &commonName);
if(err != noErr)
{
- ostringstream os;
- os << "certificate error:\n" << errorToString(err);
- CertificateReadException ex(__FILE__, __LINE__, os.str());
- throw ex;
+ throw CertificateReadException(__FILE__, __LINE__, "certificate error:\n" + errorToString(err));
}
string label = fromCFString(commonName);
CFRelease(commonName);
@@ -693,73 +710,80 @@ IceSSL::loadPrivateKey(SecKeyRef* key, const string& label, CFDataRef hash, SecK
CFArrayRef items = 0;
try
{
- loadKeychainItems(&items, kSecClassKey, file, passphrase, prompt, passwordRetryMax);
- if(items && CFArrayGetCount(items) > 0)
+ SecExternalFormat format = kSecFormatUnknown;
+ loadKeychainItems(&items, kSecClassKey, file, &format, keychain, passphrase, prompt, passwordRetryMax);
+ if(items)
{
- SecKeychainItemRef item = (SecKeychainItemRef)CFArrayGetValueAtIndex(items, 0);
- assert(SecKeyGetTypeID() == CFGetTypeID(item));
- CFRetain(item);
- *key = (SecKeyRef)item;
-
- CFRelease(items);
- items = 0;
-
- if(keychain)
+ int count = CFArrayGetCount(items);
+ for(int i = 0; i < count; ++i)
{
- SecKeychainItemRef newItem = addToKeychain(keychain, item, hash, kSecClassKey);
- assert(newItem);
- CFRelease(*key);
- *key = (SecKeyRef)newItem;
- if(hash)
+ SecKeychainItemRef item = (SecKeychainItemRef)CFArrayGetValueAtIndex(items, 0);
+ if(SecKeyGetTypeID() == CFGetTypeID(item))
{
- //
- // Create the association between the private key and the certificate,
- // kSecKeyLabel attribute should match the subject key identifier.
- //
- SecKeychainAttribute attr;
- attr.tag = kSecKeyLabel;
- attr.data = (void*)CFDataGetBytePtr(hash);
- attr.length = CFDataGetLength(hash);
+ CFRetain(item);
+ *key = (SecKeyRef)item;
- SecKeychainAttributeList attrs;
- attrs.attr = &attr;
- attrs.count = 1;
+ CFRelease(items);
+ items = 0;
- SecKeychainItemModifyAttributesAndData(newItem, &attrs, 0, 0);
- }
-
- if(!label.empty())
- {
- //
- // kSecKeyPrintName attribute correspond to the keychain display
- // name.
- //
- SecKeychainAttribute att;
- att.tag = kSecKeyPrintName;
- att.data = (void*)label.c_str();
- att.length = label.size();
-
- SecKeychainAttributeList attrs;
- attrs.attr = &att;
- attrs.count = 1;
-
- SecKeychainItemModifyAttributesAndData(newItem, &attrs, 0, 0);
+ if(keychain)
+ {
+ SecKeychainItemRef newItem = addToKeychain(keychain, item, hash, kSecClassKey);
+ assert(newItem);
+ CFRelease(*key);
+ *key = (SecKeyRef)newItem;
+ if(hash)
+ {
+ //
+ // Create the association between the private key and the certificate,
+ // kSecKeyLabel attribute should match the subject key identifier.
+ //
+ SecKeychainAttribute attr;
+ attr.tag = kSecKeyLabel;
+ attr.data = (void*)CFDataGetBytePtr(hash);
+ attr.length = CFDataGetLength(hash);
+
+ SecKeychainAttributeList attrs;
+ attrs.attr = &attr;
+ attrs.count = 1;
+
+ SecKeychainItemModifyAttributesAndData(newItem, &attrs, 0, 0);
+ }
+
+ if(!label.empty())
+ {
+ //
+ // kSecKeyPrintName attribute correspond to the keychain display
+ // name.
+ //
+ SecKeychainAttribute att;
+ att.tag = kSecKeyPrintName;
+ att.data = (void*)label.c_str();
+ att.length = label.size();
+
+ SecKeychainAttributeList attrs;
+ attrs.attr = &att;
+ attrs.count = 1;
+
+ SecKeychainItemModifyAttributesAndData(newItem, &attrs, 0, 0);
+ }
+ }
+ break;
}
}
}
- }
- catch(...)
- {
- if(hash)
+
+ if(!*key)
{
- CFRelease(hash);
- hash = 0;
+ throw CertificateReadException(__FILE__, __LINE__,
+ "Certificate error:\n error importing certificate from " + file);
}
-
+ }
+ catch(...)
+ {
if(items)
{
CFRelease(items);
- items = 0;
}
if(*key)
@@ -773,6 +797,8 @@ IceSSL::loadPrivateKey(SecKeyRef* key, const string& label, CFDataRef hash, SecK
}
//
+// Imports a certificate and private key and optionally add then to a keychain.
+//
void
IceSSL::loadCertificate(SecCertificateRef* cert, CFDataRef* hash, SecKeyRef* key, SecKeychainRef keychain,
const string& file, const string& passphrase, const PasswordPromptPtr& prompt,
@@ -780,42 +806,93 @@ IceSSL::loadCertificate(SecCertificateRef* cert, CFDataRef* hash, SecKeyRef* key
{
assert(cert);
CFArrayRef items = 0;
+ SecIdentityRef identity = 0;
+
try
{
- loadKeychainItems(&items, kSecClassCertificate, file, passphrase, prompt, passwordRetryMax);
- if(items && CFArrayGetCount(items) > 0)
+ SecExternalFormat format = kSecFormatUnknown;
+ loadKeychainItems(&items, kSecClassCertificate, file, &format, keychain, passphrase, prompt, passwordRetryMax);
+
+ if(items)
{
- SecKeychainItemRef item = (SecKeychainItemRef)CFArrayGetValueAtIndex(items, 0);
- assert(SecCertificateGetTypeID() == CFGetTypeID(item));
- CFRetain(item);
- *cert = (SecCertificateRef)item;
-
- CFRelease(items);
- items = 0;
+ int count = CFArrayGetCount(items);
- //
- // Copy the public key hash, that is used when added the private key
- // to create an association between the certificate and the corresponding
- // private key.
- //
- if(hash)
+ for(int i = 0; i < count; ++i)
{
- *hash = getSubjectKeyIdentifier(*cert);
-
- if(keychain)
+ SecKeychainItemRef item = (SecKeychainItemRef)CFArrayGetValueAtIndex(items, i);
+ if(format == kSecFormatPKCS12)
{
- SecKeychainItemRef newItem = addToKeychain(keychain, item, *hash, kSecClassCertificate);
- assert(newItem);
- CFRelease(*cert);
- *cert = (SecCertificateRef)newItem;
-
+ OSStatus err = noErr;
+ if(SecIdentityGetTypeID() == CFGetTypeID(item))
+ {
+ if((err = SecIdentityCopyCertificate((SecIdentityRef)item, cert)) != noErr)
+ {
+ throw CertificateReadException(__FILE__, __LINE__, "Certificate error:\n" +
+ errorToString(err));
+ }
+
+ if((err = SecIdentityCopyPrivateKey((SecIdentityRef)item, key)) != noErr)
+ {
+ throw CertificateReadException(__FILE__, __LINE__, "Certificate error:\n" +
+ errorToString(err));
+ }
+ break;
+ }
+ else if(SecCertificateGetTypeID() == CFGetTypeID(item))
+ {
+ CFRetain(item);
+ *cert = (SecCertificateRef)item;
+
+ if((err = SecIdentityCreateWithCertificate(keychain, *cert, &identity)) != noErr)
+ {
+ throw CertificateReadException(__FILE__, __LINE__, "Certificate error:\n" +
+ errorToString(err));
+ }
+ if((err = SecIdentityCopyPrivateKey(identity, key)) != noErr)
+ {
+ throw CertificateReadException(__FILE__, __LINE__, "Certificate error:\n" +
+ errorToString(err));
+ }
+
+ CFRelease(identity);
+ identity = 0;
+ break;
+ }
+ }
+ else if(SecCertificateGetTypeID() == CFGetTypeID(item))
+ {
+ CFRetain(item);
+ *cert = (SecCertificateRef)item;
+
+ //
+ // Copy the public key hash, that is used when added the private key
+ // to create an association between the certificate and the corresponding
+ // private key.
+ //
+ if(hash)
+ {
+ *hash = getSubjectKeyIdentifier(*cert);
+
+ if(keychain)
+ {
+ SecKeychainItemRef newItem = addToKeychain(keychain, item, *hash, kSecClassCertificate);
+ assert(newItem);
+ CFRelease(*cert);
+ *cert = (SecCertificateRef)newItem;
+ }
+ }
+ break;
}
}
- if(key)
- {
- loadPrivateKey(key, keyLabel(*cert), hash ? *hash : 0, keychain, file, passphrase, prompt, passwordRetryMax);
- }
+ CFRelease(items);
+ items = 0;
+ }
+
+ if(!*cert)
+ {
+ throw CertificateReadException(__FILE__, __LINE__,
+ "Certificate error:\n error importing certificate from " + file);
}
}
catch(...)
@@ -826,7 +903,7 @@ IceSSL::loadCertificate(SecCertificateRef* cert, CFDataRef* hash, SecKeyRef* key
*cert = 0;
}
- if(*hash)
+ if(hash && *hash)
{
CFRelease(*hash);
*hash = 0;
@@ -835,7 +912,11 @@ IceSSL::loadCertificate(SecCertificateRef* cert, CFDataRef* hash, SecKeyRef* key
if(items)
{
CFRelease(items);
- items = 0;
+ }
+
+ if(identity)
+ {
+ CFRelease(identity);
}
if(key && *key)
@@ -853,7 +934,8 @@ IceSSL::loadCACertificates(const string& file, const string& passphrase, const P
int passwordRetryMax)
{
CFArrayRef items = 0;
- loadKeychainItems(&items, kSecClassCertificate, file, passphrase, prompt, passwordRetryMax);
+ SecExternalFormat format = kSecFormatUnknown;
+ loadKeychainItems(&items, kSecClassCertificate, file, &format, 0, passphrase, prompt, passwordRetryMax);
CFMutableArrayRef certificateAuthorities = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
if(items)
{
@@ -869,8 +951,7 @@ IceSSL::loadCACertificates(const string& file, const string& passphrase, const P
}
return certificateAuthorities;
}
-
-#endif // End ICE_USE_OPENSSL
+#endif
bool
IceSSL::checkPath(string& path, const string& defaultDir, bool dir)
diff --git a/cpp/src/IceSSL/Util.h b/cpp/src/IceSSL/Util.h
index 5b8784e29e5..6204dedbb4d 100644
--- a/cpp/src/IceSSL/Util.h
+++ b/cpp/src/IceSSL/Util.h
@@ -10,27 +10,41 @@
#ifndef ICE_SSL_UTIL_H
#define ICE_SSL_UTIL_H
-#include <IceSSL/Config.h>
-#include <IceSSL/UtilF.h>
-#include <Ice/Network.h>
#include <IceUtil/Mutex.h>
#include <IceUtil/Shared.h>
-#include <IceUtil/ScopedArray.h>
+#include <IceUtil/Handle.h>
#include <IceSSL/Plugin.h>
-#include <list>
-
-#ifdef ICE_USE_OPENSSL
+#if defined(ICE_USE_OPENSSL)
# include <openssl/ssl.h>
-#else
+# include <list>
+#elif defined(ICE_USE_SECURE_TRANSPORT)
# include <Security/Security.h>
# include <CoreFoundation/CoreFoundation.h>
+#elif defined(ICE_USE_SCHANNEL)
+# include <wincrypt.h>
#endif
-#ifdef ICE_USE_OPENSSL
namespace IceSSL
{
+
+//
+// Constants for X509 certificate alt names (AltNameOther, AltNameORAddress, AltNameEDIPartyName and
+// AltNameObjectIdentifier) are not supported.
+//
+
+//const int AltNameOther = 0;
+const int AltNameEmail = 1;
+const int AltNameDNS = 2;
+//const int AltNameORAddress = 3;
+const int AltNameDirectory = 4;
+//const int AltNameEDIPartyName = 5;
+const int AltNameURL = 6;
+const int AltNAmeIP = 7;
+//const AltNameObjectIdentifier = 8;
+
+#ifdef ICE_USE_OPENSSL
# ifndef OPENSSL_NO_DH
class DHParams : public IceUtil::Shared, public IceUtil::Mutex
@@ -54,6 +68,7 @@ private:
DH* _dh2048;
DH* _dh4096;
};
+typedef IceUtil::Handle<DHParams> DHParamsPtr;
# endif
//
@@ -61,12 +76,8 @@ private:
//
std::string getSslErrors(bool);
-}
#elif defined(ICE_USE_SECURE_TRANSPORT)
-namespace IceSSL
-{
-
//
// Helper functions to use by Secure Transport.
//
@@ -80,51 +91,40 @@ toCFString(const std::string& s)
}
std::string errorToString(CFErrorRef);
-
std::string errorToString(OSStatus);
//
-// Read a while file into memory buffer and return the number of bytes read.
-//
-int readFile(const std::string&, IceUtil::ScopedArray<char>&);
-
-
-//
// Retrieve a certificate property
//
-CFDictionaryRef
-getCertificateProperty(SecCertificateRef, CFTypeRef);
-
+CFDictionaryRef getCertificateProperty(SecCertificateRef, CFTypeRef);
std::string keyLabel(SecCertificateRef);
//
// Read a private key from an file and optionaly import into a keychain.
//
-void loadPrivateKey(SecKeyRef*, const std::string&, CFDataRef, SecKeychainRef,
- const std::string&, const std::string&, const PasswordPromptPtr&,
- int);
+void loadPrivateKey(SecKeyRef*, const std::string&, CFDataRef, SecKeychainRef, const std::string&, const std::string&,
+ const PasswordPromptPtr&, int);
//
-// Read a certificate and key from an file and optionaly import then into a
-// keychain.
+// Read a certificate and key from an file and optionaly import then
+// into a keychain.
//
-void loadCertificate(SecCertificateRef*, CFDataRef*, SecKeyRef*, SecKeychainRef,
- const std::string&, const std::string& = "",
- const PasswordPromptPtr& = 0, int = 0);
+void loadCertificate(SecCertificateRef*, CFDataRef*, SecKeyRef*, SecKeychainRef, const std::string&,
+ const std::string& = "", const PasswordPromptPtr& = 0, int = 0);
-CFArrayRef loadCACertificates(const std::string&, const std::string& = "", const PasswordPromptPtr& = 0,
- int = 0);
-
-}
+CFArrayRef loadCACertificates(const std::string&, const std::string& = "", const PasswordPromptPtr& = 0, int = 0);
#endif
-namespace IceSSL
-{
+//
+// Read a file into memory buffer.
+//
+void readFile(const std::string&, std::vector<char>&);
//
-// Determine if a file or directory exists, with an optional default directory.
+// Determine if a file or directory exists, with an optional default
+// directory.
//
bool checkPath(std::string&, const std::string&, bool);
diff --git a/cpp/src/IceSSL/UtilF.h b/cpp/src/IceSSL/UtilF.h
deleted file mode 100644
index e44a5b00a4f..00000000000
--- a/cpp/src/IceSSL/UtilF.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-#ifndef ICE_SSL_UTIL_F_H
-#define ICE_SSL_UTIL_F_H
-
-#include <IceUtil/Shared.h>
-
-#include <Ice/Handle.h>
-
-#include <openssl/ssl.h>
-
-#ifndef OPENSSL_NO_DH
-namespace IceSSL
-{
-
-class DHParams;
-IceUtil::Shared* upCast(IceSSL::DHParams*);
-typedef IceInternal::Handle<DHParams> DHParamsPtr;
-
-}
-#endif
-
-#endif
diff --git a/cpp/src/IceUtil/.depend b/cpp/src/IceUtil/.depend
index 6428d3d5aaf..db2895f3265 100644
--- a/cpp/src/IceUtil/.depend
+++ b/cpp/src/IceUtil/.depend
@@ -20,3 +20,4 @@ Unicode$(OBJEXT): Unicode.cpp ../IceUtil/Unicode.h $(includedir)/IceUtil/Config.
MutexProtocol$(OBJEXT): MutexProtocol.cpp $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/Config.h
FileUtil$(OBJEXT): FileUtil.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/StringConverter.h
StringConverter$(OBJEXT): StringConverter.cpp $(includedir)/IceUtil/StringConverter.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/StringUtil.h ../IceUtil/Unicode.h
+SHA1$(OBJEXT): SHA1.cpp $(includedir)/IceUtil/SHA1.h $(includedir)/IceUtil/Config.h
diff --git a/cpp/src/IceUtil/.depend.mak b/cpp/src/IceUtil/.depend.mak
index 1670182391c..bfaf9740cd1 100644
--- a/cpp/src/IceUtil/.depend.mak
+++ b/cpp/src/IceUtil/.depend.mak
@@ -20,3 +20,4 @@ Unicode$(OBJEXT): Unicode.cpp ../IceUtil/Unicode.h "$(includedir)/IceUtil/Config
MutexProtocol$(OBJEXT): MutexProtocol.cpp "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/Config.h"
FileUtil$(OBJEXT): FileUtil.cpp "$(includedir)/IceUtil/DisableWarnings.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/StringConverter.h"
StringConverter$(OBJEXT): StringConverter.cpp "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/StringUtil.h" ../IceUtil/Unicode.h
+SHA1$(OBJEXT): SHA1.cpp "$(includedir)/IceUtil/SHA1.h" "$(includedir)/IceUtil/Config.h"
diff --git a/cpp/src/IceUtil/Makefile b/cpp/src/IceUtil/Makefile
index 0ff4e4e525b..f5571c56242 100644
--- a/cpp/src/IceUtil/Makefile
+++ b/cpp/src/IceUtil/Makefile
@@ -35,7 +35,8 @@ OBJS = ArgVector.o \
Unicode.o \
MutexProtocol.o \
FileUtil.o \
- StringConverter.o
+ StringConverter.o \
+ SHA1.o
SRCS = $(OBJS:.o=.cpp)
diff --git a/cpp/src/IceUtil/Makefile.mak b/cpp/src/IceUtil/Makefile.mak
index 799d2091f28..3d5a3de8ff4 100644
--- a/cpp/src/IceUtil/Makefile.mak
+++ b/cpp/src/IceUtil/Makefile.mak
@@ -35,7 +35,8 @@ OBJS = ArgVector.obj \
UUID.obj \
Unicode.obj \
MutexProtocol.obj \
- StringConverter.obj
+ StringConverter.obj \
+ SHA1.obj
SRCS = $(OBJS:.obj=.cpp)
diff --git a/cpp/src/IceUtil/SHA1.cpp b/cpp/src/IceUtil/SHA1.cpp
new file mode 100644
index 00000000000..eda08e35e38
--- /dev/null
+++ b/cpp/src/IceUtil/SHA1.cpp
@@ -0,0 +1,128 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <IceUtil/SHA1.h>
+
+#if defined(_WIN32) && !defined(ICE_OS_WINRT)
+# include <IceUtil/Exception.h>
+#endif
+
+using namespace std;
+using namespace IceUtil;
+
+#ifndef ICE_OS_WINRT
+# if defined(_WIN32)
+
+namespace
+{
+const int SHA_DIGEST_LENGTH = 20;
+}
+
+IceUtil::SHA1::SHA1() :
+ _ctx(0),
+ _hash(0)
+{
+ if(!CryptAcquireContext(&_ctx, 0, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
+ {
+ throw IceUtil::SyscallException(__FILE__, __LINE__, GetLastError());
+ }
+
+ if(!CryptCreateHash(_ctx, CALG_SHA1, 0, 0, &_hash))
+ {
+ throw IceUtil::SyscallException(__FILE__, __LINE__, GetLastError());
+ }
+}
+
+IceUtil::SHA1::~SHA1()
+{
+ if(_hash)
+ {
+ CryptDestroyHash(_hash);
+ }
+
+ if(_ctx)
+ {
+ CryptReleaseContext(_ctx, 0);
+ }
+}
+# elif defined(__APPLE__)
+IceUtil::SHA1::SHA1()
+{
+ CC_SHA1_Init(&_ctx);
+}
+# else
+IceUtil::SHA1::SHA1()
+{
+ SHA1_Init(&_ctx);
+}
+# endif
+
+void
+IceUtil::SHA1::update(const unsigned char* data, size_t length)
+{
+# if defined(_WIN32)
+ if(!CryptHashData(_hash, data, static_cast<DWORD>(length), 0))
+ {
+ throw IceUtil::SyscallException(__FILE__, __LINE__, GetLastError());
+ }
+# elif defined(__APPLE__)
+ CC_SHA1_Update(&_ctx, reinterpret_cast<const void*>(data), length);
+# else
+ SHA1_Update(&_ctx, reinterpret_cast<const void*>(data), length);
+# endif
+}
+
+void
+IceUtil::SHA1::finalize(vector<unsigned char>& md)
+{
+# if defined(_WIN32)
+ md.resize(SHA_DIGEST_LENGTH);
+ DWORD length = SHA_DIGEST_LENGTH;
+ if(!CryptGetHashParam(_hash, HP_HASHVAL, &md[0], &length, 0))
+ {
+ throw IceUtil::SyscallException(__FILE__, __LINE__, GetLastError());
+ }
+# elif defined(__APPLE__)
+ md.resize(CC_SHA1_DIGEST_LENGTH);
+ CC_SHA1_Final(&md[0], &_ctx);
+# else
+ md.resize(SHA_DIGEST_LENGTH);
+ SHA1_Final(&md[0], &_ctx);
+# endif
+}
+#endif
+
+void
+IceUtil::sha1(const unsigned char* data, size_t length, vector<unsigned char>& md)
+{
+#if defined(ICE_OS_WINRT)
+ auto dataA = ref new Platform::Array<unsigned char>(const_cast<unsigned char*>(&data[0]),
+ static_cast<unsigned int>(data.size()));
+ auto hasher = Windows::Security::Cryptography::Core::HashAlgorithmProvider::OpenAlgorithm("SHA1");
+ auto hashed = hasher->HashData(Windows::Security::Cryptography::CryptographicBuffer::CreateFromByteArray(dataA));
+ auto reader = ::Windows::Storage::Streams::DataReader::FromBuffer(hashed);
+ md.resize(reader->UnconsumedBufferLength);
+ if(!md.empty())
+ {
+ reader->ReadBytes(::Platform::ArrayReference<unsigned char>(&result[0],
+ static_cast<unsigned int>(result.size())));
+ }
+ return md;
+#elif defined(_WIN32)
+ SHA1 hasher;
+ hasher.update(data, length);
+ hasher.finalize(md);
+#elif defined(__APPLE__)
+ md.resize(CC_SHA1_DIGEST_LENGTH);
+ CC_SHA1(&data[0], length, &md[0]);
+#else
+ md.resize(SHA_DIGEST_LENGTH);
+ ::SHA1(&data[0], length, &md[0]);
+#endif
+}
diff --git a/cpp/src/IceWS/.depend b/cpp/src/IceWS/.depend
index f79518265a8..5ada30c5f1f 100644
--- a/cpp/src/IceWS/.depend
+++ b/cpp/src/IceWS/.depend
@@ -5,7 +5,7 @@ ConnectionInfo$(OBJEXT): ConnectionInfo.cpp $(includedir)/IceWS/ConnectionInfo.h
EndpointI$(OBJEXT): EndpointI.cpp ../IceWS/EndpointI.h ../Ice/EndpointI.h ../Ice/EndpointIF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/Version.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/IPEndpointIF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h ../Ice/ProtocolInstanceF.h ../IceWS/InstanceF.h $(includedir)/IceWS/EndpointInfo.h ../IceWS/AcceptorI.h $(includedir)/Ice/LoggerF.h ../Ice/Acceptor.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h ../IceWS/ConnectorI.h ../Ice/Connector.h ../IceWS/TransceiverI.h $(includedir)/IceWS/Plugin.h $(includedir)/Ice/Plugin.h ../IceWS/Util.h ../Ice/Transceiver.h ../IceWS/Instance.h ../Ice/ProtocolInstance.h $(includedir)/Ice/LocalException.h ../Ice/IPEndpointI.h ../Ice/HashUtil.h
Instance$(OBJEXT): Instance.cpp ../IceWS/Instance.h ../IceWS/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceWS/EndpointI.h ../Ice/EndpointI.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/BuiltinSequences.h ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h $(includedir)/IceWS/EndpointInfo.h ../Ice/ProtocolPluginFacade.h ../Ice/ProtocolPluginFacadeF.h
PluginI$(OBJEXT): PluginI.cpp ../IceWS/PluginI.h $(includedir)/IceWS/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h ../IceWS/InstanceF.h $(includedir)/Ice/CommunicatorF.h ../IceWS/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceWS/EndpointI.h ../Ice/EndpointI.h $(includedir)/Ice/Endpoint.h ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h $(includedir)/IceWS/EndpointInfo.h ../Ice/ProtocolPluginFacade.h ../Ice/ProtocolPluginFacadeF.h
-TransceiverI$(OBJEXT): TransceiverI.cpp ../IceWS/TransceiverI.h ../IceWS/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/IceWS/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h ../IceWS/Util.h ../Ice/Transceiver.h ../Ice/TransceiverF.h $(includedir)/Ice/ConnectionF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/IceWS/EndpointInfo.h $(includedir)/Ice/Endpoint.h $(includedir)/IceWS/ConnectionInfo.h $(includedir)/Ice/Connection.h ../IceWS/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h ../Ice/Base64.h $(includedir)/IceUtil/Random.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/DisableWarnings.h
+TransceiverI$(OBJEXT): TransceiverI.cpp ../IceWS/TransceiverI.h ../IceWS/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/IceWS/Plugin.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/BuiltinSequences.h ../IceWS/Util.h ../Ice/Transceiver.h ../Ice/TransceiverF.h $(includedir)/Ice/ConnectionF.h ../Ice/Network.h ../Ice/NetworkF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/IceWS/EndpointInfo.h $(includedir)/Ice/Endpoint.h $(includedir)/IceWS/ConnectionInfo.h $(includedir)/Ice/Connection.h ../IceWS/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h ../Ice/Base64.h $(includedir)/IceUtil/Random.h $(includedir)/IceUtil/SHA1.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/DisableWarnings.h
Util$(OBJEXT): Util.cpp $(includedir)/IceUtil/Config.h ../IceWS/Util.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/DisableWarnings.h
$(HDIR)/EndpointInfo.h EndpointInfo.cpp: $(slicedir)/IceWS/EndpointInfo.ice $(slicedir)/Ice/Endpoint.ice $(slicedir)/Ice/Version.ice $(slicedir)/Ice/BuiltinSequences.ice $(slicedir)/Ice/EndpointF.ice $(SLICE2CPP) $(SLICEPARSERLIB)
$(HDIR)/ConnectionInfo.h ConnectionInfo.cpp: $(slicedir)/IceWS/ConnectionInfo.ice $(slicedir)/Ice/Connection.ice $(slicedir)/Ice/ObjectAdapterF.ice $(slicedir)/Ice/Identity.ice $(slicedir)/Ice/Endpoint.ice $(slicedir)/Ice/Version.ice $(slicedir)/Ice/BuiltinSequences.ice $(slicedir)/Ice/EndpointF.ice $(SLICE2CPP) $(SLICEPARSERLIB)
diff --git a/cpp/src/IceWS/.depend.mak b/cpp/src/IceWS/.depend.mak
index f9b7a4ed0e7..a7412c1823f 100644
--- a/cpp/src/IceWS/.depend.mak
+++ b/cpp/src/IceWS/.depend.mak
@@ -5,7 +5,7 @@ ConnectionInfo$(OBJEXT): ConnectionInfo.cpp "$(includedir)/IceWS/ConnectionInfo.
EndpointI$(OBJEXT): EndpointI.cpp ../IceWS/EndpointI.h ../Ice/EndpointI.h ../Ice/EndpointIF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/Version.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/IPEndpointIF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h ../Ice/ProtocolInstanceF.h ../IceWS/InstanceF.h "$(includedir)/IceWS/EndpointInfo.h" ../IceWS/AcceptorI.h "$(includedir)/Ice/LoggerF.h" ../Ice/Acceptor.h ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" ../IceWS/ConnectorI.h ../Ice/Connector.h ../IceWS/TransceiverI.h "$(includedir)/IceWS/Plugin.h" "$(includedir)/Ice/Plugin.h" ../IceWS/Util.h ../Ice/Transceiver.h ../IceWS/Instance.h ../Ice/ProtocolInstance.h "$(includedir)/Ice/LocalException.h" ../Ice/IPEndpointI.h ../Ice/HashUtil.h
Instance$(OBJEXT): Instance.cpp ../IceWS/Instance.h ../IceWS/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceWS/EndpointI.h ../Ice/EndpointI.h "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/BuiltinSequences.h" ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h "$(includedir)/IceWS/EndpointInfo.h" ../Ice/ProtocolPluginFacade.h ../Ice/ProtocolPluginFacadeF.h
PluginI$(OBJEXT): PluginI.cpp ../IceWS/PluginI.h "$(includedir)/IceWS/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" ../IceWS/InstanceF.h "$(includedir)/Ice/CommunicatorF.h" ../IceWS/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h ../Ice/NetworkF.h ../IceWS/EndpointI.h ../Ice/EndpointI.h "$(includedir)/Ice/Endpoint.h" ../Ice/TransceiverF.h ../Ice/AcceptorF.h ../Ice/EndpointFactory.h ../Ice/EndpointFactoryF.h "$(includedir)/IceWS/EndpointInfo.h" ../Ice/ProtocolPluginFacade.h ../Ice/ProtocolPluginFacadeF.h
-TransceiverI$(OBJEXT): TransceiverI.cpp ../IceWS/TransceiverI.h ../IceWS/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceWS/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" ../IceWS/Util.h ../Ice/Transceiver.h ../Ice/TransceiverF.h "$(includedir)/Ice/ConnectionF.h" ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/IceWS/EndpointInfo.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/IceWS/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" ../IceWS/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LocalException.h" ../Ice/Base64.h "$(includedir)/IceUtil/Random.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/DisableWarnings.h"
+TransceiverI$(OBJEXT): TransceiverI.cpp ../IceWS/TransceiverI.h ../IceWS/InstanceF.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Handle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceWS/Plugin.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/BuiltinSequences.h" ../IceWS/Util.h ../Ice/Transceiver.h ../Ice/TransceiverF.h "$(includedir)/Ice/ConnectionF.h" ../Ice/Network.h ../Ice/NetworkF.h "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/IceWS/EndpointInfo.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/IceWS/ConnectionInfo.h" "$(includedir)/Ice/Connection.h" ../IceWS/Instance.h ../Ice/ProtocolInstance.h ../Ice/ProtocolInstanceF.h ../Ice/EndpointIF.h ../Ice/ConnectorF.h ../Ice/IPEndpointIF.h "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LocalException.h" ../Ice/Base64.h "$(includedir)/IceUtil/Random.h" "$(includedir)/IceUtil/SHA1.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/DisableWarnings.h"
Util$(OBJEXT): Util.cpp "$(includedir)/IceUtil/Config.h" ../IceWS/Util.h "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Object.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/IceUtil/StringUtil.h" "$(includedir)/IceUtil/DisableWarnings.h"
$(HDIR)\EndpointInfo.h EndpointInfo.cpp: "$(slicedir)/IceWS/EndpointInfo.ice" "$(slicedir)/Ice/Endpoint.ice" "$(slicedir)/Ice/Version.ice" "$(slicedir)/Ice/BuiltinSequences.ice" "$(slicedir)/Ice/EndpointF.ice" "$(SLICE2CPP)" "$(SLICEPARSERLIB)"
$(HDIR)\ConnectionInfo.h ConnectionInfo.cpp: "$(slicedir)/IceWS/ConnectionInfo.ice" "$(slicedir)/Ice/Connection.ice" "$(slicedir)/Ice/ObjectAdapterF.ice" "$(slicedir)/Ice/Identity.ice" "$(slicedir)/Ice/Endpoint.ice" "$(slicedir)/Ice/Version.ice" "$(slicedir)/Ice/BuiltinSequences.ice" "$(slicedir)/Ice/EndpointF.ice" "$(SLICE2CPP)" "$(SLICEPARSERLIB)"
diff --git a/cpp/src/IceWS/Makefile b/cpp/src/IceWS/Makefile
index 3e961791839..b1d034552c8 100644
--- a/cpp/src/IceWS/Makefile
+++ b/cpp/src/IceWS/Makefile
@@ -38,7 +38,7 @@ include $(top_srcdir)/config/Make.rules
CPPFLAGS := -I.. $(CPPFLAGS) -DICE_WS_API_EXPORTS $(OPENSSL_FLAGS)
SLICE2CPPFLAGS := --ice --include-dir IceWS --dll-export ICE_WS_API $(SLICE2CPPFLAGS)
-LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(OPENSSL_LIBS) $(CXXLIBS)
+LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(ICEWS_OS_LIBS) $(CXXLIBS)
ifeq ($(STATICLIBS),yes)
$(libdir)/$(LIBNAME): $(OBJS)
diff --git a/cpp/src/IceWS/TransceiverI.cpp b/cpp/src/IceWS/TransceiverI.cpp
index 3c4f8ad5127..6f1a287ea9a 100644
--- a/cpp/src/IceWS/TransceiverI.cpp
+++ b/cpp/src/IceWS/TransceiverI.cpp
@@ -18,6 +18,7 @@
#include <Ice/LocalException.h>
#include <Ice/Base64.h>
#include <IceUtil/Random.h>
+#include <IceUtil/SHA1.h>
#include <IceUtil/StringUtil.h>
#include <IceUtil/DisableWarnings.h>
@@ -589,9 +590,16 @@ IceWS::TransceiverI::read(Buffer& buf, bool& hasMoreData)
}
while(postRead(buf));
- hasMoreData = _readI < _readBuffer.i;
-
- s = buf.i == buf.b.end() ? SocketOperationNone : SocketOperationRead;
+ if(buf.i == buf.b.end())
+ {
+ hasMoreData |= _readI < _readBuffer.i;
+ s = SocketOperationNone;
+ }
+ else
+ {
+ hasMoreData = false;
+ s = SocketOperationRead;
+ }
if(((_state == StateClosingRequestPending && !_closingInitiator) ||
(_state == StateClosingResponsePending && _closingInitiator) ||
@@ -723,18 +731,18 @@ IceWS::TransceiverI::startRead(Buffer& buf)
}
void
-IceWS::TransceiverI::finishRead(Buffer& buf)
+IceWS::TransceiverI::finishRead(Buffer& buf, bool& hasMoreData)
{
_readPending = false;
if(_state < StateOpened)
{
if(_state < StateConnected)
{
- _delegate->finishRead(buf);
+ _delegate->finishRead(buf, hasMoreData);
}
else
{
- _delegate->finishRead(_readBuffer);
+ _delegate->finishRead(_readBuffer, hasMoreData);
}
return;
}
@@ -745,11 +753,11 @@ IceWS::TransceiverI::finishRead(Buffer& buf)
}
else if(_readState == ReadStatePayload)
{
- _delegate->finishRead(buf);
+ _delegate->finishRead(buf, hasMoreData);
}
else
{
- _delegate->finishRead(_readBuffer);
+ _delegate->finishRead(_readBuffer, hasMoreData);
}
postRead(buf);
}
@@ -807,7 +815,9 @@ IceWS::TransceiverI::TransceiverI(const InstancePtr& instance, const Transceiver
_writeBuffer(0),
_writeBufferSize(1024),
_readPending(false),
- _writePending(false)
+ _writePending(false),
+ _closingInitiator(false),
+ _closingReason(CLOSURE_NORMAL)
{
//
// For client connections, the sent frame payload must be
@@ -841,7 +851,9 @@ IceWS::TransceiverI::TransceiverI(const InstancePtr& instance, const Transceiver
_writeBuffer(0),
_writeBufferSize(1024),
_readPending(false),
- _writePending(false)
+ _writePending(false),
+ _closingInitiator(false),
+ _closingReason(CLOSURE_NORMAL)
{
//
// Write and read buffer size must be large enough to hold the frame header!
@@ -973,8 +985,8 @@ IceWS::TransceiverI::handleRequest(Buffer& responseBuffer)
//
out << "Sec-WebSocket-Accept: ";
string input = key + _wsUUID;
- vector<unsigned char> v(&input[0], &input[0] + input.size());
- vector<unsigned char> hash = calcSHA1(v);
+ vector<unsigned char> hash;
+ IceUtil::sha1(reinterpret_cast<const unsigned char*>(&input[0]), input.size(), hash);
out << IceInternal::Base64::encode(hash) << "\r\n" << "\r\n"; // EOM
string str = out.str();
@@ -1071,8 +1083,8 @@ IceWS::TransceiverI::handleResponse()
throw WebSocketException("missing value for Sec-WebSocket-Accept");
}
string input = _key + _wsUUID;
- vector<unsigned char> v(&input[0], &input[0] + input.size());
- vector<unsigned char> hash = calcSHA1(v);
+ vector<unsigned char> hash;
+ IceUtil::sha1(reinterpret_cast<const unsigned char*>(&input[0]), input.size(), hash);
if(val != IceInternal::Base64::encode(hash))
{
throw WebSocketException("invalid value `" + val + "' for Sec-WebSocket-Accept");
diff --git a/cpp/src/IceWS/TransceiverI.h b/cpp/src/IceWS/TransceiverI.h
index cba5439b8b5..f7e1ecea6cd 100644
--- a/cpp/src/IceWS/TransceiverI.h
+++ b/cpp/src/IceWS/TransceiverI.h
@@ -45,7 +45,7 @@ public:
virtual bool startWrite(IceInternal::Buffer&);
virtual void finishWrite(IceInternal::Buffer&);
virtual void startRead(IceInternal::Buffer&);
- virtual void finishRead(IceInternal::Buffer&);
+ virtual void finishRead(IceInternal::Buffer&, bool&);
#endif
virtual std::string protocol() const;
virtual std::string toString() const;
@@ -133,12 +133,12 @@ private:
unsigned char _writeMask[4];
size_t _writePayloadLength;
- bool _closingInitiator;
- int _closingReason;
-
bool _readPending;
bool _writePending;
+ bool _closingInitiator;
+ int _closingReason;
+
std::vector<Ice::Byte> _pingPayload;
};
typedef IceUtil::Handle<TransceiverI> TransceiverIPtr;
diff --git a/cpp/src/IceWS/Util.cpp b/cpp/src/IceWS/Util.cpp
index 16820ca0999..fc4388aff44 100644
--- a/cpp/src/IceWS/Util.cpp
+++ b/cpp/src/IceWS/Util.cpp
@@ -13,40 +13,12 @@
#include <Ice/LocalException.h>
#include <IceUtil/StringUtil.h>
-#ifndef ICE_OS_WINRT
-# include <openssl/err.h>
-# include <openssl/sha.h>
-#endif
-
#include <IceUtil/DisableWarnings.h>
using namespace std;
using namespace Ice;
using namespace IceWS;
-vector<unsigned char>
-IceWS::calcSHA1(const vector<unsigned char>& data)
-{
-#ifndef ICE_OS_WINRT
- vector<unsigned char> hash(SHA_DIGEST_LENGTH);
- ::SHA1(&data[0], static_cast<unsigned long>(data.size()), &hash[0]);
- return hash;
-#else
- auto dataA = ref new Platform::Array<unsigned char>(const_cast<unsigned char*>(&data[0]),
- static_cast<unsigned int>(data.size()));
- auto hasher = Windows::Security::Cryptography::Core::HashAlgorithmProvider::OpenAlgorithm("SHA1");
- auto hashed = hasher->HashData(Windows::Security::Cryptography::CryptographicBuffer::CreateFromByteArray(dataA));
- auto reader = ::Windows::Storage::Streams::DataReader::FromBuffer(hashed);
- std::vector<unsigned char> result(reader->UnconsumedBufferLength);
- if(!result.empty())
- {
- reader->ReadBytes(::Platform::ArrayReference<unsigned char>(&result[0],
- static_cast<unsigned int>(result.size())));
- }
- return result;
-#endif
-}
-
WebSocketException::WebSocketException(const string& r) :
reason(r)
{
diff --git a/cpp/test/Ice/background/AllTests.cpp b/cpp/test/Ice/background/AllTests.cpp
index 6d67466ef30..92b355a1321 100644
--- a/cpp/test/Ice/background/AllTests.cpp
+++ b/cpp/test/Ice/background/AllTests.cpp
@@ -73,7 +73,8 @@ public:
{
}
- void noResponse()
+ void
+ noResponse()
{
test(false);
}
@@ -737,7 +738,8 @@ validationTests(const ConfigurationPtr& configuration,
configuration->readException(0);
}
- if(background->ice_getCommunicator()->getProperties()->getProperty("Ice.Default.Protocol") != "test-ssl")
+ if(background->ice_getCommunicator()->getProperties()->getProperty("Ice.Default.Protocol") != "test-ssl" &&
+ background->ice_getCommunicator()->getProperties()->getProperty("Ice.Default.Protocol") != "test-wss")
{
try
{
@@ -803,7 +805,8 @@ validationTests(const ConfigurationPtr& configuration,
test(r->isCompleted() && r2->isCompleted());
#if defined(ICE_USE_IOCP) || defined(ICE_USE_CFSTREAM)
- if(background->ice_getCommunicator()->getProperties()->getProperty("Ice.Default.Protocol") != "test-ssl")
+ if(background->ice_getCommunicator()->getProperties()->getProperty("Ice.Default.Protocol") != "test-ssl" &&
+ background->ice_getCommunicator()->getProperties()->getProperty("Ice.Default.Protocol") != "test-wss")
{
#endif
try
@@ -1059,7 +1062,8 @@ readWriteTests(const ConfigurationPtr& configuration,
configuration->readReady(true);
#if defined(ICE_USE_IOCP) || defined(ICE_USE_CFSTREAM)
- if(background->ice_getCommunicator()->getProperties()->getProperty("Ice.Default.Protocol") != "test-ssl")
+ if(background->ice_getCommunicator()->getProperties()->getProperty("Ice.Default.Protocol") != "test-ssl" &&
+ background->ice_getCommunicator()->getProperties()->getProperty("Ice.Default.Protocol") != "test-wss")
{
#endif
try
diff --git a/cpp/test/Ice/background/Transceiver.cpp b/cpp/test/Ice/background/Transceiver.cpp
index 47b27c843d9..da862c9869b 100644
--- a/cpp/test/Ice/background/Transceiver.cpp
+++ b/cpp/test/Ice/background/Transceiver.cpp
@@ -119,7 +119,7 @@ Transceiver::read(IceInternal::Buffer& buf, bool& moreData)
_readBufferPos += available;
buf.i += available;
}
- moreData = _readBufferPos < _readBuffer.i;
+ moreData |= _readBufferPos < _readBuffer.i;
return IceInternal::SocketOperationNone;
}
else
@@ -147,7 +147,7 @@ void
Transceiver::startRead(IceInternal::Buffer& buf)
{
_configuration->checkReadException();
- if(_buffered)
+ if(_buffered && _initialized)
{
size_t available = _readBuffer.i - _readBufferPos;
if(available > 0)
@@ -182,14 +182,14 @@ Transceiver::startRead(IceInternal::Buffer& buf)
}
void
-Transceiver::finishRead(IceInternal::Buffer& buf)
+Transceiver::finishRead(IceInternal::Buffer& buf, bool& hasMoreData)
{
_configuration->checkReadException();
- if(_buffered)
+ if(_buffered && _initialized)
{
if(buf.i != buf.b.end())
{
- _transceiver->finishRead(_readBuffer);
+ _transceiver->finishRead(_readBuffer, hasMoreData);
size_t requested = buf.b.end() - buf.i;
size_t available = _readBuffer.i - _readBufferPos;
@@ -208,7 +208,7 @@ Transceiver::finishRead(IceInternal::Buffer& buf)
}
else
{
- _transceiver->finishRead(buf);
+ _transceiver->finishRead(buf, hasMoreData);
}
}
#endif
diff --git a/cpp/test/Ice/background/Transceiver.h b/cpp/test/Ice/background/Transceiver.h
index 407e347712a..1da179ad6df 100644
--- a/cpp/test/Ice/background/Transceiver.h
+++ b/cpp/test/Ice/background/Transceiver.h
@@ -27,7 +27,7 @@ public:
virtual bool startWrite(IceInternal::Buffer&);
virtual void finishWrite(IceInternal::Buffer&);
virtual void startRead(IceInternal::Buffer&);
- virtual void finishRead(IceInternal::Buffer&);
+ virtual void finishRead(IceInternal::Buffer&, bool&);
#endif
virtual std::string protocol() const;
virtual std::string toString() const;
diff --git a/cpp/test/Ice/timeout/AllTests.cpp b/cpp/test/Ice/timeout/AllTests.cpp
index 35b83246cb7..c5be82c13d1 100644
--- a/cpp/test/Ice/timeout/AllTests.cpp
+++ b/cpp/test/Ice/timeout/AllTests.cpp
@@ -96,7 +96,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
// Expect ConnectTimeoutException.
//
TimeoutPrx to = TimeoutPrx::uncheckedCast(obj->ice_timeout(250));
- to->holdAdapter(500);
+ to->holdAdapter(1000);
to->ice_getConnection()->close(true); // Force a reconnect.
try
{
@@ -127,7 +127,8 @@ allTests(const Ice::CommunicatorPtr& communicator)
}
cout << "ok" << endl;
- ByteSeq seq(10000000);
+ // The sequence needs to be large enough to fill the write/recv buffers
+ ByteSeq seq(20000000);
cout << "testing connection timeout... " << flush;
{
diff --git a/cpp/test/Ice/timeout/Client.cpp b/cpp/test/Ice/timeout/Client.cpp
index d0df0c07416..203ac9ce2cf 100644
--- a/cpp/test/Ice/timeout/Client.cpp
+++ b/cpp/test/Ice/timeout/Client.cpp
@@ -50,7 +50,7 @@ main(int argc, char* argv[])
// We need to send messages large enough to cause the transport
// buffers to fill up.
//
- initData.properties->setProperty("Ice.MessageSizeMax", "10000");
+ initData.properties->setProperty("Ice.MessageSizeMax", "20000");
communicator = Ice::initialize(argc, argv, initData);
status = run(argc, argv, communicator);
diff --git a/cpp/test/IceSSL/certs/3bb63662.0 b/cpp/test/IceSSL/certs/3bb63662.0
index f63b05fd929..770241b9d74 100644
--- a/cpp/test/IceSSL/certs/3bb63662.0
+++ b/cpp/test/IceSSL/certs/3bb63662.0
@@ -1,22 +1,22 @@
-----BEGIN CERTIFICATE-----
-MIIDtTCCAx6gAwIBAgIJAMUVxdyE24rJMA0GCSqGSIb3DQEBBAUAMIGZMQswCQYD
+MIIDtTCCAx6gAwIBAgIJAOOgyMo5anfPMA0GCSqGSIb3DQEBCwUAMIGZMQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBH
YXJkZW5zMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNlMRgwFgYD
VQQDEw9aZXJvQyBUZXN0IENBIDIxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2Mu
-Y29tMB4XDTEwMDMxNzE0NTAzM1oXDTIwMDMxNDE0NTAzM1owgZkxCzAJBgNVBAYT
+Y29tMB4XDTE0MDcxMTE3MTczNVoXDTI0MDcwODE3MTczNVowgZkxCzAJBgNVBAYT
AlVTMRAwDgYDVQQIEwdGbG9yaWRhMRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRl
bnMxFDASBgNVBAoTC1plcm9DLCBJbmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMT
D1plcm9DIFRlc3QgQ0EgMjEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20w
-gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALaAI4V1BCJT/7basy1ws8sf7Am0
-T+avRuxr9/7QZ17F6J4rFW6SRYvjw2z03eN6+YuZBaocozUxt9TkI0sDhc1+Dr7p
-j7mj+NoGjjSb7AMwQWu6rLEwD1SRCdewTMOQQ1ntHrCm5thhFxyahqhEXipBdfET
-/26f+QZphtaTCSxFAgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
-FClxCfTPV07zPCt/Sc5Pf2RFzl8FMIHOBgNVHSMEgcYwgcOAFClxCfTPV07zPCt/
-Sc5Pf2RFzl8FoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
+gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANsP1iadrxeJEmsiCP8px+rt6k7I
+LMsNVfQpStH7LMnLF4vTiqgLp5pWxMySPDwYqt4f0apl7klAL2y+GWxlwUgqxs1y
+goYPEd09q68T1OxUKqnDrBO5EB10p6LGiphVNhUg2xu2F6RnWYa6iUqk44QkyOV/
+ZGce2rGdaMHHANh/AgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
+FOaiY5WPjE1/ejxiGsMqulO7wr+xMIHOBgNVHSMEgcYwgcOAFOaiY5WPjE1/ejxi
+GsMqulO7wr+xoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
YTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBHYXJkZW5zMRQwEgYDVQQKEwtaZXJvQywg
SW5jLjEMMAoGA1UECxMDSWNlMRgwFgYDVQQDEw9aZXJvQyBUZXN0IENBIDIxHTAb
-BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkAxRXF3ITbiskwDQYJKoZIhvcN
-AQEEBQADgYEAf96l4YCA6Q/CloSoSZdnxVRpUUb8OlyEISRNYVef51KXUjeQ8Kj1
-kza7n/RcCWUS0uaAqAiOEINc4JnQYNNSP+2BXcBqd0imwBOpS+itW0fmGyWFiBaA
-mtPmLuRxEl7sYfP4KTafLLLOan3pegeoz7g4OqHMsmG30fLgU+CcWBQ=
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkA46DIyjlqd88wDQYJKoZIhvcN
+AQELBQADgYEAk3P/0Ug+PySNOmoWLWbsiUTAWe6jfH6gkIJe7rbzjXpigeq2EVkq
+UHq53xhVnKtbSQF3P1l7OLEeEgqNaOG8tLzqMs2HXia5CDOIY1rQG+ZFdGZxkXmR
+lG/G9jfYRawlFTOQk9i5a1XbA19bX2mIEo9wjIXr0EgbIC+0cGx8O/Q=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/86907d1c.0 b/cpp/test/IceSSL/certs/86907d1c.0
index f63b05fd929..770241b9d74 100644
--- a/cpp/test/IceSSL/certs/86907d1c.0
+++ b/cpp/test/IceSSL/certs/86907d1c.0
@@ -1,22 +1,22 @@
-----BEGIN CERTIFICATE-----
-MIIDtTCCAx6gAwIBAgIJAMUVxdyE24rJMA0GCSqGSIb3DQEBBAUAMIGZMQswCQYD
+MIIDtTCCAx6gAwIBAgIJAOOgyMo5anfPMA0GCSqGSIb3DQEBCwUAMIGZMQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBH
YXJkZW5zMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNlMRgwFgYD
VQQDEw9aZXJvQyBUZXN0IENBIDIxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2Mu
-Y29tMB4XDTEwMDMxNzE0NTAzM1oXDTIwMDMxNDE0NTAzM1owgZkxCzAJBgNVBAYT
+Y29tMB4XDTE0MDcxMTE3MTczNVoXDTI0MDcwODE3MTczNVowgZkxCzAJBgNVBAYT
AlVTMRAwDgYDVQQIEwdGbG9yaWRhMRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRl
bnMxFDASBgNVBAoTC1plcm9DLCBJbmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMT
D1plcm9DIFRlc3QgQ0EgMjEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20w
-gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALaAI4V1BCJT/7basy1ws8sf7Am0
-T+avRuxr9/7QZ17F6J4rFW6SRYvjw2z03eN6+YuZBaocozUxt9TkI0sDhc1+Dr7p
-j7mj+NoGjjSb7AMwQWu6rLEwD1SRCdewTMOQQ1ntHrCm5thhFxyahqhEXipBdfET
-/26f+QZphtaTCSxFAgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
-FClxCfTPV07zPCt/Sc5Pf2RFzl8FMIHOBgNVHSMEgcYwgcOAFClxCfTPV07zPCt/
-Sc5Pf2RFzl8FoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
+gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANsP1iadrxeJEmsiCP8px+rt6k7I
+LMsNVfQpStH7LMnLF4vTiqgLp5pWxMySPDwYqt4f0apl7klAL2y+GWxlwUgqxs1y
+goYPEd09q68T1OxUKqnDrBO5EB10p6LGiphVNhUg2xu2F6RnWYa6iUqk44QkyOV/
+ZGce2rGdaMHHANh/AgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
+FOaiY5WPjE1/ejxiGsMqulO7wr+xMIHOBgNVHSMEgcYwgcOAFOaiY5WPjE1/ejxi
+GsMqulO7wr+xoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
YTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBHYXJkZW5zMRQwEgYDVQQKEwtaZXJvQywg
SW5jLjEMMAoGA1UECxMDSWNlMRgwFgYDVQQDEw9aZXJvQyBUZXN0IENBIDIxHTAb
-BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkAxRXF3ITbiskwDQYJKoZIhvcN
-AQEEBQADgYEAf96l4YCA6Q/CloSoSZdnxVRpUUb8OlyEISRNYVef51KXUjeQ8Kj1
-kza7n/RcCWUS0uaAqAiOEINc4JnQYNNSP+2BXcBqd0imwBOpS+itW0fmGyWFiBaA
-mtPmLuRxEl7sYfP4KTafLLLOan3pegeoz7g4OqHMsmG30fLgU+CcWBQ=
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkA46DIyjlqd88wDQYJKoZIhvcN
+AQELBQADgYEAk3P/0Ug+PySNOmoWLWbsiUTAWe6jfH6gkIJe7rbzjXpigeq2EVkq
+UHq53xhVnKtbSQF3P1l7OLEeEgqNaOG8tLzqMs2HXia5CDOIY1rQG+ZFdGZxkXmR
+lG/G9jfYRawlFTOQk9i5a1XbA19bX2mIEo9wjIXr0EgbIC+0cGx8O/Q=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_dsa_ca1.pfx b/cpp/test/IceSSL/certs/c_dsa_ca1.pfx
new file mode 100644
index 00000000000..21b62620c2e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_dsa_ca1.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_dsa_nopass_ca1_priv.pem b/cpp/test/IceSSL/certs/c_dsa_nopass_ca1_priv.pem
index a7108da3c2f..13ae5e8ac41 100644
--- a/cpp/test/IceSSL/certs/c_dsa_nopass_ca1_priv.pem
+++ b/cpp/test/IceSSL/certs/c_dsa_nopass_ca1_priv.pem
@@ -1,9 +1,9 @@
-----BEGIN PRIVATE KEY-----
-MIIBSgIBADCCASsGByqGSM44BAEwggEeAoGBAMKkmY+ulRg+rL4f3aU777ZTI+g2
-cTz8XD+sNDwxVSBZOhL+PemltYpMQBd4jTDEZzYhue+ybFm34SNGgVc79a8zpJ4l
-58MbiO4BtrKMC6pBD1aKj9qIw/4PNmAUETdBMdAYtv8mc3mu9cKgu4Mj8QG7olEc
-b+BvfUMIxxm/KeRLAhUA8w0Jb9OJ8A59+ZpiwTwXAX4WdOUCgYBeIif8AfJYANdo
-89NInffnnT0FSgkhF9+TrGWT3bNtT2tp6fKlh6f2N8SFxe14bcL6LDAv5TeLtpi2
-GXNqjKg/gcKNo1/WQpB1bbICDPKWq48YwVi/mIi2kgZr1AdFj9/a8HemnlXcBRSK
-GvBegDgG0+M+bQub7wCyROxQYjDVrwQWAhRb23V5PhUzzFToWqZ1MH9O9kXBgw==
+MIIBSgIBADCCASsGByqGSM44BAEwggEeAoGBAKAeWKhMAYp5sWH5rsmokCackilB
+9lCSqGZ8UoBX5YhFZovv/QWqr1MhcnBbLgAFvg1tS6RXuJcl2xnddUhQ7DcgVxpo
+3Pn2Mh9H0o4GLLJRDfqGOegyD2kWlFx8wNxEn/9rLg15zGv/wY218S3spaSqFeNV
+k46daWFAo/SwNalxAhUAsBYQGKVHx/hqE7DhOwgRkiGwMOkCgYAN6C5PuxXOQ5yj
+0UdNeOFDuHVLip2H1nnuMQImSCECMp+eiidSsWcg4K0otPwvNt31i2WBWEGv0WLw
+1+ECNbHi8t1uo+oseMvdKk/l4uvWAja7diiFH4PUmOlfV/pfcYI3vkQxtv5DnpOR
+KvkSwO3BDcEUe9tTUvp6AOMHByqz/QQWAhQ9Cy4VqKZybc57V7Ous51rRB6wbQ==
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_dsa_nopass_ca1_pub.pem b/cpp/test/IceSSL/certs/c_dsa_nopass_ca1_pub.pem
index 898ec38f696..04302f8e292 100644
--- a/cpp/test/IceSSL/certs/c_dsa_nopass_ca1_pub.pem
+++ b/cpp/test/IceSSL/certs/c_dsa_nopass_ca1_pub.pem
@@ -2,93 +2,93 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:34 2010 GMT
- Not After : Mar 14 14:50:34 2020 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
+ Not After : Jul 8 17:17:36 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Client
Subject Public Key Info:
Public Key Algorithm: dsaEncryption
pub:
- 00:86:b1:4a:aa:7c:c3:5a:ad:87:2f:7d:39:c7:3f:
- 6e:68:6e:03:c1:7d:c6:64:6d:a3:87:04:c4:4c:dd:
- bb:0b:c3:21:a8:91:c3:28:44:3a:44:91:6a:3f:79:
- bd:a2:e0:d7:01:45:d7:bb:0a:ab:85:10:92:d7:24:
- a4:82:85:f8:56:f8:6d:e4:ee:bb:f1:68:f6:5f:5b:
- 11:63:95:e7:19:ae:51:7f:ce:01:af:17:81:dd:29:
- 0d:40:6f:60:d4:2f:fe:44:99:ad:65:03:33:5b:b5:
- b2:13:2a:80:e4:53:7b:5e:2e:29:b9:f0:18:0f:af:
- fe:1c:08:e3:15:be:84:4b:cd
+ 3c:0a:93:23:46:4f:28:62:e2:88:0f:9c:c7:7a:1d:
+ bd:7a:3e:3f:6f:f7:ff:7b:21:0a:ea:bd:c1:bd:d7:
+ e4:86:6e:53:f8:4f:84:90:63:ad:71:f7:8a:0c:a8:
+ c5:e8:0b:ed:25:68:8e:f6:3b:3b:35:c2:0e:bb:e2:
+ 28:dc:6b:32:0e:ce:9a:e1:d5:a7:c0:48:b3:47:96:
+ 30:8b:5d:53:c8:1d:52:02:8f:3f:22:76:b4:e2:e6:
+ c3:c9:02:8c:77:c0:b4:35:e6:8b:eb:27:a8:3c:68:
+ 43:8c:6a:42:7b:44:fb:e8:44:4d:5e:10:07:e2:da:
+ 55:43:cb:a4:d0:cf:03:e5
P:
- 00:c2:a4:99:8f:ae:95:18:3e:ac:be:1f:dd:a5:3b:
- ef:b6:53:23:e8:36:71:3c:fc:5c:3f:ac:34:3c:31:
- 55:20:59:3a:12:fe:3d:e9:a5:b5:8a:4c:40:17:78:
- 8d:30:c4:67:36:21:b9:ef:b2:6c:59:b7:e1:23:46:
- 81:57:3b:f5:af:33:a4:9e:25:e7:c3:1b:88:ee:01:
- b6:b2:8c:0b:aa:41:0f:56:8a:8f:da:88:c3:fe:0f:
- 36:60:14:11:37:41:31:d0:18:b6:ff:26:73:79:ae:
- f5:c2:a0:bb:83:23:f1:01:bb:a2:51:1c:6f:e0:6f:
- 7d:43:08:c7:19:bf:29:e4:4b
+ 00:a0:1e:58:a8:4c:01:8a:79:b1:61:f9:ae:c9:a8:
+ 90:26:9c:92:29:41:f6:50:92:a8:66:7c:52:80:57:
+ e5:88:45:66:8b:ef:fd:05:aa:af:53:21:72:70:5b:
+ 2e:00:05:be:0d:6d:4b:a4:57:b8:97:25:db:19:dd:
+ 75:48:50:ec:37:20:57:1a:68:dc:f9:f6:32:1f:47:
+ d2:8e:06:2c:b2:51:0d:fa:86:39:e8:32:0f:69:16:
+ 94:5c:7c:c0:dc:44:9f:ff:6b:2e:0d:79:cc:6b:ff:
+ c1:8d:b5:f1:2d:ec:a5:a4:aa:15:e3:55:93:8e:9d:
+ 69:61:40:a3:f4:b0:35:a9:71
Q:
- 00:f3:0d:09:6f:d3:89:f0:0e:7d:f9:9a:62:c1:3c:
- 17:01:7e:16:74:e5
+ 00:b0:16:10:18:a5:47:c7:f8:6a:13:b0:e1:3b:08:
+ 11:92:21:b0:30:e9
G:
- 5e:22:27:fc:01:f2:58:00:d7:68:f3:d3:48:9d:f7:
- e7:9d:3d:05:4a:09:21:17:df:93:ac:65:93:dd:b3:
- 6d:4f:6b:69:e9:f2:a5:87:a7:f6:37:c4:85:c5:ed:
- 78:6d:c2:fa:2c:30:2f:e5:37:8b:b6:98:b6:19:73:
- 6a:8c:a8:3f:81:c2:8d:a3:5f:d6:42:90:75:6d:b2:
- 02:0c:f2:96:ab:8f:18:c1:58:bf:98:88:b6:92:06:
- 6b:d4:07:45:8f:df:da:f0:77:a6:9e:55:dc:05:14:
- 8a:1a:f0:5e:80:38:06:d3:e3:3e:6d:0b:9b:ef:00:
- b2:44:ec:50:62:30:d5:af
+ 0d:e8:2e:4f:bb:15:ce:43:9c:a3:d1:47:4d:78:e1:
+ 43:b8:75:4b:8a:9d:87:d6:79:ee:31:02:26:48:21:
+ 02:32:9f:9e:8a:27:52:b1:67:20:e0:ad:28:b4:fc:
+ 2f:36:dd:f5:8b:65:81:58:41:af:d1:62:f0:d7:e1:
+ 02:35:b1:e2:f2:dd:6e:a3:ea:2c:78:cb:dd:2a:4f:
+ e5:e2:eb:d6:02:36:bb:76:28:85:1f:83:d4:98:e9:
+ 5f:57:fa:5f:71:82:37:be:44:31:b6:fe:43:9e:93:
+ 91:2a:f9:12:c0:ed:c1:0d:c1:14:7b:db:53:52:fa:
+ 7a:00:e3:07:07:2a:b3:fd
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 2E:AA:D3:9F:76:7C:3F:0D:CE:DB:9D:F6:17:99:A6:32:07:CF:0D:89
+ 9D:B6:A2:C0:C5:1F:A9:79:9E:6F:3D:D4:4F:07:A9:BC:3C:A2:19:6F
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Subject Alternative Name:
DNS:client, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 5c:15:67:3e:2a:ec:4b:8f:e6:d8:bc:bb:43:01:4a:36:15:ba:
- 3b:7a:2b:f0:44:3b:d0:e5:6f:e5:72:d0:bd:8f:8c:77:64:d8:
- b4:57:a0:3d:6f:bc:46:ff:da:c5:39:04:a5:06:c5:fe:42:08:
- 2e:74:b6:47:2e:36:e6:11:f7:47:b1:b4:5d:d4:5e:01:18:6b:
- 51:97:fc:b0:9f:60:9f:a3:b3:cb:0b:b1:18:69:b5:4b:eb:40:
- 69:c9:ba:a5:19:8e:a8:df:1a:62:a0:51:7a:96:4e:71:5f:04:
- 7f:df:ba:46:71:27:20:df:60:95:51:6d:68:4c:ca:6b:8a:27:
- 79:60
+ Signature Algorithm: sha256WithRSAEncryption
+ 1b:ca:b4:aa:da:31:3e:66:73:78:e4:4b:91:2b:73:5e:b1:41:
+ 93:69:d9:e8:bb:4a:d0:3d:af:7e:92:ac:55:07:46:1c:4a:0a:
+ 98:be:5c:16:d5:8e:3b:ef:e0:fd:60:48:91:0d:02:83:e5:ad:
+ 40:7d:3e:d0:7c:f5:3a:7e:af:ee:4e:1e:7f:56:8e:45:4c:29:
+ 25:05:26:ba:64:84:5b:aa:5c:a8:45:75:99:3d:a1:fb:07:8f:
+ 1a:1d:ea:12:ca:bd:c2:1a:1a:6a:3e:18:b6:17:13:cf:6c:3b:
+ 6d:78:d9:45:25:e9:5f:aa:66:68:90:01:86:4b:a2:61:12:a9:
+ 3e:2f
-----BEGIN CERTIFICATE-----
-MIIEtjCCBB+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIEtTCCBB6gAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzRaFw0yMDAzMTQxNDUwMzRaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0yNDA3MDgxNzE3MzZaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGQ2xpZW50
-MIIBtzCCASsGByqGSM44BAEwggEeAoGBAMKkmY+ulRg+rL4f3aU777ZTI+g2cTz8
-XD+sNDwxVSBZOhL+PemltYpMQBd4jTDEZzYhue+ybFm34SNGgVc79a8zpJ4l58Mb
-iO4BtrKMC6pBD1aKj9qIw/4PNmAUETdBMdAYtv8mc3mu9cKgu4Mj8QG7olEcb+Bv
-fUMIxxm/KeRLAhUA8w0Jb9OJ8A59+ZpiwTwXAX4WdOUCgYBeIif8AfJYANdo89NI
-nffnnT0FSgkhF9+TrGWT3bNtT2tp6fKlh6f2N8SFxe14bcL6LDAv5TeLtpi2GXNq
-jKg/gcKNo1/WQpB1bbICDPKWq48YwVi/mIi2kgZr1AdFj9/a8HemnlXcBRSKGvBe
-gDgG0+M+bQub7wCyROxQYjDVrwOBhQACgYEAhrFKqnzDWq2HL305xz9uaG4DwX3G
-ZG2jhwTETN27C8MhqJHDKEQ6RJFqP3m9ouDXAUXXuwqrhRCS1ySkgoX4Vvht5O67
-8Wj2X1sRY5XnGa5Rf84BrxeB3SkNQG9g1C/+RJmtZQMzW7WyEyqA5FN7Xi4pufAY
-D6/+HAjjFb6ES82jggEYMIIBFDAJBgNVHRMEAjAAMB0GA1UdDgQWBBQuqtOfdnw/
-Dc7bnfYXmaYyB88NiTCBzgYDVR0jBIHGMIHDgBSi2YAq5JGOC4W35NUoYk/HyYvo
-0aGBn6SBnDCBmTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNV
-BAcTElBhbG0gQmVhY2ggR2FyZGVuczEUMBIGA1UEChMLWmVyb0MsIEluYy4xDDAK
-BgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVyb0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcN
-AQkBFg5pbmZvQHplcm9jLmNvbYIJAJQxcKxQahWZMBcGA1UdEQQQMA6CBmNsaWVu
-dIcEfwAAATANBgkqhkiG9w0BAQUFAAOBgQBcFWc+KuxLj+bYvLtDAUo2Fbo7eivw
-RDvQ5W/lctC9j4x3ZNi0V6A9b7xG/9rFOQSlBsX+QggudLZHLjbmEfdHsbRd1F4B
-GGtRl/ywn2Cfo7PLC7EYabVL60BpybqlGY6o3xpioFF6lk5xXwR/37pGcScg32CV
-UW1oTMpriid5YA==
+MIIBtjCCASsGByqGSM44BAEwggEeAoGBAKAeWKhMAYp5sWH5rsmokCackilB9lCS
+qGZ8UoBX5YhFZovv/QWqr1MhcnBbLgAFvg1tS6RXuJcl2xnddUhQ7DcgVxpo3Pn2
+Mh9H0o4GLLJRDfqGOegyD2kWlFx8wNxEn/9rLg15zGv/wY218S3spaSqFeNVk46d
+aWFAo/SwNalxAhUAsBYQGKVHx/hqE7DhOwgRkiGwMOkCgYAN6C5PuxXOQ5yj0UdN
+eOFDuHVLip2H1nnuMQImSCECMp+eiidSsWcg4K0otPwvNt31i2WBWEGv0WLw1+EC
+NbHi8t1uo+oseMvdKk/l4uvWAja7diiFH4PUmOlfV/pfcYI3vkQxtv5DnpORKvkS
+wO3BDcEUe9tTUvp6AOMHByqz/QOBhAACgYA8CpMjRk8oYuKID5zHeh29ej4/b/f/
+eyEK6r3Bvdfkhm5T+E+EkGOtcfeKDKjF6AvtJWiO9js7NcIOu+Io3GsyDs6a4dWn
+wEizR5Ywi11TyB1SAo8/Ina04ubDyQKMd8C0NeaL6yeoPGhDjGpCe0T76ERNXhAH
+4tpVQ8uk0M8D5aOCARgwggEUMAkGA1UdEwQCMAAwHQYDVR0OBBYEFJ22osDFH6l5
+nm891E8Hqbw8ohlvMIHOBgNVHSMEgcYwgcOAFNNkonhsjB+t8iZ5+BsFJcWLYqnz
+oYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEbMBkGA1UE
+BxMSUGFsbSBCZWFjaCBHYXJkZW5zMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoG
+A1UECxMDSWNlMRgwFgYDVQQDEw9aZXJvQyBUZXN0IENBIDExHTAbBgkqhkiG9w0B
+CQEWDmluZm9AemVyb2MuY29tggkA+eb4EbC3hQAwFwYDVR0RBBAwDoIGY2xpZW50
+hwR/AAABMA0GCSqGSIb3DQEBCwUAA4GBABvKtKraMT5mc3jkS5Erc16xQZNp2ei7
+StA9r36SrFUHRhxKCpi+XBbVjjvv4P1gSJENAoPlrUB9PtB89Tp+r+5OHn9WjkVM
+KSUFJrpkhFuqXKhFdZk9ofsHjxod6hLKvcIaGmo+GLYXE89sO2142UUl6V+qZmiQ
+AYZLomESqT4v
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca1.pfx b/cpp/test/IceSSL/certs/c_rsa_ca1.pfx
new file mode 100644
index 00000000000..9d0ae244be9
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca1.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca1_exp.pfx b/cpp/test/IceSSL/certs/c_rsa_ca1_exp.pfx
new file mode 100644
index 00000000000..dfacc00e1c9
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca1_exp.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca2.pfx b/cpp/test/IceSSL/certs/c_rsa_ca2.pfx
new file mode 100644
index 00000000000..437192906f5
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca2.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_priv.pem b/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_priv.pem
index 8be85029ac7..e25492477cb 100644
--- a/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_priv.pem
+++ b/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_priv.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANaFy95MZsJ4IyMs
-EcMvuzSZqaIjidJFU+ysTMT3iQVCfnzs82ZHmuyktssB00oTPz0a7S04nvuDhLuj
-nVhw2Iwy0dAo8GxQmSckGYN9TpYJI5cyXBbldvthas//GbLbFIPM0Pr5kdgimzMT
-GN6M6Ef5v22YmaY/X2DAV8EWpyJBAgMBAAECgYBhGxuXuvnhGcS+DRrVQev5+Xzi
-Gjgu6Jb+0VfG6U4rBViAcDoVmGA2srDT4DWmmGPN4zxtde3xaC1TStLUz/AVYlT/
-0bZnAEOnlNpy0FYOqkQmZd7Qt4LJd2Ko22l1MX6N9KHxU8dd7uhaS1aZVeqFdZ2/
-peuk1q1Hvojy1icYKQJBAO21FPH9Ic90R8/fGFXivVogApNo7Wrh9dDLsPbMqdsU
-ywvFayzKzDQhtHz+npixMJiiOLTy0cZK/YPrVAgZo1MCQQDnB/e3yRZKcfgFoZyl
-P25MKmymOPxyoU00bIQrIGGiD7VGWmZ8FinbH/9FTmra3P0KjPsk5Wdk/UZClDaG
-2OWbAkEA0Sp6V8VqLuYfGqcw/sIZ5GguXBAEefyDFUtnWIQXIpRVZvI8sJlyvpy5
-+RMD81BXdreoNnFEbbwnACHfO5FzyQJAfENq2C2OkcgvMUg16yPs/YasHdP05Osh
-jZr4lAG8weBVDlw9V2zMYpIZSXveOY43hF9EDhpdvJIGInV5xpoPFQJACbSW9Uoj
-mD2JYfwYRlJzZITG+33XjSF2pdHmDb6bq2pzwnJRhWNkAvKT7QGClsEJuGIRoh0u
-hImtaCUg6HM3/w==
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMWv/FTXQHPGCGPS
+dYwYKOSE8pRAPU9aI5NjMrbDGgR9DXw7YDWCQyQDbitnSZcxqt9VaakpyXUAM8XM
+DhcMnbr+Ha88RWHURl7sW4lOyfNoM4izlY8LXQi3RW2BpPgAp/IsE4cc4NlBKlfD
+I9oGQqL3Z2ErWBA+S3j0QB3NktjrAgMBAAECgYBPzK2INefflCYY3YDzz2DadkxR
+yei12oYX3eg/3FvpSe2io3k/wFiH9haH0MblEHiQdLMVRTf8UduUUb2yUjZs6cQL
+FaBc3SfX6CtLIJl3Yjn0edb3/NEF13Y6O3YYfeKSgKaVmimpJrvhUzKitJ+y0b6I
+b3AlruP+WxN9bWibcQJBAPmLOO8k4Jj/LcC1APD1OYsz++cCGootNFi38rtNl9vP
+E1+/08t+Tvk2qy8vkwyFEqAsAMNHj0Sg7WLJCAbrLskCQQDKzU7pAaGMDaJA6w+c
+U+YZVHKROUxFQhzEPGQQ+bHf3E1ENkzD+aP4G7JkmKYCTPDaW+YLJGD5Q00JN5mu
+e2ATAkBBTy6XaA9f+2j+BmE4rvVgeTp0Oxi3ER2iGoJsguI7pPZtGMdVerkwgB5N
+OyZBIJK/WMTaVuAoFfYK5JI1PVgBAkA6iO/RySq7pePDIRWsZXrwrLM0v3kINIDh
+Ex0+2RNCLfAPVCzsE84D+tqOtpCT8WlDXWsUpDdpOsetdWLiPbIJAkEA1hoMNZDd
+ngOunRuUYbuTt2IzylzhW4W+BxCHRaj85zK5W0NzzOlXGf53A4yB8Db7Qxx2AHnT
+waOVv/S24Tleag==
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_pub.pem b/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_pub.pem
index 8971325069a..11a6e3c6c5a 100644
--- a/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_pub.pem
+++ b/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_exp_pub.pem
@@ -2,66 +2,66 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:34 2010 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
Not After : Dec 31 00:00:00 2005 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Client
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:d6:85:cb:de:4c:66:c2:78:23:23:2c:11:c3:2f:
- bb:34:99:a9:a2:23:89:d2:45:53:ec:ac:4c:c4:f7:
- 89:05:42:7e:7c:ec:f3:66:47:9a:ec:a4:b6:cb:01:
- d3:4a:13:3f:3d:1a:ed:2d:38:9e:fb:83:84:bb:a3:
- 9d:58:70:d8:8c:32:d1:d0:28:f0:6c:50:99:27:24:
- 19:83:7d:4e:96:09:23:97:32:5c:16:e5:76:fb:61:
- 6a:cf:ff:19:b2:db:14:83:cc:d0:fa:f9:91:d8:22:
- 9b:33:13:18:de:8c:e8:47:f9:bf:6d:98:99:a6:3f:
- 5f:60:c0:57:c1:16:a7:22:41
+ 00:c5:af:fc:54:d7:40:73:c6:08:63:d2:75:8c:18:
+ 28:e4:84:f2:94:40:3d:4f:5a:23:93:63:32:b6:c3:
+ 1a:04:7d:0d:7c:3b:60:35:82:43:24:03:6e:2b:67:
+ 49:97:31:aa:df:55:69:a9:29:c9:75:00:33:c5:cc:
+ 0e:17:0c:9d:ba:fe:1d:af:3c:45:61:d4:46:5e:ec:
+ 5b:89:4e:c9:f3:68:33:88:b3:95:8f:0b:5d:08:b7:
+ 45:6d:81:a4:f8:00:a7:f2:2c:13:87:1c:e0:d9:41:
+ 2a:57:c3:23:da:06:42:a2:f7:67:61:2b:58:10:3e:
+ 4b:78:f4:40:1d:cd:92:d8:eb
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 76:01:3F:85:33:E8:6B:C9:14:0E:DA:33:56:7F:43:AE:17:90:A1:1C
+ F4:C8:94:EC:B9:E2:64:15:3D:8F:A6:70:BC:49:11:16:B1:0F:7C:54
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Subject Alternative Name:
DNS:client, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 78:88:01:44:5c:49:7a:f0:49:bc:fe:a4:36:65:86:51:0a:0e:
- c5:05:9f:71:3a:7b:c7:e7:5f:51:b9:e7:31:a8:45:a8:36:ed:
- 25:4b:61:55:5e:33:39:bb:f8:c7:f8:d6:49:92:53:9d:15:11:
- a6:85:4c:6d:2f:05:ab:26:bb:40:86:9b:f4:61:e5:4d:fc:72:
- 64:34:5c:83:66:90:f0:60:c2:12:8d:04:cf:f5:5d:7e:7c:15:
- fb:f5:2a:2e:f2:11:f4:ff:95:d2:67:47:f6:85:82:09:78:fd:
- 4e:d3:cf:eb:2f:bc:b8:b0:e9:93:c2:37:9c:e7:a0:2a:17:6e:
- 7d:89
+ Signature Algorithm: sha256WithRSAEncryption
+ 06:58:45:a0:7f:77:29:e7:29:57:71:8a:ad:27:d9:2a:1c:31:
+ 9a:33:b1:0e:f2:47:7b:6e:a0:92:61:7c:77:f1:c5:98:65:3e:
+ cc:fd:3a:aa:33:a2:4b:3c:76:d2:c9:94:da:86:48:39:bf:4e:
+ 70:ea:3a:66:01:5d:93:99:21:85:68:48:93:9c:41:9d:f8:72:
+ d9:57:6e:f7:a1:cb:4d:c5:0d:bc:18:24:23:dc:1d:f8:69:7d:
+ 92:86:c7:38:46:bc:0c:6c:81:9b:db:7f:62:8d:d8:e1:9c:77:
+ 8a:58:00:8c:43:9c:3e:97:8f:3e:e8:6d:bb:b1:e3:83:17:26:
+ 38:e9
-----BEGIN CERTIFICATE-----
-MIIDnTCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDnTCCAwagAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzRaFw0wNTEyMzEwMDAwMDBaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0wNTEyMzEwMDAwMDBaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGQ2xpZW50
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWhcveTGbCeCMjLBHDL7s0mami
-I4nSRVPsrEzE94kFQn587PNmR5rspLbLAdNKEz89Gu0tOJ77g4S7o51YcNiMMtHQ
-KPBsUJknJBmDfU6WCSOXMlwW5Xb7YWrP/xmy2xSDzND6+ZHYIpszExjejOhH+b9t
-mJmmP19gwFfBFqciQQIDAQABo4IBGDCCARQwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
-dgE/hTPoa8kUDtozVn9DrheQoRwwgc4GA1UdIwSBxjCBw4AUotmAKuSRjguFt+TV
-KGJPx8mL6NGhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFr/xU10Bzxghj0nWMGCjkhPKU
+QD1PWiOTYzK2wxoEfQ18O2A1gkMkA24rZ0mXMarfVWmpKcl1ADPFzA4XDJ26/h2v
+PEVh1EZe7FuJTsnzaDOIs5WPC10It0VtgaT4AKfyLBOHHODZQSpXwyPaBkKi92dh
+K1gQPkt49EAdzZLY6wIDAQABo4IBGDCCARQwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
+9MiU7LniZBU9j6ZwvEkRFrEPfFQwgc4GA1UdIwSBxjCBw4AU02SieGyMH63yJnn4
+GwUlxYtiqfOhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
MRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRlbnMxFDASBgNVBAoTC1plcm9DLCBJ
bmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMTD1plcm9DIFRlc3QgQ0EgMTEdMBsG
-CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCUMXCsUGoVmTAXBgNVHREEEDAO
-ggZjbGllbnSHBH8AAAEwDQYJKoZIhvcNAQEFBQADgYEAeIgBRFxJevBJvP6kNmWG
-UQoOxQWfcTp7x+dfUbnnMahFqDbtJUthVV4zObv4x/jWSZJTnRURpoVMbS8Fqya7
-QIab9GHlTfxyZDRcg2aQ8GDCEo0Ez/VdfnwV+/UqLvIR9P+V0mdH9oWCCXj9TtPP
-6y+8uLDpk8I3nOegKhdufYk=
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQD55vgRsLeFADAXBgNVHREEEDAO
+ggZjbGllbnSHBH8AAAEwDQYJKoZIhvcNAQELBQADgYEABlhFoH93KecpV3GKrSfZ
+KhwxmjOxDvJHe26gkmF8d/HFmGU+zP06qjOiSzx20smU2oZIOb9OcOo6ZgFdk5kh
+hWhIk5xBnfhy2Vdu96HLTcUNvBgkI9wd+Gl9kobHOEa8DGyBm9t/Yo3Y4Zx3ilgA
+jEOcPpePPuhtu7HjgxcmOOk=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_priv.pem b/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_priv.pem
index 7b10f97b123..1ed66f4b472 100644
--- a/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_priv.pem
+++ b/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_priv.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANlKL8B9l1wb90KC
-ns3Ajlvk3iHXpGORSTKMub6MMNkuE2uisAtsT9vNjakLm47P9M/ZgmOEHvTBnHWP
-1VxrrINl4+3YsTWgkLSQIYGqKTmw3cAg2UssIIxrrw6g6RMrQhygWBC3o2Yv8hcQ
-vsQOTa4oaVzLfTdF36rs0bY2JoafAgMBAAECgYAvq7DyQBt238PNWa7RYQ9aZcm+
-DvtHxNYUOv99KHCHFS65jIWm2+phRKVxktRb7o+9EfEjOBc6h0d2G0op7o14FtX0
-kthhptFBHXzqdLAXE6/ZAnnkJgPP6CCnFEnIUqsynSkBhqiKb8g2S3sDP7G24aRA
-QxGiaact2TDib0Q1IQJBAPOQUflN/T8e3R8VlNSnaNwfiyg6wHvqOruf7H94Xfav
-ZqSWzOG+URDeflkgmArld02pLu7AeYc8r/Hp9Dq+FdcCQQDkYm7iCpQE8xJBitcM
-OtlqwFTD3Wr2Jp3SqXsjhqH3y6DcPzSHewQ8jM+9eGB0RgS6Jb2PgEjirmJroiWd
-tOx5AkBGY6MNJZjWsRi+bwJAItGPLB6PVctjBGJM7v7uJ98f97j2QA6d/t52vZZO
-M7k9DOvZqddCcKWui79dbnuCroSpAkAP14wdfeJanYnMphbYsFRYhVLb60X6IR+d
-d0glZLdjeuqDnJbGNxBKKvJWED2QkzLMvsVxaNKldrc5BBxb3irxAkAl+C5Z7k5a
-c5g5hWAZNxQ2u3wRluktJjpAD5cpHUQHZ/CxNqlkkT0+KWFbOgdnALlG7zu0xqMy
-537h5PjDP0Ht
+MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALNWoAgElLfLZ9Ck
+JkB9nUdN2i0canIr62eA8/Qxung45i+PE8QShgXMt27ArPVdaTwDBnbuW5zv8FHq
+r7ljoC1Yb8Bi8qXFl6KE/O5YsuhvDANPY075+92Y4bLwOSY7s3vV84CuOAgsahNk
+jTYLpNHl6mQx6KwtO9X9Sw0SPBBnAgMBAAECgYBBTiUeZlSljStzvaK0T0nLolz1
+mmhkxPuHCF1NqiImD0o7PVXMS5aEXCTb7svM2cQtd0iOXIP95R3VJqnwz4eO/0LM
+C7bbmWmVHW/hZUFNbRUmP8uTeXSD3cBm1SRVGqR4yEYihQquyhMsHsnFVhYkaf9Y
+lO+bk/pJHaaNFO6pAQJBAOUqk4RqtiaQz+ZEo7imXmlrNcZZ3V47ieORJTxEI7js
+Y83Nk47fMtqc5Sbb+mC7SCBVy9HX/AIv8AwYg/F42ecCQQDIVmvHFTJUXV+P2jDN
+yAz2YP69nKBKwHPHdj3xHCZnV7M43wBi4c7oSoNLvDHanDDrI2XLXYqpBqFX+fbc
+LUWBAkBhkr88ojLsOLxMTu1msW+BcyRyT9DxTmhnfGVeQ6TyF7Rm7CDntCDy89qd
+sQvqI9OR8PXXYx7pz39lpwqGxe4BAkEAgRBT/Pzl4L4K65UIrfn8h9mzI5q9FYto
+y46clzGoeBli5/eauxl4f+RJM8h5YboQNdwnH14TD5Oq7A+ofu5XgQJBAMe3ggKk
++fixBXkZrHwFPTWNYnKcjzAQ2FJKUjggo0KQnuMAYSPO5amkp+ddt2Hk8CxeI/gs
+w52OD7b/P8EKkUo=
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_pub.pem b/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_pub.pem
index e48fbd2fe9c..abe7f382f74 100644
--- a/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_pub.pem
+++ b/cpp/test/IceSSL/certs/c_rsa_nopass_ca1_pub.pem
@@ -2,66 +2,66 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:34 2010 GMT
- Not After : Mar 14 14:50:34 2020 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
+ Not After : Jul 8 17:17:36 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Client
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:d9:4a:2f:c0:7d:97:5c:1b:f7:42:82:9e:cd:c0:
- 8e:5b:e4:de:21:d7:a4:63:91:49:32:8c:b9:be:8c:
- 30:d9:2e:13:6b:a2:b0:0b:6c:4f:db:cd:8d:a9:0b:
- 9b:8e:cf:f4:cf:d9:82:63:84:1e:f4:c1:9c:75:8f:
- d5:5c:6b:ac:83:65:e3:ed:d8:b1:35:a0:90:b4:90:
- 21:81:aa:29:39:b0:dd:c0:20:d9:4b:2c:20:8c:6b:
- af:0e:a0:e9:13:2b:42:1c:a0:58:10:b7:a3:66:2f:
- f2:17:10:be:c4:0e:4d:ae:28:69:5c:cb:7d:37:45:
- df:aa:ec:d1:b6:36:26:86:9f
+ 00:b3:56:a0:08:04:94:b7:cb:67:d0:a4:26:40:7d:
+ 9d:47:4d:da:2d:1c:6a:72:2b:eb:67:80:f3:f4:31:
+ ba:78:38:e6:2f:8f:13:c4:12:86:05:cc:b7:6e:c0:
+ ac:f5:5d:69:3c:03:06:76:ee:5b:9c:ef:f0:51:ea:
+ af:b9:63:a0:2d:58:6f:c0:62:f2:a5:c5:97:a2:84:
+ fc:ee:58:b2:e8:6f:0c:03:4f:63:4e:f9:fb:dd:98:
+ e1:b2:f0:39:26:3b:b3:7b:d5:f3:80:ae:38:08:2c:
+ 6a:13:64:8d:36:0b:a4:d1:e5:ea:64:31:e8:ac:2d:
+ 3b:d5:fd:4b:0d:12:3c:10:67
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 87:FC:AE:41:A0:C9:34:E7:05:43:C9:89:96:2C:A9:8D:10:56:14:62
+ 54:72:19:52:20:4A:A8:AA:B7:37:6A:BF:DA:B9:87:E2:47:51:03:4B
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Subject Alternative Name:
DNS:client, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 7d:a2:77:2f:a4:0f:93:9c:c8:35:e2:fe:c5:15:9b:41:47:36:
- be:93:27:d3:c5:d5:d8:59:a7:46:98:4e:ae:c4:03:37:40:3e:
- 45:0d:90:0e:b6:5e:00:af:6d:15:1f:c7:4d:1a:4d:67:e4:fa:
- b8:8d:63:58:13:cc:c4:60:23:a9:25:cb:dc:42:66:67:16:46:
- 6b:64:93:a3:97:63:20:7a:f4:59:5b:b7:74:11:ea:d2:5c:af:
- 2e:3c:8b:60:82:d6:8b:da:c6:db:bf:6a:f2:09:95:67:53:50:
- 64:c6:35:55:ca:74:2e:8f:41:5b:8e:b8:ba:7a:91:6d:8b:28:
- 1d:69
+ Signature Algorithm: sha256WithRSAEncryption
+ 2c:7d:9b:27:57:91:85:3f:67:f4:a4:6f:57:19:70:bd:b6:a4:
+ 9f:25:72:36:18:ba:a0:14:60:99:36:e7:98:95:0a:ed:fb:5c:
+ 93:e7:f5:3b:fa:ac:dd:3c:07:ec:a1:2d:40:65:84:a1:f4:aa:
+ 96:30:62:bc:a1:99:4a:5b:aa:e4:8d:42:af:c8:01:89:6e:33:
+ 61:54:2d:14:1a:25:46:29:c0:28:b6:3d:bc:67:9e:ef:d5:9f:
+ cd:1f:d9:bd:08:95:76:19:77:a7:25:78:66:44:50:ff:69:84:
+ 31:59:ec:1b:e5:53:fe:4f:66:b2:73:1e:69:3a:a9:31:68:f8:
+ 2a:91
-----BEGIN CERTIFICATE-----
-MIIDnTCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDnTCCAwagAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzRaFw0yMDAzMTQxNDUwMzRaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0yNDA3MDgxNzE3MzZaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGQ2xpZW50
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZSi/AfZdcG/dCgp7NwI5b5N4h
-16RjkUkyjLm+jDDZLhNrorALbE/bzY2pC5uOz/TP2YJjhB70wZx1j9Vca6yDZePt
-2LE1oJC0kCGBqik5sN3AINlLLCCMa68OoOkTK0IcoFgQt6NmL/IXEL7EDk2uKGlc
-y303Rd+q7NG2NiaGnwIDAQABo4IBGDCCARQwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
-h/yuQaDJNOcFQ8mJliypjRBWFGIwgc4GA1UdIwSBxjCBw4AUotmAKuSRjguFt+TV
-KGJPx8mL6NGhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCzVqAIBJS3y2fQpCZAfZ1HTdot
+HGpyK+tngPP0Mbp4OOYvjxPEEoYFzLduwKz1XWk8AwZ27luc7/BR6q+5Y6AtWG/A
+YvKlxZeihPzuWLLobwwDT2NO+fvdmOGy8DkmO7N71fOArjgILGoTZI02C6TR5epk
+MeisLTvV/UsNEjwQZwIDAQABo4IBGDCCARQwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
+VHIZUiBKqKq3N2q/2rmH4kdRA0swgc4GA1UdIwSBxjCBw4AU02SieGyMH63yJnn4
+GwUlxYtiqfOhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
MRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRlbnMxFDASBgNVBAoTC1plcm9DLCBJ
bmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMTD1plcm9DIFRlc3QgQ0EgMTEdMBsG
-CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCUMXCsUGoVmTAXBgNVHREEEDAO
-ggZjbGllbnSHBH8AAAEwDQYJKoZIhvcNAQEFBQADgYEAfaJ3L6QPk5zINeL+xRWb
-QUc2vpMn08XV2FmnRphOrsQDN0A+RQ2QDrZeAK9tFR/HTRpNZ+T6uI1jWBPMxGAj
-qSXL3EJmZxZGa2STo5djIHr0WVu3dBHq0lyvLjyLYILWi9rG279q8gmVZ1NQZMY1
-Vcp0Lo9BW464unqRbYsoHWk=
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQD55vgRsLeFADAXBgNVHREEEDAO
+ggZjbGllbnSHBH8AAAEwDQYJKoZIhvcNAQELBQADgYEALH2bJ1eRhT9n9KRvVxlw
+vbaknyVyNhi6oBRgmTbnmJUK7ftck+f1O/qs3TwH7KEtQGWEofSqljBivKGZSluq
+5I1Cr8gBiW4zYVQtFBolRinAKLY9vGee79WfzR/ZvQiVdhl3pyV4ZkRQ/2mEMVns
+G+VT/k9msnMeaTqpMWj4KpE=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_nopass_ca2_priv.pem b/cpp/test/IceSSL/certs/c_rsa_nopass_ca2_priv.pem
index 0f28d169d74..0b4950514c0 100644
--- a/cpp/test/IceSSL/certs/c_rsa_nopass_ca2_priv.pem
+++ b/cpp/test/IceSSL/certs/c_rsa_nopass_ca2_priv.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALoDzS3M4t7jkj4s
-Q054QUqvIxBMS4T8vcbwyAG+q9EtC/wm+GENSRun6rzWWJWoaChnl2fpkDPw4W5O
-D3YW7mdMRAvYHtnzcaF35sV/vNgnO+z/Judk3/kyifROAV5V2RqysRs/K4g1JGHo
-nuV9Xtrpp4ECVJcD2QxLPrwtxzZDAgMBAAECgYAJSjFQDUBzUzg1hK5j19ui6DY/
-FSBcZubvbYz/kU8xZieIE0YqSqiRCgTOI4JPDxcMlYfZN6/s+CW6BYn+Is0LI9Ik
-PzmITP0vlb/Xsuj3R+rkmW5TTHAQsneJrRL3D5Bx/bnba7owa9tFMCda5b6GMyN9
-Q6X8ommpKOCv+1HuWQJBAOOBMzCe04FQqtlX5Rrxp9S1Ad7+a1uKEg5ZST1yEUN3
-rbeHNhBXOaqQL7XJV/RfKHWOA1kH/w0Nc/HB3wAXXCcCQQDRUEFHO9uzAn4YEmZ5
-jA3CmLYR7cQDcOBzj4heBXl0+JK+8w33P5tsfW6MRT2rTXKn5xaj9fyYrcAKgHkP
-0LqFAkEAlCbw5PqpFY8okzzvz2oLNzNgsozP8N6q/3kZftAned4X3GpKxL1oqjAX
-QbSKeHL3cAY5G+NfLmrSVF9CD1cnBQJAYUy+W5++vFMfTI9ZJY1uZBRbJrBxWuwg
-2ndRe+ttj2txw+P2jQX7eQ5B0mDpjvUcpGJvCt7xggPa7sbT//8WhQJBAMyJJ8cD
-dn6meyLPKGiunka7n8Sse5DeX4rXaGvVI8dN8G2BPfund+kJIe85VHIAIdyW7W4L
-8QRFTVbPvumZoqM=
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAPtzYUipfz5maazs
+gt9JamKhg6QQzau6Vt9YHFx0oGV/qqPaCEbBGmxIEQO5XgpvN7tYZveUYuuJdZ+i
+OT5v6fATqMBp20MN5d8CNeE699dotH6H77Gt/Z/BEeW5ftCgnFvKkzQu2DgMMAWt
+3GhYsrz2OgJSuCW8CwDlhjJI+boZAgMBAAECgYEAn18379gOYDyFCic1o9Ria3U3
+fItx8EBAw3qTLz50UyChxQxyZnYKC0t6DUQ2CKMJTeLwEEeqkuMi/DTT13ETcedE
+qFWG1FszAMkqq8H3g+Li8qdi18VGDXjiN8PQKPA0jKti4seGrSkl1kAgd4BhvHXy
+EmCOpRaa1ze5qbzEqUkCQQD+z2AxA6eCBsR/jOc+zyxsWEZu+rBoPWV4GBsUy/m+
+C+qUO0F+6cYM9suXxz1XjO3HVnDpZfKZh/MLsOCDNvZ7AkEA/J/8+LCx59o/Rype
+rDREhElzCeXP5+a99WguBzilgSq1uI8OiqYANC63avrtlz8yIF2U66Nkye/xkkmR
+4LDXewJAIKfVDRMJ0akqX6pgLHWCnPQHOsvX9dQAgA6e0eB+RjPiwVKCx1AQeLLc
+TrxTCThfdM+IMvFE0RZSOKpXa5mMpwJAZ1QxLq9nNURJmZw0+Q6v78PzL9s1/M6e
+aCBio0WCPKDxjznEYuWfM7jgAPv97l1E7YQZg4Bjm01va7x31IXAvQJAWptK3chY
+I6AEMnLFx4BgWUDhzaG0en8jVlW+hgHxFCCNCBRPeptnUSUFXekml6ZIQaBurpiJ
+zId6YcIqUy/uFw==
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_nopass_ca2_pub.pem b/cpp/test/IceSSL/certs/c_rsa_nopass_ca2_pub.pem
index d449a068a04..edf84039200 100644
--- a/cpp/test/IceSSL/certs/c_rsa_nopass_ca2_pub.pem
+++ b/cpp/test/IceSSL/certs/c_rsa_nopass_ca2_pub.pem
@@ -2,66 +2,66 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 2/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:34 2010 GMT
- Not After : Mar 14 14:50:34 2020 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
+ Not After : Jul 8 17:17:36 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Client
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:ba:03:cd:2d:cc:e2:de:e3:92:3e:2c:43:4e:78:
- 41:4a:af:23:10:4c:4b:84:fc:bd:c6:f0:c8:01:be:
- ab:d1:2d:0b:fc:26:f8:61:0d:49:1b:a7:ea:bc:d6:
- 58:95:a8:68:28:67:97:67:e9:90:33:f0:e1:6e:4e:
- 0f:76:16:ee:67:4c:44:0b:d8:1e:d9:f3:71:a1:77:
- e6:c5:7f:bc:d8:27:3b:ec:ff:26:e7:64:df:f9:32:
- 89:f4:4e:01:5e:55:d9:1a:b2:b1:1b:3f:2b:88:35:
- 24:61:e8:9e:e5:7d:5e:da:e9:a7:81:02:54:97:03:
- d9:0c:4b:3e:bc:2d:c7:36:43
+ 00:fb:73:61:48:a9:7f:3e:66:69:ac:ec:82:df:49:
+ 6a:62:a1:83:a4:10:cd:ab:ba:56:df:58:1c:5c:74:
+ a0:65:7f:aa:a3:da:08:46:c1:1a:6c:48:11:03:b9:
+ 5e:0a:6f:37:bb:58:66:f7:94:62:eb:89:75:9f:a2:
+ 39:3e:6f:e9:f0:13:a8:c0:69:db:43:0d:e5:df:02:
+ 35:e1:3a:f7:d7:68:b4:7e:87:ef:b1:ad:fd:9f:c1:
+ 11:e5:b9:7e:d0:a0:9c:5b:ca:93:34:2e:d8:38:0c:
+ 30:05:ad:dc:68:58:b2:bc:f6:3a:02:52:b8:25:bc:
+ 0b:00:e5:86:32:48:f9:ba:19
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 7D:37:65:25:0A:DB:24:C7:23:B1:AD:EB:63:75:97:3D:14:BA:1E:8D
+ DF:14:07:62:70:8B:BA:BB:36:CE:09:FE:50:8B:AE:9E:68:27:0E:66
X509v3 Authority Key Identifier:
- keyid:29:71:09:F4:CF:57:4E:F3:3C:2B:7F:49:CE:4F:7F:64:45:CE:5F:05
+ keyid:E6:A2:63:95:8F:8C:4D:7F:7A:3C:62:1A:C3:2A:BA:53:BB:C2:BF:B1
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 2/emailAddress=info@zeroc.com
- serial:C5:15:C5:DC:84:DB:8A:C9
+ serial:E3:A0:C8:CA:39:6A:77:CF
X509v3 Subject Alternative Name:
DNS:client, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 8a:41:b1:17:ca:11:25:bc:07:ca:b2:a5:68:9d:fb:97:b4:a4:
- 73:54:75:4e:97:2f:ca:d0:45:d2:d5:17:21:a4:3d:fd:6b:a6:
- 12:47:c0:95:2a:de:2b:c7:70:94:79:88:be:f9:83:5e:4f:2b:
- 1e:36:24:b7:73:4c:54:cf:15:59:f9:cc:af:37:c0:05:c3:ad:
- 92:e6:5a:96:92:6b:7d:c9:63:0d:fb:c2:5c:b6:ad:d0:ea:19:
- c7:1e:b7:02:9a:1f:45:f2:15:65:d2:00:b7:1f:b5:73:38:4e:
- 49:11:f6:81:f5:ab:8b:70:fa:b2:88:a6:35:84:48:1d:fb:61:
- b7:11
+ Signature Algorithm: sha256WithRSAEncryption
+ 24:7b:f6:3a:82:8a:27:9e:8c:c4:e8:27:2e:64:eb:2e:a4:59:
+ 08:95:9a:d5:41:d4:62:32:21:33:7b:11:26:ef:33:08:97:98:
+ e2:40:fa:c2:8a:3f:87:f2:c7:17:42:79:b0:34:88:c6:74:3f:
+ 5d:fe:28:3d:32:c3:2a:8a:cf:8e:ae:29:21:5d:52:df:cf:5c:
+ ee:10:ff:32:70:ba:ae:c2:c7:14:89:f6:38:5b:fb:6c:e3:e3:
+ eb:50:40:ad:c7:0b:46:d4:38:78:c4:b4:22:32:7a:72:13:16:
+ e3:de:f6:26:de:28:34:44:19:1f:9e:ae:c5:61:13:23:73:6a:
+ 9b:d7
-----BEGIN CERTIFICATE-----
-MIIDnTCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDnTCCAwagAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAyMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzRaFw0yMDAzMTQxNDUwMzRaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0yNDA3MDgxNzE3MzZaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGQ2xpZW50
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6A80tzOLe45I+LENOeEFKryMQ
-TEuE/L3G8MgBvqvRLQv8JvhhDUkbp+q81liVqGgoZ5dn6ZAz8OFuTg92Fu5nTEQL
-2B7Z83Ghd+bFf7zYJzvs/ybnZN/5Mon0TgFeVdkasrEbPyuINSRh6J7lfV7a6aeB
-AlSXA9kMSz68Lcc2QwIDAQABo4IBGDCCARQwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
-fTdlJQrbJMcjsa3rY3WXPRS6Ho0wgc4GA1UdIwSBxjCBw4AUKXEJ9M9XTvM8K39J
-zk9/ZEXOXwWhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD7c2FIqX8+Zmms7ILfSWpioYOk
+EM2rulbfWBxcdKBlf6qj2ghGwRpsSBEDuV4Kbze7WGb3lGLriXWfojk+b+nwE6jA
+adtDDeXfAjXhOvfXaLR+h++xrf2fwRHluX7QoJxbypM0Ltg4DDAFrdxoWLK89joC
+UrglvAsA5YYySPm6GQIDAQABo4IBGDCCARQwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
+3xQHYnCLurs2zgn+UIuunmgnDmYwgc4GA1UdIwSBxjCBw4AU5qJjlY+MTX96PGIa
+wyq6U7vCv7GhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
MRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRlbnMxFDASBgNVBAoTC1plcm9DLCBJ
bmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMTD1plcm9DIFRlc3QgQ0EgMjEdMBsG
-CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQDFFcXchNuKyTAXBgNVHREEEDAO
-ggZjbGllbnSHBH8AAAEwDQYJKoZIhvcNAQEFBQADgYEAikGxF8oRJbwHyrKlaJ37
-l7Skc1R1TpcvytBF0tUXIaQ9/WumEkfAlSreK8dwlHmIvvmDXk8rHjYkt3NMVM8V
-WfnMrzfABcOtkuZalpJrfcljDfvCXLat0OoZxx63ApofRfIVZdIAtx+1czhOSRH2
-gfWri3D6soimNYRIHfthtxE=
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQDjoMjKOWp3zzAXBgNVHREEEDAO
+ggZjbGllbnSHBH8AAAEwDQYJKoZIhvcNAQELBQADgYEAJHv2OoKKJ56MxOgnLmTr
+LqRZCJWa1UHUYjIhM3sRJu8zCJeY4kD6woo/h/LHF0J5sDSIxnQ/Xf4oPTLDKorP
+jq4pIV1S389c7hD/MnC6rsLHFIn2OFv7bOPj61BArccLRtQ4eMS0IjJ6chMW4972
+Jt4oNEQZH56uxWETI3Nqm9c=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_pass_ca1.pfx b/cpp/test/IceSSL/certs/c_rsa_pass_ca1.pfx
new file mode 100644
index 00000000000..53bf5d70d8d
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_pass_ca1.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_pass_ca1_priv.pem b/cpp/test/IceSSL/certs/c_rsa_pass_ca1_priv.pem
index da66af69a0a..c8225432714 100644
--- a/cpp/test/IceSSL/certs/c_rsa_pass_ca1_priv.pem
+++ b/cpp/test/IceSSL/certs/c_rsa_pass_ca1_priv.pem
@@ -1,17 +1,17 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
-MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIxCo3iRA151ACAggA
-MBQGCCqGSIb3DQMHBAhBlN2Q6FMWUwSCAoBrCtl5Wepn2aMPGZ1Tmv5Z2zGB5YiR
-po242sQI3z+pVeEBg5T6Dhia19ZwC+BPminubAy8SqFu77BOqpt7kyONRg6CISKg
-fJ8CcIgfOZcrOPITaWRCM+dqcWUSTvchxyXfLl8DQ3cPd7eg+hyupcnilVX44KEA
-vxW4kuEKsTL8TKDjO9gp+xGC6xT35THRizYNHY6kM2fhAMxdObhhOFz9UEcrQpD5
-eOeZyZHmU13lWtcZGQJGdFImzEzqfBSwNfUbR3gYnIoNy95biCDTUQX0XYEwQBmd
-Qu18STLCIJkHsr4Tf7QQ8XpUelXJzeXbg56XnophqYpIQjfeQLI6sfHftn4EeJ6Y
-lRuGcRd1NHlbXupwbUxXIEEGDQncfFfgIsXZLHue8iroL0msgYOuavDADMUoXpy3
-nNLvOg065Ul+4a1CviKyMIm4t+xkFiPDwHX6CEesDNYSwDayzthOex9F1239+LSf
-+NVyjSz/fcK02mC6p0eZm3qdonWr6V02/aTGWyvCuQy/sc4uohgKdkVdTNMwUGU+
-Fd4zwlt/xxTOwyM/YQwcfHGvQKPgVOqXfOxS4HZ2Vl4YxhgFa6aIJbbcllhgX+bR
-6MGOEQC9TdbLegsp5GJk/C8Wv+JnK5b/vVFms5gkrGGIvrUZP9oXTvrY8eYLFsmW
-nSFzbYJTa2YwXczewLXl0BJ/GvNAs1dErUxmsJKkGoE3F7aEY8GdpmGm7Ri262Ym
-DMCrTLAvxrjFxddnJNdXUzyBbHGQAg7aTB1mUG6hzT+WqEOHYtdrh/gMgnaSxRgx
-ZFbclXSxIyyH83euxxMFmQ2HShw2TY/fPDQpCFLhozzv05bbnrqtmRU9
+MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIRlDVaMQMJqoCAggA
+MBQGCCqGSIb3DQMHBAgOv0empB42jQSCAoBlHTQpqkNQyZ3/m1xKyYOMaqQQUP3f
+o4VxnJ4H29UL2mY2hobv+g8BVKaGpilBRAVm3pHRFvUBiI2lmn2IWe3ExbpXecF0
+iG0g/tOJ1yjirvuD0JFrPNRuqp18Lsj0QYE0rgUaVqlHH04UtbnaOxFtJLp+CcyL
+qjaEeh6v1X6BTr6m2K5bmTXs58Dc2JRgWDpSZdE7X80XCOAer0G/4qn6+MNxbPAc
+1oZJqEQ4oIJdbyIVKLGDNuOjzFbzXq+Nfpiajx3E/A3r8O4HWXQsW9cGQvvXOb/j
+nbY5wvPrpfQ+v+zJz3iJlXPMaEts7Zkqq0mDr2G0Wzh5mT/4i6e05iTQymGf7N/3
+ApQCp0BYrUNCZMwry2cduLO9aREyMewhzQZeo9aBKZxCTyjD16cdbkfTT5u/ZbQt
+Z1MEZqJ4lLmfylrj4qe0PV+7z3Zf4XlS1kE7MrluvpGrE19KH7meiqBLoHW4Lt2B
+oEAlXm3Z77wQWwUgBZigFirMkURqrBfdDarcy7pVQEuO0EHOBufVo/sAcplMcUJa
+towPFx9zMlQ2fQATdN4tq2t6yYkQmjD1Mtn06xCikpCPydh48yRjys9V3iKIrGRE
+/vGTmzdwUM4o+dUEtlaq2kQRojtjoMAhuHjvDksucUbHZ8tIrQJhn9GZ/ILwvgCA
+JdZ6FOB5v92vQYlrU5oiyvFc/uYGRdcmXVxvD2mjcq/PbuvcemG/XskGX3ufKIsU
+49vHg1iIyDPwrROkQQ4utk853sXlJwMISbEngHSbOANe4PhdCiHE09cmZH/gQxP0
+q95y13L4dlz2RUdCgBN6REqAEkoH0o6T4B6yZdSgbibnhd6Ta+DWMmbk
-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_pass_ca1_pub.pem b/cpp/test/IceSSL/certs/c_rsa_pass_ca1_pub.pem
index 03d9837d3f7..af1a5572659 100644
--- a/cpp/test/IceSSL/certs/c_rsa_pass_ca1_pub.pem
+++ b/cpp/test/IceSSL/certs/c_rsa_pass_ca1_pub.pem
@@ -2,66 +2,66 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:34 2010 GMT
- Not After : Mar 14 14:50:34 2020 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
+ Not After : Jul 8 17:17:36 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Client
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:eb:26:2d:df:c1:5b:a3:ae:74:60:cb:74:7f:d0:
- a4:89:39:db:6b:08:6b:fd:2d:bc:42:3a:ec:00:dd:
- 19:09:38:e8:dc:fb:e5:38:83:19:7e:d8:48:37:04:
- 5b:7c:d0:7b:99:c6:7d:45:1f:50:36:a6:b4:5e:d7:
- 2b:45:0e:b5:69:8e:02:df:54:19:39:16:3a:d3:0b:
- b7:de:52:bf:a8:70:e2:b4:d0:a2:08:e1:aa:ea:3f:
- 5e:5d:32:0b:1c:ff:06:b3:72:2b:db:7f:6d:a6:4e:
- c3:54:51:9c:ca:9f:f8:55:8a:39:e0:da:07:b6:20:
- 4e:e3:15:e1:41:b3:d8:32:e5
+ 00:94:71:42:6e:d1:2a:5d:a0:9d:b6:13:05:5a:40:
+ 0f:42:85:28:a7:cb:da:28:93:63:f3:03:52:78:88:
+ e3:6e:b6:64:f3:32:8f:88:f5:0c:53:be:0e:4e:20:
+ 5a:2c:f5:f3:d2:a0:8f:9f:26:d6:1c:af:81:56:5e:
+ 0f:9e:c6:a0:a8:b8:21:1e:61:27:81:3e:ad:91:b7:
+ 44:a6:ee:29:bc:32:56:2b:2f:07:d3:57:79:00:98:
+ 8d:f3:af:6f:0c:8f:a9:27:04:52:1e:00:76:a6:9d:
+ 22:ca:ec:e2:4a:06:1f:df:4a:9a:9e:52:9e:60:29:
+ 46:08:95:9c:3e:28:b1:d7:7b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- BC:67:37:CB:29:51:25:C5:38:49:42:80:8C:C3:77:6E:AF:96:73:77
+ CC:7B:FA:66:DA:CC:EC:93:5E:BE:65:E3:DA:A9:8E:3D:4E:16:1C:6B
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Subject Alternative Name:
DNS:client, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 13:35:86:c6:73:44:95:59:95:76:24:ef:56:00:c5:8b:f0:74:
- ce:a4:fa:f1:b7:6d:58:14:22:8f:db:65:06:a6:cf:60:cd:6b:
- 75:c5:c3:0d:5b:6f:73:be:1a:8c:84:ba:05:29:7d:dd:36:62:
- 36:1f:a4:fa:e1:31:5c:49:16:4c:27:d7:97:e3:48:9f:17:18:
- 6c:18:62:61:47:e6:d9:d4:9f:56:5b:e0:16:64:c5:f6:e3:aa:
- 39:80:c5:af:54:73:e4:4d:54:ed:fd:6c:cd:f3:d2:09:38:68:
- 84:a1:d8:71:25:3f:7c:42:df:ac:ba:58:d7:2b:d8:d7:da:f9:
- 44:fa
+ Signature Algorithm: sha256WithRSAEncryption
+ 92:75:e4:28:91:3b:20:48:67:33:0d:60:5b:6d:14:a2:b2:af:
+ 47:89:93:50:e2:d0:85:0c:3c:2d:85:af:f8:bb:42:6d:41:1c:
+ fb:7a:8f:9c:43:08:51:76:ef:6f:36:a1:73:7b:58:4e:fa:50:
+ 2e:91:00:0d:cb:5c:0c:68:8f:92:05:61:8d:4f:79:c9:77:f8:
+ b8:78:5a:11:7b:55:80:3c:41:c8:d5:ff:39:e9:30:2a:ca:ce:
+ 2f:98:78:d6:9e:2c:f1:e0:6d:97:85:19:9a:fc:67:cc:7c:09:
+ e4:c4:63:50:ca:60:52:42:24:61:2e:ee:69:b8:19:f2:f2:e7:
+ 30:08
-----BEGIN CERTIFICATE-----
-MIIDnTCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDnTCCAwagAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzRaFw0yMDAzMTQxNDUwMzRaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0yNDA3MDgxNzE3MzZaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGQ2xpZW50
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrJi3fwVujrnRgy3R/0KSJOdtr
-CGv9LbxCOuwA3RkJOOjc++U4gxl+2Eg3BFt80HuZxn1FH1A2prRe1ytFDrVpjgLf
-VBk5FjrTC7feUr+ocOK00KII4arqP15dMgsc/wazcivbf22mTsNUUZzKn/hVijng
-2ge2IE7jFeFBs9gy5QIDAQABo4IBGDCCARQwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
-vGc3yylRJcU4SUKAjMN3bq+Wc3cwgc4GA1UdIwSBxjCBw4AUotmAKuSRjguFt+TV
-KGJPx8mL6NGhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUcUJu0SpdoJ22EwVaQA9ChSin
+y9ook2PzA1J4iONutmTzMo+I9QxTvg5OIFos9fPSoI+fJtYcr4FWXg+exqCouCEe
+YSeBPq2Rt0Sm7im8MlYrLwfTV3kAmI3zr28Mj6knBFIeAHamnSLK7OJKBh/fSpqe
+Up5gKUYIlZw+KLHXewIDAQABo4IBGDCCARQwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
+zHv6ZtrM7JNevmXj2qmOPU4WHGswgc4GA1UdIwSBxjCBw4AU02SieGyMH63yJnn4
+GwUlxYtiqfOhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
MRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRlbnMxFDASBgNVBAoTC1plcm9DLCBJ
bmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMTD1plcm9DIFRlc3QgQ0EgMTEdMBsG
-CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCUMXCsUGoVmTAXBgNVHREEEDAO
-ggZjbGllbnSHBH8AAAEwDQYJKoZIhvcNAQEFBQADgYEAEzWGxnNElVmVdiTvVgDF
-i/B0zqT68bdtWBQij9tlBqbPYM1rdcXDDVtvc74ajIS6BSl93TZiNh+k+uExXEkW
-TCfXl+NInxcYbBhiYUfm2dSfVlvgFmTF9uOqOYDFr1Rz5E1U7f1szfPSCThohKHY
-cSU/fELfrLpY1yvY19r5RPo=
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQD55vgRsLeFADAXBgNVHREEEDAO
+ggZjbGllbnSHBH8AAAEwDQYJKoZIhvcNAQELBQADgYEAknXkKJE7IEhnMw1gW20U
+orKvR4mTUOLQhQw8LYWv+LtCbUEc+3qPnEMIUXbvbzahc3tYTvpQLpEADctcDGiP
+kgVhjU95yXf4uHhaEXtVgDxByNX/OekwKsrOL5h41p4s8eBtl4UZmvxnzHwJ5MRj
+UMpgUkIkYS7uabgZ8vLnMAg=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/cacert1.pem b/cpp/test/IceSSL/certs/cacert1.pem
index 224da8829f6..1920d91f92d 100644
--- a/cpp/test/IceSSL/certs/cacert1.pem
+++ b/cpp/test/IceSSL/certs/cacert1.pem
@@ -1,22 +1,22 @@
-----BEGIN CERTIFICATE-----
-MIIDtTCCAx6gAwIBAgIJAJQxcKxQahWZMA0GCSqGSIb3DQEBBAUAMIGZMQswCQYD
+MIIDtTCCAx6gAwIBAgIJAPnm+BGwt4UAMA0GCSqGSIb3DQEBCwUAMIGZMQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBH
YXJkZW5zMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNlMRgwFgYD
VQQDEw9aZXJvQyBUZXN0IENBIDExHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2Mu
-Y29tMB4XDTEwMDMxNzE0NTAzM1oXDTIwMDMxNDE0NTAzM1owgZkxCzAJBgNVBAYT
+Y29tMB4XDTE0MDcxMTE3MTczNVoXDTI0MDcwODE3MTczNVowgZkxCzAJBgNVBAYT
AlVTMRAwDgYDVQQIEwdGbG9yaWRhMRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRl
bnMxFDASBgNVBAoTC1plcm9DLCBJbmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMT
D1plcm9DIFRlc3QgQ0EgMTEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20w
-gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKjr2OoeWxpC48D2b3pv6EADXwT4
-1tZr5JilYnUbwpf9D2UWtmB1cwdVHkmpGgEs5nx4hl9+4TXuCNQAG7j9YWIPrBei
-8bshMC8Ndp41i433Ybzn2LmzqFEcs32LoShwjB3vhH4jNMC2SchiBOXHR9Muobtd
-lQi02oadqeK1skOxAgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
-FKLZgCrkkY4Lhbfk1ShiT8fJi+jRMIHOBgNVHSMEgcYwgcOAFKLZgCrkkY4Lhbfk
-1ShiT8fJi+jRoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
+gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMvEq209nJQXzzw/30CCTdqKopFD
+DrU+dWz29XLGXwxYq96KgBd0RJ8SooltvTq9lPXJ27T3hMjL8EzvelhNfzFbqFlg
+CVWXgRWwXZ6b8ATzuJNSLHfKcRdxS/gKcZyAgug/iNqf0OYIfVupbh1bS0YK/i2E
+R80a/9OBRU7hFrTvAgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
+FNNkonhsjB+t8iZ5+BsFJcWLYqnzMIHOBgNVHSMEgcYwgcOAFNNkonhsjB+t8iZ5
++BsFJcWLYqnzoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
YTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBHYXJkZW5zMRQwEgYDVQQKEwtaZXJvQywg
SW5jLjEMMAoGA1UECxMDSWNlMRgwFgYDVQQDEw9aZXJvQyBUZXN0IENBIDExHTAb
-BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkAlDFwrFBqFZkwDQYJKoZIhvcN
-AQEEBQADgYEAGjLQC2Syy/mI5b7Ggl50sHxhkPvnGJIRwV+MAsv0iUZ/r/RKiPGr
-lAOi3ypiR4G20AYpx5qO3J0tY+hmTY5Wq6jsVsHVDoSftnUIESyayEoy6KEOZU1s
-GLCJ+/EZ7ap7+SYxb3tjYAupcO9gSK07b2Hxi6n1cGFNHD7O+k6Ca+k=
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkA+eb4EbC3hQAwDQYJKoZIhvcN
+AQELBQADgYEAw5pAUloxXHHcmm0AlrQs9icEv83+EfukmMWM9SCgFxv98LYAFQYl
+zZ/6WOF6+c+cVWbMSgiNbSwT6Sp0/m17rv1s6ysS8ZCC6Bu9xlsVwOEselipsKeL
+UFVFd5d2Gl+mFfvC18uoebmms6ZOFkvoUFLMedgg0oIhIk/yvkZhjfI=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/cacert2.pem b/cpp/test/IceSSL/certs/cacert2.pem
index f63b05fd929..770241b9d74 100644
--- a/cpp/test/IceSSL/certs/cacert2.pem
+++ b/cpp/test/IceSSL/certs/cacert2.pem
@@ -1,22 +1,22 @@
-----BEGIN CERTIFICATE-----
-MIIDtTCCAx6gAwIBAgIJAMUVxdyE24rJMA0GCSqGSIb3DQEBBAUAMIGZMQswCQYD
+MIIDtTCCAx6gAwIBAgIJAOOgyMo5anfPMA0GCSqGSIb3DQEBCwUAMIGZMQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBH
YXJkZW5zMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNlMRgwFgYD
VQQDEw9aZXJvQyBUZXN0IENBIDIxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2Mu
-Y29tMB4XDTEwMDMxNzE0NTAzM1oXDTIwMDMxNDE0NTAzM1owgZkxCzAJBgNVBAYT
+Y29tMB4XDTE0MDcxMTE3MTczNVoXDTI0MDcwODE3MTczNVowgZkxCzAJBgNVBAYT
AlVTMRAwDgYDVQQIEwdGbG9yaWRhMRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRl
bnMxFDASBgNVBAoTC1plcm9DLCBJbmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMT
D1plcm9DIFRlc3QgQ0EgMjEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20w
-gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALaAI4V1BCJT/7basy1ws8sf7Am0
-T+avRuxr9/7QZ17F6J4rFW6SRYvjw2z03eN6+YuZBaocozUxt9TkI0sDhc1+Dr7p
-j7mj+NoGjjSb7AMwQWu6rLEwD1SRCdewTMOQQ1ntHrCm5thhFxyahqhEXipBdfET
-/26f+QZphtaTCSxFAgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
-FClxCfTPV07zPCt/Sc5Pf2RFzl8FMIHOBgNVHSMEgcYwgcOAFClxCfTPV07zPCt/
-Sc5Pf2RFzl8FoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
+gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANsP1iadrxeJEmsiCP8px+rt6k7I
+LMsNVfQpStH7LMnLF4vTiqgLp5pWxMySPDwYqt4f0apl7klAL2y+GWxlwUgqxs1y
+goYPEd09q68T1OxUKqnDrBO5EB10p6LGiphVNhUg2xu2F6RnWYa6iUqk44QkyOV/
+ZGce2rGdaMHHANh/AgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
+FOaiY5WPjE1/ejxiGsMqulO7wr+xMIHOBgNVHSMEgcYwgcOAFOaiY5WPjE1/ejxi
+GsMqulO7wr+xoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
YTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBHYXJkZW5zMRQwEgYDVQQKEwtaZXJvQywg
SW5jLjEMMAoGA1UECxMDSWNlMRgwFgYDVQQDEw9aZXJvQyBUZXN0IENBIDIxHTAb
-BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkAxRXF3ITbiskwDQYJKoZIhvcN
-AQEEBQADgYEAf96l4YCA6Q/CloSoSZdnxVRpUUb8OlyEISRNYVef51KXUjeQ8Kj1
-kza7n/RcCWUS0uaAqAiOEINc4JnQYNNSP+2BXcBqd0imwBOpS+itW0fmGyWFiBaA
-mtPmLuRxEl7sYfP4KTafLLLOan3pegeoz7g4OqHMsmG30fLgU+CcWBQ=
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkA46DIyjlqd88wDQYJKoZIhvcN
+AQELBQADgYEAk3P/0Ug+PySNOmoWLWbsiUTAWe6jfH6gkIJe7rbzjXpigeq2EVkq
+UHq53xhVnKtbSQF3P1l7OLEeEgqNaOG8tLzqMs2HXia5CDOIY1rQG+ZFdGZxkXmR
+lG/G9jfYRawlFTOQk9i5a1XbA19bX2mIEo9wjIXr0EgbIC+0cGx8O/Q=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/cakey1.pem b/cpp/test/IceSSL/certs/cakey1.pem
index 181032efc88..4441ddb56e8 100644
--- a/cpp/test/IceSSL/certs/cakey1.pem
+++ b/cpp/test/IceSSL/certs/cakey1.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKjr2OoeWxpC48D2
-b3pv6EADXwT41tZr5JilYnUbwpf9D2UWtmB1cwdVHkmpGgEs5nx4hl9+4TXuCNQA
-G7j9YWIPrBei8bshMC8Ndp41i433Ybzn2LmzqFEcs32LoShwjB3vhH4jNMC2Schi
-BOXHR9MuobtdlQi02oadqeK1skOxAgMBAAECgYBWQtIrhELrnzrlIDN/Z8RHZDFS
-vawgJUrANLyZpwpxSRZiff22NmP+W5Yy8XrJHN+6smWUQJvLSXoSoNeHWUUv1OxR
-70Anm0w2puNv7xaplgBNFsgqd+mB3MnlYSeNlZ5brjmvod0NIrj6Xc4VMtZ7euEH
-TgalrDBJzGWLPhQOTQJBANYnQ4Dc5f5gqKd8Rj+Awhzlz28BgvQMLskCA4OfGN1b
-pTEr7G7SnOekb17c+UzFirMV1c3wHtfUIcPYNr8NLZcCQQDJ7eiVQ6XElHj7DBtQ
-L1bxl/Q9tZ25HaWErHr6urW9beqZa3yuGRixyLuZN40hW8QvS0oC+yl4Ah46HxXu
-tdH3AkAv3+k0Vq3H913cy2h869D5WtrLqx/WZR7UavHUK+4IFmPQoUwi3kybcGRB
-Zc8JvaOrM3dvqX2LrG279YsPnOeTAkBbKkHbQdNRUQbdsLWUGgtSv5vRUHGI5c2Y
-fJZ5JFpwz3MfGNwNbd8sRMgNgHsDGH8WKxObDPHH8IzdCLPKNeQ5AkAB8wlt1ojS
-sR8sauxLho1oJv7LqqrooXaMVI/qkb7OZhLNZXeV+TFcU2DZBAOqCcJjajCvfcWG
-MlLkGKgCO1Kc
+MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMvEq209nJQXzzw/
+30CCTdqKopFDDrU+dWz29XLGXwxYq96KgBd0RJ8SooltvTq9lPXJ27T3hMjL8Ezv
+elhNfzFbqFlgCVWXgRWwXZ6b8ATzuJNSLHfKcRdxS/gKcZyAgug/iNqf0OYIfVup
+bh1bS0YK/i2ER80a/9OBRU7hFrTvAgMBAAECgYAi43CKirMFdDIqWbFK5USZN4Vw
+I7Af/iqy1nHeDfL2NTRwLPyTh3e8WL91klGE/jLEBqTUjlCw5KInOhWTiulM5sIn
+s+poEVMT8l2ti/ezaDDJV4tQZkAwrYzgmeW7aWCzK5PhKNK+wzvgvntbLyjS0pWf
+Gk84e7fDjraeadOYmQJBAPUCOK0K3iQ3WmgRfwJAeGoe8cgZBvQi53+iRS3xEUGR
+XF93Ql/SYVJnMKBaQ/ouXwFpclwT1slC0vuT6YaDc8sCQQDU6NOP7QOVEqDxyzlp
+ViGEjcFhc48ZUhE95VT8QIrmse1sVI+WWUiM3oY9NMFMZbQbQIHwsDDuSOqQXbW9
+0UbtAkEAyxTmSXiCnN5Mz4oBDqrFpKC1pDgqbV4pKMAmO2hf90s3l+HQYICPLrBd
+u+xWAB9DnHX81pmTJQuAugrmPBrldQJBALarsGDLJQiw+/+YsoBrEsTs7t8Sy9MY
+s4xciCcJpWM7g44vmyaPIg0jGx/GdJZ8qCO9m/8K3GCFlSMaE8Vxmh0CQEbS9gk1
+te4uEn4rH68xXs0ji2Hv8jFI4Gs9fAkRNADZ2E6fxgDjCJOJWvN9S4aifCq+9VYI
+BJE5lTKr5VZvpPM=
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/cakey2.pem b/cpp/test/IceSSL/certs/cakey2.pem
index 3362f1fe358..9e89d31d6fb 100644
--- a/cpp/test/IceSSL/certs/cakey2.pem
+++ b/cpp/test/IceSSL/certs/cakey2.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALaAI4V1BCJT/7ba
-sy1ws8sf7Am0T+avRuxr9/7QZ17F6J4rFW6SRYvjw2z03eN6+YuZBaocozUxt9Tk
-I0sDhc1+Dr7pj7mj+NoGjjSb7AMwQWu6rLEwD1SRCdewTMOQQ1ntHrCm5thhFxya
-hqhEXipBdfET/26f+QZphtaTCSxFAgMBAAECgYBKXMwchSG6GyAHEfYQfevEyK0V
-BzPHe4QasaPLYH++TkYKrON+uns8FQJ8UwpWtrUX/LIiLqkR88BELvFyj2zlLYUo
-InVbDwD26CwddFVufOwiJB7PGO2d5UtdhV5Mq9yttbkxC6sNSlhfJ/MjQ+Z8qaHk
-57qBpigZfiHtnXDgAQJBAO6jU+QRALypgoUA1o9mRxThCgVbQBVnb3b7jACCp+81
-NWMMvwScufuBjTlsLxECfDWP0SjnSYwA/HjMpc5QbMUCQQDDxz3aavWaMf0TFfrN
-6d5KDqLlAwf2BzwyWvYXNhJUHp3YE7g4pP2FR9smBzFZTd6rIGzTU0L7VXQtNHq0
-yLmBAkEAp/JEeS7KMPyvQcGsPzHA9t3F+q0UtbudA8TW7AkH/V6aGwJ+cNWIQowT
-gwUzPqpcFioIDtxvs1uCU9XbHw8U7QJBAI0GMF/tPA1ehNYCty8sj5r5AA3HKSzn
-+UysiSgfIwTFKR5E1ia3codXQ10ZQUr69LKAIOP4zf8Nhyoo61reXAECQQCws7oK
-MSiBHTl/kJnK0qW2vvTnGyvtWI+AfZEKfGtU/h6RElHEu5YKdioatFqgB2k4y+W5
-gzMQSGyB++MZWs1R
+MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBANsP1iadrxeJEmsi
+CP8px+rt6k7ILMsNVfQpStH7LMnLF4vTiqgLp5pWxMySPDwYqt4f0apl7klAL2y+
+GWxlwUgqxs1ygoYPEd09q68T1OxUKqnDrBO5EB10p6LGiphVNhUg2xu2F6RnWYa6
+iUqk44QkyOV/ZGce2rGdaMHHANh/AgMBAAECgYEAp0aEhKBMH3Cv+9bVf+Lrod1i
+2h3I9pSMWhFd7NIb9Ut8A23Zp1Ce/x/az0ura0h60XsCo1eKiazViffvefKJj6QU
+Gx/LYD7Vu0QZhAOg4bjSgzlk9MA4GfPahP79LHs6lXFancF4SprJhyzrOu0NUzpm
+gi8szjm8SQDDraI5eUECQQD1hT3DXwdnN3cISYt4plll43kAkam5TZwcmnSJlXlM
+/h9le4r0B7xcsvuRPki9Fx8ZkEWR/q5ftvSDvUEhDueHAkEA5Gl8l/Z/paITvMGD
+CPn1kb9sxxJnBqvssBOZ8Tyt9QJyxoZYcjq7pM9/m7RDxWvFkIBxfY6osQILUjPz
+iFdVSQJBAJPTJIvUVJ3F3Gpl9Y6wAdWB72HzUhBa9SqXqKEKGV3NB9RPXStu2O+r
+aCJcMOmA2V3H6strX0wL2Q7UzTj9Q1MCQQCUVAhsKtBEAJeuqT/t0VzulBAQytuK
+0pT21xPOO+h/xmJAl7fSHmACrBkjRRIJn24B49dPgRf9MuWlMUWCEay5AkAmwDMH
+OK78L9KGMDsOjNgTjuAtfAaULSrLYewZUjjxi5bXyulYp8qYc4kni0l1hlenBoy6
+m72lAuWnjktFI9uk
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/client.cnf b/cpp/test/IceSSL/certs/client.cnf
index 313354beb9f..ef9963f1dcd 100644
--- a/cpp/test/IceSSL/certs/client.cnf
+++ b/cpp/test/IceSSL/certs/client.cnf
@@ -31,7 +31,7 @@ certs = $dir # Where issued certs are kept.
RANDFILE = $dir/.rand # Private random number file.
default_days = 3650 # How long certs are valid.
-default_md = sha1 # The Message Digest type.
+default_md = sha256 # The Message Digest type.
preserve = yes # Keep passed DN ordering?
policy = ca_policy
@@ -59,7 +59,7 @@ subjectAltName = DNS:client, IP:127.0.0.1
[ req ]
default_bits = 1024
default_keyfile = c_rsa1024_priv.pem
-default_md = sha1
+default_md = sha256
prompt = no
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions
diff --git a/cpp/test/IceSSL/certs/dfea7658.0 b/cpp/test/IceSSL/certs/dfea7658.0
index 224da8829f6..1920d91f92d 100644
--- a/cpp/test/IceSSL/certs/dfea7658.0
+++ b/cpp/test/IceSSL/certs/dfea7658.0
@@ -1,22 +1,22 @@
-----BEGIN CERTIFICATE-----
-MIIDtTCCAx6gAwIBAgIJAJQxcKxQahWZMA0GCSqGSIb3DQEBBAUAMIGZMQswCQYD
+MIIDtTCCAx6gAwIBAgIJAPnm+BGwt4UAMA0GCSqGSIb3DQEBCwUAMIGZMQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBH
YXJkZW5zMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNlMRgwFgYD
VQQDEw9aZXJvQyBUZXN0IENBIDExHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2Mu
-Y29tMB4XDTEwMDMxNzE0NTAzM1oXDTIwMDMxNDE0NTAzM1owgZkxCzAJBgNVBAYT
+Y29tMB4XDTE0MDcxMTE3MTczNVoXDTI0MDcwODE3MTczNVowgZkxCzAJBgNVBAYT
AlVTMRAwDgYDVQQIEwdGbG9yaWRhMRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRl
bnMxFDASBgNVBAoTC1plcm9DLCBJbmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMT
D1plcm9DIFRlc3QgQ0EgMTEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20w
-gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKjr2OoeWxpC48D2b3pv6EADXwT4
-1tZr5JilYnUbwpf9D2UWtmB1cwdVHkmpGgEs5nx4hl9+4TXuCNQAG7j9YWIPrBei
-8bshMC8Ndp41i433Ybzn2LmzqFEcs32LoShwjB3vhH4jNMC2SchiBOXHR9Muobtd
-lQi02oadqeK1skOxAgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
-FKLZgCrkkY4Lhbfk1ShiT8fJi+jRMIHOBgNVHSMEgcYwgcOAFKLZgCrkkY4Lhbfk
-1ShiT8fJi+jRoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
+gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMvEq209nJQXzzw/30CCTdqKopFD
+DrU+dWz29XLGXwxYq96KgBd0RJ8SooltvTq9lPXJ27T3hMjL8EzvelhNfzFbqFlg
+CVWXgRWwXZ6b8ATzuJNSLHfKcRdxS/gKcZyAgug/iNqf0OYIfVupbh1bS0YK/i2E
+R80a/9OBRU7hFrTvAgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
+FNNkonhsjB+t8iZ5+BsFJcWLYqnzMIHOBgNVHSMEgcYwgcOAFNNkonhsjB+t8iZ5
++BsFJcWLYqnzoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
YTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBHYXJkZW5zMRQwEgYDVQQKEwtaZXJvQywg
SW5jLjEMMAoGA1UECxMDSWNlMRgwFgYDVQQDEw9aZXJvQyBUZXN0IENBIDExHTAb
-BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkAlDFwrFBqFZkwDQYJKoZIhvcN
-AQEEBQADgYEAGjLQC2Syy/mI5b7Ggl50sHxhkPvnGJIRwV+MAsv0iUZ/r/RKiPGr
-lAOi3ypiR4G20AYpx5qO3J0tY+hmTY5Wq6jsVsHVDoSftnUIESyayEoy6KEOZU1s
-GLCJ+/EZ7ap7+SYxb3tjYAupcO9gSK07b2Hxi6n1cGFNHD7O+k6Ca+k=
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkA+eb4EbC3hQAwDQYJKoZIhvcN
+AQELBQADgYEAw5pAUloxXHHcmm0AlrQs9icEv83+EfukmMWM9SCgFxv98LYAFQYl
+zZ/6WOF6+c+cVWbMSgiNbSwT6Sp0/m17rv1s6ysS8ZCC6Bu9xlsVwOEselipsKeL
+UFVFd5d2Gl+mFfvC18uoebmms6ZOFkvoUFLMedgg0oIhIk/yvkZhjfI=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/dh_params1024.der b/cpp/test/IceSSL/certs/dh_params1024.der
index c389d364e4b..31d9a4fbab3 100644
--- a/cpp/test/IceSSL/certs/dh_params1024.der
+++ b/cpp/test/IceSSL/certs/dh_params1024.der
Binary files differ
diff --git a/cpp/test/IceSSL/certs/dh_params512.der b/cpp/test/IceSSL/certs/dh_params512.der
index fce094731f9..531fb0a15b0 100644
--- a/cpp/test/IceSSL/certs/dh_params512.der
+++ b/cpp/test/IceSSL/certs/dh_params512.der
Binary files differ
diff --git a/cpp/test/IceSSL/certs/dsaparam1024.pem b/cpp/test/IceSSL/certs/dsaparam1024.pem
index 3333e2dff00..1c7eb74624c 100644
--- a/cpp/test/IceSSL/certs/dsaparam1024.pem
+++ b/cpp/test/IceSSL/certs/dsaparam1024.pem
@@ -1,9 +1,9 @@
-----BEGIN DSA PARAMETERS-----
-MIIBHgKBgQDCpJmPrpUYPqy+H92lO++2UyPoNnE8/Fw/rDQ8MVUgWToS/j3ppbWK
-TEAXeI0wxGc2IbnvsmxZt+EjRoFXO/WvM6SeJefDG4juAbayjAuqQQ9Wio/aiMP+
-DzZgFBE3QTHQGLb/JnN5rvXCoLuDI/EBu6JRHG/gb31DCMcZvynkSwIVAPMNCW/T
-ifAOffmaYsE8FwF+FnTlAoGAXiIn/AHyWADXaPPTSJ335509BUoJIRffk6xlk92z
-bU9raenypYen9jfEhcXteG3C+iwwL+U3i7aYthlzaoyoP4HCjaNf1kKQdW2yAgzy
-lquPGMFYv5iItpIGa9QHRY/f2vB3pp5V3AUUihrwXoA4BtPjPm0Lm+8AskTsUGIw
-1a8=
+MIIBHgKBgQCgHlioTAGKebFh+a7JqJAmnJIpQfZQkqhmfFKAV+WIRWaL7/0Fqq9T
+IXJwWy4ABb4NbUukV7iXJdsZ3XVIUOw3IFcaaNz59jIfR9KOBiyyUQ36hjnoMg9p
+FpRcfMDcRJ//ay4Necxr/8GNtfEt7KWkqhXjVZOOnWlhQKP0sDWpcQIVALAWEBil
+R8f4ahOw4TsIEZIhsDDpAoGADeguT7sVzkOco9FHTXjhQ7h1S4qdh9Z57jECJkgh
+AjKfnoonUrFnIOCtKLT8Lzbd9YtlgVhBr9Fi8NfhAjWx4vLdbqPqLHjL3SpP5eLr
+1gI2u3YohR+D1JjpX1f6X3GCN75EMbb+Q56TkSr5EsDtwQ3BFHvbU1L6egDjBwcq
+s/0=
-----END DSA PARAMETERS-----
diff --git a/cpp/test/IceSSL/certs/fd61172a.0 b/cpp/test/IceSSL/certs/fd61172a.0
index 224da8829f6..1920d91f92d 100644
--- a/cpp/test/IceSSL/certs/fd61172a.0
+++ b/cpp/test/IceSSL/certs/fd61172a.0
@@ -1,22 +1,22 @@
-----BEGIN CERTIFICATE-----
-MIIDtTCCAx6gAwIBAgIJAJQxcKxQahWZMA0GCSqGSIb3DQEBBAUAMIGZMQswCQYD
+MIIDtTCCAx6gAwIBAgIJAPnm+BGwt4UAMA0GCSqGSIb3DQEBCwUAMIGZMQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBH
YXJkZW5zMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNlMRgwFgYD
VQQDEw9aZXJvQyBUZXN0IENBIDExHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2Mu
-Y29tMB4XDTEwMDMxNzE0NTAzM1oXDTIwMDMxNDE0NTAzM1owgZkxCzAJBgNVBAYT
+Y29tMB4XDTE0MDcxMTE3MTczNVoXDTI0MDcwODE3MTczNVowgZkxCzAJBgNVBAYT
AlVTMRAwDgYDVQQIEwdGbG9yaWRhMRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRl
bnMxFDASBgNVBAoTC1plcm9DLCBJbmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMT
D1plcm9DIFRlc3QgQ0EgMTEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20w
-gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKjr2OoeWxpC48D2b3pv6EADXwT4
-1tZr5JilYnUbwpf9D2UWtmB1cwdVHkmpGgEs5nx4hl9+4TXuCNQAG7j9YWIPrBei
-8bshMC8Ndp41i433Ybzn2LmzqFEcs32LoShwjB3vhH4jNMC2SchiBOXHR9Muobtd
-lQi02oadqeK1skOxAgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
-FKLZgCrkkY4Lhbfk1ShiT8fJi+jRMIHOBgNVHSMEgcYwgcOAFKLZgCrkkY4Lhbfk
-1ShiT8fJi+jRoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
+gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMvEq209nJQXzzw/30CCTdqKopFD
+DrU+dWz29XLGXwxYq96KgBd0RJ8SooltvTq9lPXJ27T3hMjL8EzvelhNfzFbqFlg
+CVWXgRWwXZ6b8ATzuJNSLHfKcRdxS/gKcZyAgug/iNqf0OYIfVupbh1bS0YK/i2E
+R80a/9OBRU7hFrTvAgMBAAGjggEBMIH+MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYE
+FNNkonhsjB+t8iZ5+BsFJcWLYqnzMIHOBgNVHSMEgcYwgcOAFNNkonhsjB+t8iZ5
++BsFJcWLYqnzoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlk
YTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBHYXJkZW5zMRQwEgYDVQQKEwtaZXJvQywg
SW5jLjEMMAoGA1UECxMDSWNlMRgwFgYDVQQDEw9aZXJvQyBUZXN0IENBIDExHTAb
-BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkAlDFwrFBqFZkwDQYJKoZIhvcN
-AQEEBQADgYEAGjLQC2Syy/mI5b7Ggl50sHxhkPvnGJIRwV+MAsv0iUZ/r/RKiPGr
-lAOi3ypiR4G20AYpx5qO3J0tY+hmTY5Wq6jsVsHVDoSftnUIESyayEoy6KEOZU1s
-GLCJ+/EZ7ap7+SYxb3tjYAupcO9gSK07b2Hxi6n1cGFNHD7O+k6Ca+k=
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkA+eb4EbC3hQAwDQYJKoZIhvcN
+AQELBQADgYEAw5pAUloxXHHcmm0AlrQs9icEv83+EfukmMWM9SCgFxv98LYAFQYl
+zZ/6WOF6+c+cVWbMSgiNbSwT6Sp0/m17rv1s6ysS8ZCC6Bu9xlsVwOEselipsKeL
+UFVFd5d2Gl+mFfvC18uoebmms6ZOFkvoUFLMedgg0oIhIk/yvkZhjfI=
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/makecerts b/cpp/test/IceSSL/certs/makecerts
index f7d188bf9c5..87993784581 100755
--- a/cpp/test/IceSSL/certs/makecerts
+++ b/cpp/test/IceSSL/certs/makecerts
@@ -67,6 +67,9 @@ if ! [ -f cakey1.pem ]; then
-keyform PEM -out $TMP/req.pem
openssl ca -config server.cnf -batch -in $TMP/req.pem -out s_rsa_nopass_ca1_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem
+
+ openssl pkcs12 -in s_rsa_nopass_ca1_pub.pem -inkey s_rsa_nopass_ca1_priv.pem -export -out s_rsa_ca1.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
#
# Create a server certificate and key (with password).
@@ -79,7 +82,10 @@ if ! [ -f cakey1.pem ]; then
-keyform PEM -out $TMP/req.pem
openssl ca -config server.cnf -batch -in $TMP/req.pem -out s_rsa_pass_ca1_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem -key server
-
+
+ openssl pkcs12 -in c_rsa_nopass_ca1_pub.pem -inkey c_rsa_nopass_ca1_priv.pem -export -out c_rsa_ca1.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password -passin pass:password
+
#
# Create an expired server certificate and key (no password).
#
@@ -91,6 +97,9 @@ if ! [ -f cakey1.pem ]; then
-keyform PEM -out $TMP/req.pem
openssl ca -config server.cnf -batch -in $TMP/req.pem -out s_rsa_nopass_ca1_exp_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem -enddate 051231000000Z
+
+ openssl pkcs12 -in s_rsa_nopass_ca1_exp_pub.pem -inkey s_rsa_nopass_ca1_exp_priv.pem -export -out s_rsa_ca1_exp.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
#
# Create a server certificate and key using "127.0.0.1" as the common name and without
@@ -106,6 +115,9 @@ if ! [ -f cakey1.pem ]; then
openssl ca -config server_cn.cnf -batch -in $TMP/req.pem -out s_rsa_nopass_ca1_cn1_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem
rm -f server_cn.cnf
+
+ openssl pkcs12 -in s_rsa_nopass_ca1_cn1_pub.pem -inkey s_rsa_nopass_ca1_cn1_priv.pem -export -out s_rsa_ca1_cn1.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
#
# Create a server certificate and key using "127.0.0.11" as the common name and without
@@ -122,6 +134,9 @@ if ! [ -f cakey1.pem ]; then
openssl ca -config server_cn.cnf -batch -in $TMP/req.pem -out s_rsa_nopass_ca1_cn2_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem
rm -f server_cn.cnf
+
+ openssl pkcs12 -in s_rsa_nopass_ca1_cn2_pub.pem -inkey s_rsa_nopass_ca1_cn2_priv.pem -export -out s_rsa_ca1_cn2.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
#
# Create a client certificate and key (no password).
@@ -135,6 +150,8 @@ if ! [ -f cakey1.pem ]; then
openssl ca -config client.cnf -batch -in $TMP/req.pem -out c_rsa_nopass_ca1_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem
+ openssl pkcs12 -in c_rsa_nopass_ca1_pub.pem -inkey c_rsa_nopass_ca1_priv.pem -export -out c_rsa_ca1.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
#
# Create a client certificate and key (with password).
#
@@ -146,6 +163,9 @@ if ! [ -f cakey1.pem ]; then
-keyform PEM -out $TMP/req.pem
openssl ca -config client.cnf -batch -in $TMP/req.pem -out c_rsa_pass_ca1_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem -key client
+
+ openssl pkcs12 -in c_rsa_pass_ca1_pub.pem -inkey c_rsa_pass_ca1_priv.pem -export -out c_rsa_pass_ca1.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:client -passin pass:client
#
# Create an expired client certificate and key (no password).
@@ -158,6 +178,9 @@ if ! [ -f cakey1.pem ]; then
-keyform PEM -out $TMP/req.pem
openssl ca -config client.cnf -batch -in $TMP/req.pem -out c_rsa_nopass_ca1_exp_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem -enddate 051231000000Z
+
+ openssl pkcs12 -in c_rsa_nopass_ca1_exp_pub.pem -inkey c_rsa_nopass_ca1_exp_priv.pem -export -out c_rsa_ca1_exp.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
#
# Create a server certificate and key (no password) using a different CA.
@@ -170,7 +193,10 @@ if ! [ -f cakey1.pem ]; then
-keyform PEM -out $TMP/req.pem
openssl ca -config server.cnf -batch -in $TMP/req.pem -out s_rsa_nopass_ca2_pub.pem \
-cert cacert2.pem -keyfile cakey2.pem
-
+
+ openssl pkcs12 -in s_rsa_nopass_ca2_pub.pem -inkey s_rsa_nopass_ca2_priv.pem -export -out s_rsa_nopass_ca2.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
+
#
# Create a client certificate and key (no password) using a different CA.
#
@@ -182,6 +208,9 @@ if ! [ -f cakey1.pem ]; then
-keyform PEM -out $TMP/req.pem
openssl ca -config client.cnf -batch -in $TMP/req.pem -out c_rsa_nopass_ca2_pub.pem \
-cert cacert2.pem -keyfile cakey2.pem
+
+ openssl pkcs12 -in c_rsa_nopass_ca2_pub.pem -inkey c_rsa_nopass_ca2_priv.pem -export -out c_rsa_ca2.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
rm -f dsaparam1024.pem
fi
@@ -211,6 +240,9 @@ if ! [ -f dsaparam1024.pem ]; then
-keyform PEM -out $TMP/req.pem
openssl ca -config server.cnf -batch -in $TMP/req.pem -out s_dsa_nopass_ca1_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem
+
+ openssl pkcs12 -in s_dsa_nopass_ca1_pub.pem -inkey s_dsa_nopass_ca1_priv.pem -export -out s_dsa_ca1.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
#
# Create a client certificate and key (no password).
@@ -223,6 +255,9 @@ if ! [ -f dsaparam1024.pem ]; then
-keyform PEM -out $TMP/req.pem
openssl ca -config client.cnf -batch -in $TMP/req.pem -out c_dsa_nopass_ca1_pub.pem \
-cert cacert1.pem -keyfile cakey1.pem
+
+ openssl pkcs12 -in c_dsa_nopass_ca1_pub.pem -inkey c_dsa_nopass_ca1_priv.pem -export -out c_dsa_ca1.pfx \
+ -certpbe PBE-SHA1-RC4-40 -keypbe PBE-SHA1-RC4-40 -passout pass:password
fi
#
diff --git a/cpp/test/IceSSL/certs/s_dsa_ca1.pfx b/cpp/test/IceSSL/certs/s_dsa_ca1.pfx
new file mode 100644
index 00000000000..5ba0726be1a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_dsa_ca1.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_dsa_nopass_ca1_priv.pem b/cpp/test/IceSSL/certs/s_dsa_nopass_ca1_priv.pem
index 8b7552ab92f..4c0f9e2ed55 100644
--- a/cpp/test/IceSSL/certs/s_dsa_nopass_ca1_priv.pem
+++ b/cpp/test/IceSSL/certs/s_dsa_nopass_ca1_priv.pem
@@ -1,9 +1,9 @@
-----BEGIN PRIVATE KEY-----
-MIIBSwIBADCCASsGByqGSM44BAEwggEeAoGBAMKkmY+ulRg+rL4f3aU777ZTI+g2
-cTz8XD+sNDwxVSBZOhL+PemltYpMQBd4jTDEZzYhue+ybFm34SNGgVc79a8zpJ4l
-58MbiO4BtrKMC6pBD1aKj9qIw/4PNmAUETdBMdAYtv8mc3mu9cKgu4Mj8QG7olEc
-b+BvfUMIxxm/KeRLAhUA8w0Jb9OJ8A59+ZpiwTwXAX4WdOUCgYBeIif8AfJYANdo
-89NInffnnT0FSgkhF9+TrGWT3bNtT2tp6fKlh6f2N8SFxe14bcL6LDAv5TeLtpi2
-GXNqjKg/gcKNo1/WQpB1bbICDPKWq48YwVi/mIi2kgZr1AdFj9/a8HemnlXcBRSK
-GvBegDgG0+M+bQub7wCyROxQYjDVrwQXAhUA20lBJyO3GZDvPqyVG3eIO0qAnoc=
+MIIBSgIBADCCASsGByqGSM44BAEwggEeAoGBAKAeWKhMAYp5sWH5rsmokCackilB
+9lCSqGZ8UoBX5YhFZovv/QWqr1MhcnBbLgAFvg1tS6RXuJcl2xnddUhQ7DcgVxpo
+3Pn2Mh9H0o4GLLJRDfqGOegyD2kWlFx8wNxEn/9rLg15zGv/wY218S3spaSqFeNV
+k46daWFAo/SwNalxAhUAsBYQGKVHx/hqE7DhOwgRkiGwMOkCgYAN6C5PuxXOQ5yj
+0UdNeOFDuHVLip2H1nnuMQImSCECMp+eiidSsWcg4K0otPwvNt31i2WBWEGv0WLw
+1+ECNbHi8t1uo+oseMvdKk/l4uvWAja7diiFH4PUmOlfV/pfcYI3vkQxtv5DnpOR
+KvkSwO3BDcEUe9tTUvp6AOMHByqz/QQWAhRDQEbgqB1i+KcPlBxW8y5NNkXsHA==
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_dsa_nopass_ca1_pub.pem b/cpp/test/IceSSL/certs/s_dsa_nopass_ca1_pub.pem
index 31cc2dc6c39..e7ee11f584c 100644
--- a/cpp/test/IceSSL/certs/s_dsa_nopass_ca1_pub.pem
+++ b/cpp/test/IceSSL/certs/s_dsa_nopass_ca1_pub.pem
@@ -2,95 +2,95 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:34 2010 GMT
- Not After : Mar 14 14:50:34 2020 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
+ Not After : Jul 8 17:17:36 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Server
Subject Public Key Info:
Public Key Algorithm: dsaEncryption
pub:
- 21:c0:ea:72:c2:8e:c1:f0:ba:93:98:c1:bc:51:84:
- ea:9d:54:c4:ba:d2:d0:80:90:4e:7c:59:dd:e4:b0:
- 4f:4d:c4:09:2b:ed:15:46:29:dd:43:77:e5:25:66:
- 49:5a:4b:be:f4:99:aa:b2:31:b4:95:7e:ad:57:c1:
- 22:c0:41:96:13:f8:af:13:27:55:5d:be:7a:1d:a3:
- 4e:2d:fa:89:3d:1c:85:55:1f:1c:34:91:57:61:6d:
- 95:b0:d2:9d:fb:65:5b:1d:f2:85:a8:a9:9e:4f:5b:
- c4:33:85:93:a1:9b:c1:f8:f9:e2:bc:94:06:c0:ca:
- 79:47:95:00:f8:86:aa:94
+ 00:84:7d:97:1d:0f:2a:5c:0d:bb:3d:ef:0d:31:1d:
+ ca:bf:95:0a:dd:1f:47:4c:fc:32:72:4a:8f:78:a5:
+ e8:31:d2:93:e0:6e:97:61:bf:b8:00:92:a4:e8:73:
+ 41:3d:cc:9e:1c:b2:cf:c5:ae:9c:a9:ea:3d:4f:90:
+ d2:7c:bd:0a:11:e9:da:cc:e2:d3:2b:8a:af:5b:1f:
+ 3f:33:60:5c:70:cd:50:e2:35:ea:71:f7:95:45:48:
+ 8f:a3:89:2a:ae:12:84:09:a2:ec:b7:52:bb:b2:af:
+ f3:64:4d:58:f0:58:0e:a5:25:04:c8:c4:48:89:b3:
+ f9:1a:a8:aa:2a:b2:3b:8f:06
P:
- 00:c2:a4:99:8f:ae:95:18:3e:ac:be:1f:dd:a5:3b:
- ef:b6:53:23:e8:36:71:3c:fc:5c:3f:ac:34:3c:31:
- 55:20:59:3a:12:fe:3d:e9:a5:b5:8a:4c:40:17:78:
- 8d:30:c4:67:36:21:b9:ef:b2:6c:59:b7:e1:23:46:
- 81:57:3b:f5:af:33:a4:9e:25:e7:c3:1b:88:ee:01:
- b6:b2:8c:0b:aa:41:0f:56:8a:8f:da:88:c3:fe:0f:
- 36:60:14:11:37:41:31:d0:18:b6:ff:26:73:79:ae:
- f5:c2:a0:bb:83:23:f1:01:bb:a2:51:1c:6f:e0:6f:
- 7d:43:08:c7:19:bf:29:e4:4b
+ 00:a0:1e:58:a8:4c:01:8a:79:b1:61:f9:ae:c9:a8:
+ 90:26:9c:92:29:41:f6:50:92:a8:66:7c:52:80:57:
+ e5:88:45:66:8b:ef:fd:05:aa:af:53:21:72:70:5b:
+ 2e:00:05:be:0d:6d:4b:a4:57:b8:97:25:db:19:dd:
+ 75:48:50:ec:37:20:57:1a:68:dc:f9:f6:32:1f:47:
+ d2:8e:06:2c:b2:51:0d:fa:86:39:e8:32:0f:69:16:
+ 94:5c:7c:c0:dc:44:9f:ff:6b:2e:0d:79:cc:6b:ff:
+ c1:8d:b5:f1:2d:ec:a5:a4:aa:15:e3:55:93:8e:9d:
+ 69:61:40:a3:f4:b0:35:a9:71
Q:
- 00:f3:0d:09:6f:d3:89:f0:0e:7d:f9:9a:62:c1:3c:
- 17:01:7e:16:74:e5
+ 00:b0:16:10:18:a5:47:c7:f8:6a:13:b0:e1:3b:08:
+ 11:92:21:b0:30:e9
G:
- 5e:22:27:fc:01:f2:58:00:d7:68:f3:d3:48:9d:f7:
- e7:9d:3d:05:4a:09:21:17:df:93:ac:65:93:dd:b3:
- 6d:4f:6b:69:e9:f2:a5:87:a7:f6:37:c4:85:c5:ed:
- 78:6d:c2:fa:2c:30:2f:e5:37:8b:b6:98:b6:19:73:
- 6a:8c:a8:3f:81:c2:8d:a3:5f:d6:42:90:75:6d:b2:
- 02:0c:f2:96:ab:8f:18:c1:58:bf:98:88:b6:92:06:
- 6b:d4:07:45:8f:df:da:f0:77:a6:9e:55:dc:05:14:
- 8a:1a:f0:5e:80:38:06:d3:e3:3e:6d:0b:9b:ef:00:
- b2:44:ec:50:62:30:d5:af
+ 0d:e8:2e:4f:bb:15:ce:43:9c:a3:d1:47:4d:78:e1:
+ 43:b8:75:4b:8a:9d:87:d6:79:ee:31:02:26:48:21:
+ 02:32:9f:9e:8a:27:52:b1:67:20:e0:ad:28:b4:fc:
+ 2f:36:dd:f5:8b:65:81:58:41:af:d1:62:f0:d7:e1:
+ 02:35:b1:e2:f2:dd:6e:a3:ea:2c:78:cb:dd:2a:4f:
+ e5:e2:eb:d6:02:36:bb:76:28:85:1f:83:d4:98:e9:
+ 5f:57:fa:5f:71:82:37:be:44:31:b6:fe:43:9e:93:
+ 91:2a:f9:12:c0:ed:c1:0d:c1:14:7b:db:53:52:fa:
+ 7a:00:e3:07:07:2a:b3:fd
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- A1:C2:EE:A9:AA:1A:59:CF:A3:32:8D:0A:A2:4C:DA:82:F3:5B:AD:6B
+ ED:94:32:2B:1F:41:F9:66:B7:78:D2:D8:53:78:EC:8F:46:C7:37:99
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Subject Alternative Name:
DNS:server, IP Address:127.0.0.1
X509v3 Issuer Alternative Name:
email:issuer@zeroc.com, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 26:ec:6e:ec:82:e2:6c:2d:20:df:79:c6:9f:db:a1:25:32:53:
- 7c:e7:40:d2:cb:7e:e4:27:c2:be:4c:43:6f:b7:fc:b0:8c:bc:
- e0:08:99:d2:7f:62:0c:a9:54:13:87:e6:f3:10:78:0d:a8:f6:
- d7:4a:70:80:49:be:11:73:38:12:ca:e9:2f:b3:af:2d:2f:7b:
- 32:3e:45:3d:d6:29:9e:b5:d0:a7:d4:b6:4f:a3:91:d3:40:9e:
- 13:8c:fc:83:e4:0a:7d:92:db:b1:fe:2c:de:b2:d8:1e:2f:fc:
- 48:fc:e2:e6:50:f1:eb:26:3d:69:f6:d2:f3:a4:ed:6d:17:19:
- 12:e7
+ Signature Algorithm: sha256WithRSAEncryption
+ 4f:e6:32:93:f7:6f:27:27:d2:1f:9c:24:f6:8e:a3:35:87:6c:
+ 16:7c:a6:5a:35:82:d0:6b:22:76:b2:8f:fe:7b:8a:6b:1e:00:
+ 8a:af:c3:fe:1a:78:47:9d:fb:49:72:b9:7e:8e:cf:ad:a6:85:
+ 47:ea:a6:c2:84:cc:92:c6:5a:43:47:15:83:78:fd:e9:8b:f9:
+ 83:4f:59:2e:40:81:47:92:6e:c3:93:aa:09:f9:51:8f:bd:5d:
+ 4a:53:cf:8d:3b:e4:2d:2e:51:de:b9:82:cf:f1:17:e3:f9:ac:
+ a1:ea:b3:68:f4:e9:c9:e5:54:10:ae:01:1b:3f:d1:97:1b:12:
+ ab:b5
-----BEGIN CERTIFICATE-----
-MIIE2DCCBEGgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIE2TCCBEKgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzRaFw0yMDAzMTQxNDUwMzRaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0yNDA3MDgxNzE3MzZaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGU2VydmVy
-MIIBtjCCASsGByqGSM44BAEwggEeAoGBAMKkmY+ulRg+rL4f3aU777ZTI+g2cTz8
-XD+sNDwxVSBZOhL+PemltYpMQBd4jTDEZzYhue+ybFm34SNGgVc79a8zpJ4l58Mb
-iO4BtrKMC6pBD1aKj9qIw/4PNmAUETdBMdAYtv8mc3mu9cKgu4Mj8QG7olEcb+Bv
-fUMIxxm/KeRLAhUA8w0Jb9OJ8A59+ZpiwTwXAX4WdOUCgYBeIif8AfJYANdo89NI
-nffnnT0FSgkhF9+TrGWT3bNtT2tp6fKlh6f2N8SFxe14bcL6LDAv5TeLtpi2GXNq
-jKg/gcKNo1/WQpB1bbICDPKWq48YwVi/mIi2kgZr1AdFj9/a8HemnlXcBRSKGvBe
-gDgG0+M+bQub7wCyROxQYjDVrwOBhAACgYAhwOpywo7B8LqTmMG8UYTqnVTEutLQ
-gJBOfFnd5LBPTcQJK+0VRindQ3flJWZJWku+9JmqsjG0lX6tV8EiwEGWE/ivEydV
-Xb56HaNOLfqJPRyFVR8cNJFXYW2VsNKd+2VbHfKFqKmeT1vEM4WToZvB+PnivJQG
-wMp5R5UA+IaqlKOCATswggE3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFKHC7qmqGlnP
-ozKNCqJM2oLzW61rMIHOBgNVHSMEgcYwgcOAFKLZgCrkkY4Lhbfk1ShiT8fJi+jR
-oYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxvcmlkYTEbMBkGA1UE
-BxMSUGFsbSBCZWFjaCBHYXJkZW5zMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoG
-A1UECxMDSWNlMRgwFgYDVQQDEw9aZXJvQyBUZXN0IENBIDExHTAbBgkqhkiG9w0B
-CQEWDmluZm9AemVyb2MuY29tggkAlDFwrFBqFZkwFwYDVR0RBBAwDoIGc2VydmVy
-hwR/AAABMCEGA1UdEgQaMBiBEGlzc3VlckB6ZXJvYy5jb22HBH8AAAEwDQYJKoZI
-hvcNAQEFBQADgYEAJuxu7ILibC0g33nGn9uhJTJTfOdA0st+5CfCvkxDb7f8sIy8
-4AiZ0n9iDKlUE4fm8xB4Daj210pwgEm+EXM4EsrpL7OvLS97Mj5FPdYpnrXQp9S2
-T6OR00CeE4z8g+QKfZLbsf4s3rLYHi/8SPzi5lDx6yY9afbS86TtbRcZEuc=
+MIIBtzCCASsGByqGSM44BAEwggEeAoGBAKAeWKhMAYp5sWH5rsmokCackilB9lCS
+qGZ8UoBX5YhFZovv/QWqr1MhcnBbLgAFvg1tS6RXuJcl2xnddUhQ7DcgVxpo3Pn2
+Mh9H0o4GLLJRDfqGOegyD2kWlFx8wNxEn/9rLg15zGv/wY218S3spaSqFeNVk46d
+aWFAo/SwNalxAhUAsBYQGKVHx/hqE7DhOwgRkiGwMOkCgYAN6C5PuxXOQ5yj0UdN
+eOFDuHVLip2H1nnuMQImSCECMp+eiidSsWcg4K0otPwvNt31i2WBWEGv0WLw1+EC
+NbHi8t1uo+oseMvdKk/l4uvWAja7diiFH4PUmOlfV/pfcYI3vkQxtv5DnpORKvkS
+wO3BDcEUe9tTUvp6AOMHByqz/QOBhQACgYEAhH2XHQ8qXA27Pe8NMR3Kv5UK3R9H
+TPwyckqPeKXoMdKT4G6XYb+4AJKk6HNBPcyeHLLPxa6cqeo9T5DSfL0KEenazOLT
+K4qvWx8/M2BccM1Q4jXqcfeVRUiPo4kqrhKECaLst1K7sq/zZE1Y8FgOpSUEyMRI
+ibP5GqiqKrI7jwajggE7MIIBNzAJBgNVHRMEAjAAMB0GA1UdDgQWBBTtlDIrH0H5
+Zrd40thTeOyPRsc3mTCBzgYDVR0jBIHGMIHDgBTTZKJ4bIwfrfImefgbBSXFi2Kp
+86GBn6SBnDCBmTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNV
+BAcTElBhbG0gQmVhY2ggR2FyZGVuczEUMBIGA1UEChMLWmVyb0MsIEluYy4xDDAK
+BgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVyb0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcN
+AQkBFg5pbmZvQHplcm9jLmNvbYIJAPnm+BGwt4UAMBcGA1UdEQQQMA6CBnNlcnZl
+cocEfwAAATAhBgNVHRIEGjAYgRBpc3N1ZXJAemVyb2MuY29thwR/AAABMA0GCSqG
+SIb3DQEBCwUAA4GBAE/mMpP3bycn0h+cJPaOozWHbBZ8plo1gtBrInayj/57imse
+AIqvw/4aeEed+0lyuX6Oz62mhUfqpsKEzJLGWkNHFYN4/emL+YNPWS5AgUeSbsOT
+qgn5UY+9XUpTz4075C0uUd65gs/xF+P5rKHqs2j06cnlVBCuARs/0ZcbEqu1
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca1.pfx b/cpp/test/IceSSL/certs/s_rsa_ca1.pfx
new file mode 100644
index 00000000000..d5512e4234c
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca1.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca1_cn1.pfx b/cpp/test/IceSSL/certs/s_rsa_ca1_cn1.pfx
new file mode 100644
index 00000000000..39fa6c7e96c
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca1_cn1.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca1_cn2.pfx b/cpp/test/IceSSL/certs/s_rsa_ca1_cn2.pfx
new file mode 100644
index 00000000000..63cbb1e626c
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca1_cn2.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca1_exp.pfx b/cpp/test/IceSSL/certs/s_rsa_ca1_exp.pfx
new file mode 100644
index 00000000000..686ce5ba7ad
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca1_exp.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_priv.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_priv.pem
index 2c6b68217d0..7d59754928b 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_priv.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_priv.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANH+00Sh/34xwDRS
-P1vvMSn7twkYEDcOewTQsCwKn4x3rUjLVuNlrdtP2ODzQBGjeyzXWHr3Nv0wRqBI
-rCUT4AIEptuNPo3sm5xeKMTx1PyQLiTnkfNWjdEnlwCtdoij0vvnWBjouHPXmC1i
-sZWnykSG76TkKd9eUwAh3lm6PkyJAgMBAAECgYBZYpabCDmwhYzCuJ+vikjrDfID
-NPLx/H/wtMPIe10edXKVIbiCYq12RK6UUfZbi7LKi39mGASYEQx+/XAI+ETI0ThI
-cbOzrElRV4Y9YuPj4j2/FCiCw7RtZxecRk/kUh13Uzz1kKkn+8U11PofJHjJKJwk
-c/4TV5dYYH7lEu6HYQJBAPlu65DzuXySFWkDrx3syZ6wu5mvVWwbCrnkdGnMRKft
-DdEAlxZgx6rvzwrr0ai2YCKKXMvtYKm40yWzcW6fY0cCQQDXhhwXDQm8yLkXujh4
-MwVLxqr+YUTAKxyDPFFndCJXW4dMjnzstdvZbiKizbrn4Ql0RzVMjvJbOxpWxOHR
-bJmvAkEAlauuJGtq6MnLmRkB0kYMcXGBEGX6LwVG+WaRSA6vP8hp2vissFvgU7zU
-EqyQQNk2dGNr7V4B+7WQ1XWIYiW37wJAHNCHTOWnWaAUbwGsrxVTLfBfyCbFBFQ/
-OaSE1aoHNVq9WhTqytL9k7JP2yhaRsolc3BZxeSOrnfWa6di8ZbtbQJBAJj89Kj7
-TfGUh7a2iVyYkyq5ckWMI4KKyACDUc7CSXpW/uJIyPxMnIefL4ACKGNfP8RdJI4c
-dHg9PnDMZG4GuiE=
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALulBH1rmk/AN6KH
+EdZEmcEb+nIAu5Fm0ccOGOY7awVV+eaCKk9iAlxmDBJXjc4gtz7yxtru3t0ZQo1k
+TWlPSTCThLhUjvCc8YquLN/+TOPXWvR68a+TzzA4u7FkcDmcWMuiNB1swj4Vn62p
+8ul+VCjKQhuRArAX+ANhwxf8CWu1AgMBAAECgYA7BNMds6tsbBPTndIhZ6BImcky
+9EIKoKFYj3mLaKLnobwhIU23fCcr8rjXSAyFCcs5FFkxYTJdrmU9XY/vkI1/HPKF
+UD/p2MEtewbbfs0xpcwvfZZzgZpJxMWYFLzL35N6FAYvSFsjIk2ezCdHVofuUft+
+Jmvp2miLKAoEEhum4QJBAN7jvEihXqKqg4ZrQKtK4gFroe6yVBYGPhFTBqACrRl7
+Nsv4jzjKdV/Xgz2Agky/xgIzJ6xD7SDVBXaSCb0guo0CQQDXhPNrAflZFiFLpOCk
+Twnu5lojjZkdj/lIKqWMC61E0GvSaqiDTCes5Ie+0s7yf5kEkVqtV3dqHC3Wdir+
+t3/JAkBnM9l1Y8qW1Q8LSVPrPEQDVlvnUwjeHcvVZ7UUl8igmM2ZiiB+sjfAxeAN
+tRggA1fiot8Gw3jjj970tM/vk1ztAkEAvDOflZx9sGwA21u5yAI1fGev40gto4Es
+gPas5iT0RBl1bqQxT6bbJsHSQLM6gM0oRLLh6mltID5HUPaUCScY8QJAN5OSf4Ad
+Zd0FnCDLjH3JnySL/8aGwJKyjUhY2KoCafrzFZh0k00RIvxOtOcuiqOWZAt87Clh
+IJXbEIDizt+WtQ==
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_pub.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_pub.pem
index 4fa5fbd50f3..261fb4bc6d1 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_pub.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn1_pub.pem
@@ -2,66 +2,66 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:33 2010 GMT
- Not After : Mar 14 14:50:33 2020 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
+ Not After : Jul 8 17:17:36 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=127.0.0.1
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:d1:fe:d3:44:a1:ff:7e:31:c0:34:52:3f:5b:ef:
- 31:29:fb:b7:09:18:10:37:0e:7b:04:d0:b0:2c:0a:
- 9f:8c:77:ad:48:cb:56:e3:65:ad:db:4f:d8:e0:f3:
- 40:11:a3:7b:2c:d7:58:7a:f7:36:fd:30:46:a0:48:
- ac:25:13:e0:02:04:a6:db:8d:3e:8d:ec:9b:9c:5e:
- 28:c4:f1:d4:fc:90:2e:24:e7:91:f3:56:8d:d1:27:
- 97:00:ad:76:88:a3:d2:fb:e7:58:18:e8:b8:73:d7:
- 98:2d:62:b1:95:a7:ca:44:86:ef:a4:e4:29:df:5e:
- 53:00:21:de:59:ba:3e:4c:89
+ 00:bb:a5:04:7d:6b:9a:4f:c0:37:a2:87:11:d6:44:
+ 99:c1:1b:fa:72:00:bb:91:66:d1:c7:0e:18:e6:3b:
+ 6b:05:55:f9:e6:82:2a:4f:62:02:5c:66:0c:12:57:
+ 8d:ce:20:b7:3e:f2:c6:da:ee:de:dd:19:42:8d:64:
+ 4d:69:4f:49:30:93:84:b8:54:8e:f0:9c:f1:8a:ae:
+ 2c:df:fe:4c:e3:d7:5a:f4:7a:f1:af:93:cf:30:38:
+ bb:b1:64:70:39:9c:58:cb:a2:34:1d:6c:c2:3e:15:
+ 9f:ad:a9:f2:e9:7e:54:28:ca:42:1b:91:02:b0:17:
+ f8:03:61:c3:17:fc:09:6b:b5
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 71:33:DF:63:B7:1B:F2:3A:F0:97:B2:CE:67:62:E2:53:A9:57:4A:77
+ 5A:08:77:65:5C:5E:98:9C:FE:5A:79:9A:F2:C5:81:F5:5E:EB:0F:AE
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Issuer Alternative Name:
email:issuer@zeroc.com, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 9b:b7:97:1a:37:42:4d:27:d6:99:8d:47:43:19:73:39:90:b7:
- d5:b2:fd:3a:ee:24:e3:1f:dc:54:72:01:6f:80:06:70:b9:c4:
- b9:94:1e:25:c3:1f:e7:11:55:66:42:10:1b:7d:d7:88:b8:56:
- 11:d8:ce:d3:50:2b:bb:72:c6:83:94:94:51:95:73:1b:10:59:
- 7f:89:0b:7a:bb:d1:9b:b9:07:1d:26:87:4d:fb:52:dc:c5:a9:
- f9:d1:6a:a8:8f:85:b2:47:22:8d:4f:af:a7:ff:e9:ee:a8:c8:
- d7:0b:72:b6:d8:be:0f:90:9d:dd:d6:81:2d:ba:a0:2d:ed:1d:
- 3b:60
+ Signature Algorithm: sha256WithRSAEncryption
+ c8:3b:dc:9f:2d:9f:b7:a1:79:69:cc:f1:7e:af:bf:37:da:37:
+ 8f:99:39:70:e8:67:8e:a0:da:0d:8a:75:68:7a:01:bb:7c:c7:
+ 35:67:8d:da:22:53:72:08:cd:cc:be:40:12:a3:d6:61:fa:52:
+ fb:a7:48:9f:2f:6e:d2:90:57:7d:c2:8c:cf:f2:45:57:3d:9c:
+ ac:6c:57:be:89:91:bb:a6:3b:9f:63:b8:b5:a0:7d:43:e5:5f:
+ 05:3f:f2:dc:ce:b5:59:79:1a:61:78:48:78:b3:a2:24:a8:b5:
+ 51:0e:da:39:4d:b3:df:d3:53:3f:62:05:c4:85:3a:22:a4:2f:
+ ec:7a
-----BEGIN CERTIFICATE-----
-MIIDqjCCAxOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDqjCCAxOgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzNaFw0yMDAzMTQxNDUwMzNaMHYxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0yNDA3MDgxNzE3MzZaMHYxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTESMBAGA1UEAxMJMTI3LjAu
-MC4xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDR/tNEof9+McA0Uj9b7zEp
-+7cJGBA3DnsE0LAsCp+Md61Iy1bjZa3bT9jg80ARo3ss11h69zb9MEagSKwlE+AC
-BKbbjT6N7JucXijE8dT8kC4k55HzVo3RJ5cArXaIo9L751gY6Lhz15gtYrGVp8pE
-hu+k5CnfXlMAId5Zuj5MiQIDAQABo4IBIjCCAR4wCQYDVR0TBAIwADAdBgNVHQ4E
-FgQUcTPfY7cb8jrwl7LOZ2LiU6lXSncwgc4GA1UdIwSBxjCBw4AUotmAKuSRjguF
-t+TVKGJPx8mL6NGhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9y
+MC4xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7pQR9a5pPwDeihxHWRJnB
+G/pyALuRZtHHDhjmO2sFVfnmgipPYgJcZgwSV43OILc+8sba7t7dGUKNZE1pT0kw
+k4S4VI7wnPGKrizf/kzj11r0evGvk88wOLuxZHA5nFjLojQdbMI+FZ+tqfLpflQo
+ykIbkQKwF/gDYcMX/AlrtQIDAQABo4IBIjCCAR4wCQYDVR0TBAIwADAdBgNVHQ4E
+FgQUWgh3ZVxemJz+Wnma8sWB9V7rD64wgc4GA1UdIwSBxjCBw4AU02SieGyMH63y
+Jnn4GwUlxYtiqfOhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9y
aWRhMRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRlbnMxFDASBgNVBAoTC1plcm9D
LCBJbmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMTD1plcm9DIFRlc3QgQ0EgMTEd
-MBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCUMXCsUGoVmTAhBgNVHRIE
-GjAYgRBpc3N1ZXJAemVyb2MuY29thwR/AAABMA0GCSqGSIb3DQEBBQUAA4GBAJu3
-lxo3Qk0n1pmNR0MZczmQt9Wy/TruJOMf3FRyAW+ABnC5xLmUHiXDH+cRVWZCEBt9
-14i4VhHYztNQK7tyxoOUlFGVcxsQWX+JC3q70Zu5Bx0mh037UtzFqfnRaqiPhbJH
-Io1Pr6f/6e6oyNcLcrbYvg+Qnd3WgS26oC3tHTtg
+MBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQD55vgRsLeFADAhBgNVHRIE
+GjAYgRBpc3N1ZXJAemVyb2MuY29thwR/AAABMA0GCSqGSIb3DQEBCwUAA4GBAMg7
+3J8tn7eheWnM8X6vvzfaN4+ZOXDoZ46g2g2KdWh6Abt8xzVnjdoiU3IIzcy+QBKj
+1mH6UvunSJ8vbtKQV33CjM/yRVc9nKxsV76JkbumO59juLWgfUPlXwU/8tzOtVl5
+GmF4SHizoiSotVEO2jlNs9/TUz9iBcSFOiKkL+x6
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_priv.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_priv.pem
index 51980be3840..1558f3a98bf 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_priv.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_priv.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALO58wCUe5dt4ZFr
-TgiKHvDV1lvYueYKNRKi75rDyy76OTh0Ii0u3LKs3opykjV6jwQDhK3EWVxZxy4Y
-WYMa21cN2ACAnAdIZtmUU42U45ZLpPxJp0ZTw5GVAQDDbUZfS628o1RjPW7Zyfl/
-zXklRrv37aQTs1EKsk95NVx12GjDAgMBAAECgYByTUCOjeBMXkWnBmeKZs1mvZim
-sR8JflRild1swDjol5rsnG9f7P3PZMHjqxnxiRCLrPEk0ktCwJY8aqADEYGMuxiI
-o/NfBSOXq04DqWbovCK7gVwzjVJU/vDmb2vxJOIhv6avMc+qW71HFPt8LVshAysz
-aaf2ajfIt5LnL7hQgQJBANhC9OwIH6Pipx3Q4DPpt/PCcjpFaG2Ixp5ex4OSlK6d
-7tevekbiOmr3Uum+A1bMrQ3i4Cu6rkqn906cDzcNg80CQQDUwFxIozeVkBuSe7TN
-TkWCwnScjXg6HkeQsFeD8UsWql0aKhsESVe9sFYWSlF9W2hBIoG9Jx5D7uiIYLRR
-LC7PAkBIg5MKfeLWGg69Maer4Id85ctVfKZ6a+1ldxRhKspODsjia4WNtRevfETB
-+aO2/CRezp8qKot8nvuO0UdMx2xVAkEAiSHwmfVyx5na2+GXGdrA3VcAGUTq4PNR
-h8bSsj5e+x4W4t2PCoVH5AH8i2OeASJhIdLfM5A6Zulgwz8qG0RSawJAQdYsp2B3
-/h7ofKRLBXmPC5V0C8EIzueXkbeR8LWxeKyhC0gl1X/9gc2BxJrgQ8WEzLVqxZKP
-7mGBNdohU+ujxw==
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALy+FsEDzmeOMFuO
+0J/5eKgHaNESkBM3DNU9u+9/JW6LJgegL2J5pdTGpm4a/PByuL4OmhL7Q8eDiOfU
+Gz1vvzUtV4oPSlPyfcyT8rW7V8/pnoOnEz/TtCDUecoqy4pZudHxZNoa7T2e7XF6
++6ecpuhTmiYizCogafwrbOjRKzIzAgMBAAECgYAiEFyi8UDrR6pKm/fjJ28zREMS
+mLsP/LuAMOgeTWBAFzUB41Mp/rKDOGcJMC2+Z7YX9yKvklGlTIQE8y8HY4eqjWNn
+ddYC4O61Aea1LcDt1bdWrgNDwgE84WzgdAjkgy3XkWJvzs8+jyo2FfKOGzuDz/Uv
+AhzDsDJrOLsZ8oZKgQJBAPdED/ovKIlCsixKsXnSXgOesSyoCaouR6kRYB2BcjjR
+Gwh3LaNcgzFM1Xo3cbIQxY3RZ1iP0TlFYxn2xDHG/pECQQDDaNIaAk6rbQO1lEww
+a6eakVhK7xzEupidNwa7RkXsvYqDl9pTDTE+FNn8mNX0ExVHRxRXLvnS1sfACAyb
+Ow6DAkEAuWHnFKysmJRPnxN1Eh+dattcfF2TuWqvQVuMkzKM33ou6V7o8ZSXq6uu
+Vc4hyN34L0ZzVBunQmf6T+oJ2EQYcQJAUc1Qnti2bCbvtZTGLEL038zWhFAC4Awp
+FS9S3xT08r0J/jqUh83u/kkmVAr7DfjrIHKN/k1JAc0tw6La/CTF1wJASOsd5W1/
+ijdBsuihY5rnLrLk5eQwuirfkxSXdxvw/JGzCT/Lig4KETzUugPko1kS0lZ+XdIO
+hKbMY3AgX4//Sw==
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_pub.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_pub.pem
index 2e7b3ad0d1e..ec0fb9ec064 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_pub.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_cn2_pub.pem
@@ -2,66 +2,66 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:34 2010 GMT
- Not After : Mar 14 14:50:34 2020 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
+ Not After : Jul 8 17:17:36 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=127.0.0.11
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:b3:b9:f3:00:94:7b:97:6d:e1:91:6b:4e:08:8a:
- 1e:f0:d5:d6:5b:d8:b9:e6:0a:35:12:a2:ef:9a:c3:
- cb:2e:fa:39:38:74:22:2d:2e:dc:b2:ac:de:8a:72:
- 92:35:7a:8f:04:03:84:ad:c4:59:5c:59:c7:2e:18:
- 59:83:1a:db:57:0d:d8:00:80:9c:07:48:66:d9:94:
- 53:8d:94:e3:96:4b:a4:fc:49:a7:46:53:c3:91:95:
- 01:00:c3:6d:46:5f:4b:ad:bc:a3:54:63:3d:6e:d9:
- c9:f9:7f:cd:79:25:46:bb:f7:ed:a4:13:b3:51:0a:
- b2:4f:79:35:5c:75:d8:68:c3
+ 00:bc:be:16:c1:03:ce:67:8e:30:5b:8e:d0:9f:f9:
+ 78:a8:07:68:d1:12:90:13:37:0c:d5:3d:bb:ef:7f:
+ 25:6e:8b:26:07:a0:2f:62:79:a5:d4:c6:a6:6e:1a:
+ fc:f0:72:b8:be:0e:9a:12:fb:43:c7:83:88:e7:d4:
+ 1b:3d:6f:bf:35:2d:57:8a:0f:4a:53:f2:7d:cc:93:
+ f2:b5:bb:57:cf:e9:9e:83:a7:13:3f:d3:b4:20:d4:
+ 79:ca:2a:cb:8a:59:b9:d1:f1:64:da:1a:ed:3d:9e:
+ ed:71:7a:fb:a7:9c:a6:e8:53:9a:26:22:cc:2a:20:
+ 69:fc:2b:6c:e8:d1:2b:32:33
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 1E:F4:0E:50:93:AC:8D:44:FB:1B:3C:CB:32:EB:A6:F4:8B:2D:ED:4D
+ 1A:8F:B8:95:A0:80:AF:F1:2B:CB:0B:E0:1F:E5:8E:D6:23:4A:9C:04
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Issuer Alternative Name:
email:issuer@zeroc.com, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 07:d8:09:34:9a:9c:ab:61:95:d2:a1:d9:a8:83:a9:9a:d6:c1:
- 7b:c6:cf:a4:98:2f:14:de:b2:01:62:8e:cb:5c:a3:7d:d1:7b:
- 39:d7:da:f7:7d:38:a0:3f:96:aa:ba:d1:97:e3:c6:05:c7:3d:
- 8e:37:ea:83:2c:8b:06:5e:ca:84:03:3a:d1:e5:90:c2:e2:8e:
- 20:00:32:c9:48:b6:45:f5:fb:77:b4:90:16:ad:4d:29:33:5e:
- 0d:c0:e1:0f:2a:e1:22:dd:10:e3:96:66:06:35:3e:dd:d7:e9:
- c6:b5:8b:83:dd:85:0b:7e:49:e3:f0:96:b2:a0:51:0c:ec:ee:
- 00:79
+ Signature Algorithm: sha256WithRSAEncryption
+ 49:35:59:63:c6:4e:2d:c9:a1:b9:ca:9f:f0:4d:ca:dc:24:62:
+ 3b:5e:ad:a0:da:e9:b7:39:82:ca:e4:06:aa:3e:8a:92:1b:ec:
+ 87:50:ba:5f:aa:bb:44:dd:3e:a0:8e:ca:86:3d:af:cd:81:e2:
+ 58:77:a0:d1:7e:c7:43:89:58:27:9c:3e:b7:f9:50:5c:60:a2:
+ 7d:73:ca:cb:4b:73:e9:8d:d7:97:81:44:b8:db:d0:68:77:9c:
+ 6a:2f:0a:f0:c9:a0:68:47:54:35:94:58:5d:6a:2d:e5:a9:50:
+ 76:4f:48:2d:a2:89:5f:2a:53:4c:9b:48:33:99:ba:27:43:38:
+ 8a:e7
-----BEGIN CERTIFICATE-----
-MIIDqzCCAxSgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDqzCCAxSgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzRaFw0yMDAzMTQxNDUwMzRaMHcxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0yNDA3MDgxNzE3MzZaMHcxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTETMBEGA1UEAxMKMTI3LjAu
-MC4xMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAs7nzAJR7l23hkWtOCIoe
-8NXWW9i55go1EqLvmsPLLvo5OHQiLS7csqzeinKSNXqPBAOErcRZXFnHLhhZgxrb
-Vw3YAICcB0hm2ZRTjZTjlkuk/EmnRlPDkZUBAMNtRl9LrbyjVGM9btnJ+X/NeSVG
-u/ftpBOzUQqyT3k1XHXYaMMCAwEAAaOCASIwggEeMAkGA1UdEwQCMAAwHQYDVR0O
-BBYEFB70DlCTrI1E+xs8yzLrpvSLLe1NMIHOBgNVHSMEgcYwgcOAFKLZgCrkkY4L
-hbfk1ShiT8fJi+jRoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxv
+MC4xMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvL4WwQPOZ44wW47Qn/l4
+qAdo0RKQEzcM1T27738lbosmB6AvYnml1Mambhr88HK4vg6aEvtDx4OI59QbPW+/
+NS1Xig9KU/J9zJPytbtXz+meg6cTP9O0INR5yirLilm50fFk2hrtPZ7tcXr7p5ym
+6FOaJiLMKiBp/Cts6NErMjMCAwEAAaOCASIwggEeMAkGA1UdEwQCMAAwHQYDVR0O
+BBYEFBqPuJWggK/xK8sL4B/ljtYjSpwEMIHOBgNVHSMEgcYwgcOAFNNkonhsjB+t
+8iZ5+BsFJcWLYqnzoYGfpIGcMIGZMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHRmxv
cmlkYTEbMBkGA1UEBxMSUGFsbSBCZWFjaCBHYXJkZW5zMRQwEgYDVQQKEwtaZXJv
QywgSW5jLjEMMAoGA1UECxMDSWNlMRgwFgYDVQQDEw9aZXJvQyBUZXN0IENBIDEx
-HTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkAlDFwrFBqFZkwIQYDVR0S
-BBowGIEQaXNzdWVyQHplcm9jLmNvbYcEfwAAATANBgkqhkiG9w0BAQUFAAOBgQAH
-2Ak0mpyrYZXSodmog6ma1sF7xs+kmC8U3rIBYo7LXKN90Xs519r3fTigP5aqutGX
-48YFxz2ON+qDLIsGXsqEAzrR5ZDC4o4gADLJSLZF9ft3tJAWrU0pM14NwOEPKuEi
-3RDjlmYGNT7d1+nGtYuD3YULfknj8JayoFEM7O4AeQ==
+HTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggkA+eb4EbC3hQAwIQYDVR0S
+BBowGIEQaXNzdWVyQHplcm9jLmNvbYcEfwAAATANBgkqhkiG9w0BAQsFAAOBgQBJ
+NVljxk4tyaG5yp/wTcrcJGI7Xq2g2um3OYLK5AaqPoqSG+yHULpfqrtE3T6gjsqG
+Pa/NgeJYd6DRfsdDiVgnnD63+VBcYKJ9c8rLS3PpjdeXgUS429Bod5xqLwrwyaBo
+R1Q1lFhdai3lqVB2T0gtoolfKlNMm0gzmbonQziK5w==
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_priv.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_priv.pem
index d76551e1bc8..9b8852e9b8a 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_priv.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_priv.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOl9pccWILOh5A0J
-SwV135Mn2YBpKwySC9N4P8Bzi74eDybzLze3Llk1uOBWCqq7fip2iO7ZXEqCbANK
-L9vTCII7t7RMRagpx9+k3sNoHHPXfGhCyLEEbTe7+AVr4RXnq0HlTfBz02VQFonY
-SwGoyw00kH1pDZSIsmCERLMPoBeRAgMBAAECgYEAjK9oc8yhZ5rkDfbLfT7It6IL
-K5QynCBjf8e0ogD88lCqUI22pZt6EcaM3p75TmYqXuuNFl1hfoOXEWRh8dH2DVvH
-lxnjacrHg7qSrdpw4XjYpqHPWybqLyIRcn9W2Rsh8LMe/VEHjo0RZ/e3dMDicExm
-igKUMX8jXSvC9wisYQECQQD3sZdfVdyeoRmWIjmEIo3/+7SMuQDamj+qb7c4M3Lg
-dLtCxrNr7oIb4S4xEnpdkM+EPwu0L3c4L2ruKI8+s82XAkEA8VIgcVQt/i1RdD6O
-/eqSltCTYlBvFd+wNaA8qrJ1EF+Gf5L08KCjLIhpST9LLnLD0PKy/vDc4MPqs1w5
-ux45FwJBANzkxghBfGUDatwXXY/XeSfHA7dT7c0GLq0CwDUgvNwrfi0JI02oAOR4
-J0egIPx8fnSD/R4ODpZOw1/tUAItO7UCQBrFB4BK3EdD87M3dVlJejVssczIK2p7
-w+pO+ivdXAsS7bKdNLq0tyUrhLJxaP+gD4TQR3bsdTQhx5lZ87WEJsUCQQDGhVQ+
-WvaZrcG/2dY1arqbRBriHC1L7bb7OPMLinRGi164gigUOB/vehy4V6sp8nkV7P00
-QDxx1bHMMmvbyexy
+MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAKZI/y2AXF/H6yPk
+hoyzY5rMwiZxH5j46x1ci20xlnm+D0ZihGR16WyP0flfBujoVBj0OacB/v1R0Lz8
+2QcJE5FztbvYTJvzT0soVfofMrcB5SuJ+y/h9ow7z5PnsiFrMHUOYgPHJOtlCRE1
+51F7AbChFIDxGzLjgwpuFHmgKJORAgMBAAECgYEAhA6u0SUCt3JetKeVj4Ib1WFN
+wxfN3z+4AR5xACwEc/TTzrMIr3vRAE2LlP65zxhLSXIToyV7qxRhsOUhOmwj4/Tf
+9nOlnRozqjhLGtqSHH5CtLUyiU2uPx0tfaJ9OEviIoXXZP0YwZk6Uorw66O9QAOY
+oCscL7WVBdixwFlLzo0CQQDU7FGxJIgdhiHbW36xx4ZRno2f28JRWAaFW7LTt4oa
+xqFGLfHVehevTAhUUic/ksb2huly5mOI9HMhyNj2rs/DAkEAx+01+mCD3N1mQKkc
+zKnLUZTVRPBtkZrsQlhrXtEKHo+ZsXC8wX2U/hZCga6NVZxaL4Kop8gfteb3hIb1
++HQOGwJBAKV1v0XZDa1jvoun3hxo4IgsngHL1IVB0k9votfDmR6VnF3c9kDeT+l5
+PD/KV5Wfid2pmWAgiNi0nYNzgKax0eECQQClH1YlpPFDydhaL1KJ9vLmPnamqazV
+RY88fKqxdRVWiGP4GZTMelxEPz5OvUweGTSjaNbDPJZ0Nn7YBl/BBJlhAkAsWpwC
+2msg2BZgD4iQeKFY9kPyiz0wKF55WOw4Ls0r+mtJOUiTaBph7Av6NyWeL1eA4t+M
+fL469PZvDSTWzm1n
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_pub.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_pub.pem
index 6e2fe449874..e775d530115 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_pub.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_exp_pub.pem
@@ -2,69 +2,69 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:33 2010 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
Not After : Dec 31 00:00:00 2005 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Server
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:e9:7d:a5:c7:16:20:b3:a1:e4:0d:09:4b:05:75:
- df:93:27:d9:80:69:2b:0c:92:0b:d3:78:3f:c0:73:
- 8b:be:1e:0f:26:f3:2f:37:b7:2e:59:35:b8:e0:56:
- 0a:aa:bb:7e:2a:76:88:ee:d9:5c:4a:82:6c:03:4a:
- 2f:db:d3:08:82:3b:b7:b4:4c:45:a8:29:c7:df:a4:
- de:c3:68:1c:73:d7:7c:68:42:c8:b1:04:6d:37:bb:
- f8:05:6b:e1:15:e7:ab:41:e5:4d:f0:73:d3:65:50:
- 16:89:d8:4b:01:a8:cb:0d:34:90:7d:69:0d:94:88:
- b2:60:84:44:b3:0f:a0:17:91
+ 00:a6:48:ff:2d:80:5c:5f:c7:eb:23:e4:86:8c:b3:
+ 63:9a:cc:c2:26:71:1f:98:f8:eb:1d:5c:8b:6d:31:
+ 96:79:be:0f:46:62:84:64:75:e9:6c:8f:d1:f9:5f:
+ 06:e8:e8:54:18:f4:39:a7:01:fe:fd:51:d0:bc:fc:
+ d9:07:09:13:91:73:b5:bb:d8:4c:9b:f3:4f:4b:28:
+ 55:fa:1f:32:b7:01:e5:2b:89:fb:2f:e1:f6:8c:3b:
+ cf:93:e7:b2:21:6b:30:75:0e:62:03:c7:24:eb:65:
+ 09:11:35:e7:51:7b:01:b0:a1:14:80:f1:1b:32:e3:
+ 83:0a:6e:14:79:a0:28:93:91
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 62:27:02:DD:C0:04:A6:A9:17:DB:2C:3C:0C:B4:08:E4:1E:73:B6:2C
+ 22:5D:51:5A:6D:84:EA:3C:BD:6C:E2:41:B5:5E:BA:55:38:90:20:22
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Subject Alternative Name:
DNS:server, IP Address:127.0.0.1
X509v3 Issuer Alternative Name:
email:issuer@zeroc.com, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 5c:1c:01:bc:06:ee:e9:b8:12:dd:66:11:f3:15:17:4b:68:49:
- ff:5a:ec:f0:9b:e3:e8:64:1f:08:5a:10:72:b4:74:49:52:81:
- 78:81:66:ee:2c:e7:a0:5c:77:e9:39:4f:a1:c7:3a:37:98:c4:
- dd:a2:87:c6:e5:a7:19:f6:a7:32:94:03:60:24:2f:f0:32:c2:
- 9a:3c:e8:20:f0:1e:40:06:e2:df:74:b3:89:f2:a5:70:06:52:
- 16:3d:9f:cd:83:5b:a2:c2:d7:ec:b6:64:79:38:45:34:a6:8b:
- 97:90:00:cb:3b:d5:82:fc:54:ed:bc:4b:dd:7c:d9:05:fa:3c:
- 77:19
+ Signature Algorithm: sha256WithRSAEncryption
+ 3c:82:81:4c:bb:bc:a6:07:a6:44:88:4c:d3:9c:d5:e8:cb:58:
+ 1e:ee:89:c8:86:d3:2a:0a:ee:34:36:fb:76:ad:62:d3:77:e0:
+ 90:31:0e:03:cf:69:da:15:7f:b6:4f:b2:b6:9e:90:fe:8d:fd:
+ a0:68:35:eb:8d:9c:7b:3c:41:38:91:a6:e5:49:4a:02:2a:e8:
+ ec:b5:47:3a:e0:aa:e2:a0:b3:8e:00:df:69:20:93:b0:cc:07:
+ 5f:02:83:ed:c2:62:57:20:63:e9:3c:d7:78:00:bf:05:c1:3f:
+ aa:01:7a:c4:7f:ed:2f:57:0f:fd:90:1f:25:04:2c:e3:58:21:
+ 4f:5d
-----BEGIN CERTIFICATE-----
-MIIDwDCCAymgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDwDCCAymgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzNaFw0wNTEyMzEwMDAwMDBaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0wNTEyMzEwMDAwMDBaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGU2VydmVy
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpfaXHFiCzoeQNCUsFdd+TJ9mA
-aSsMkgvTeD/Ac4u+Hg8m8y83ty5ZNbjgVgqqu34qdoju2VxKgmwDSi/b0wiCO7e0
-TEWoKcffpN7DaBxz13xoQsixBG03u/gFa+EV56tB5U3wc9NlUBaJ2EsBqMsNNJB9
-aQ2UiLJghESzD6AXkQIDAQABo4IBOzCCATcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
-YicC3cAEpqkX2yw8DLQI5B5ztiwwgc4GA1UdIwSBxjCBw4AUotmAKuSRjguFt+TV
-KGJPx8mL6NGhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmSP8tgFxfx+sj5IaMs2OazMIm
+cR+Y+OsdXIttMZZ5vg9GYoRkdelsj9H5Xwbo6FQY9DmnAf79UdC8/NkHCRORc7W7
+2Eyb809LKFX6HzK3AeUrifsv4faMO8+T57IhazB1DmIDxyTrZQkRNedRewGwoRSA
+8Rsy44MKbhR5oCiTkQIDAQABo4IBOzCCATcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
+Il1RWm2E6jy9bOJBtV66VTiQICIwgc4GA1UdIwSBxjCBw4AU02SieGyMH63yJnn4
+GwUlxYtiqfOhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
MRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRlbnMxFDASBgNVBAoTC1plcm9DLCBJ
bmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMTD1plcm9DIFRlc3QgQ0EgMTEdMBsG
-CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCUMXCsUGoVmTAXBgNVHREEEDAO
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQD55vgRsLeFADAXBgNVHREEEDAO
ggZzZXJ2ZXKHBH8AAAEwIQYDVR0SBBowGIEQaXNzdWVyQHplcm9jLmNvbYcEfwAA
-ATANBgkqhkiG9w0BAQUFAAOBgQBcHAG8Bu7puBLdZhHzFRdLaEn/Wuzwm+PoZB8I
-WhBytHRJUoF4gWbuLOegXHfpOU+hxzo3mMTdoofG5acZ9qcylANgJC/wMsKaPOgg
-8B5ABuLfdLOJ8qVwBlIWPZ/Ng1uiwtfstmR5OEU0pouXkADLO9WC/FTtvEvdfNkF
-+jx3GQ==
+ATANBgkqhkiG9w0BAQsFAAOBgQA8goFMu7ymB6ZEiEzTnNXoy1ge7onIhtMqCu40
+Nvt2rWLTd+CQMQ4Dz2naFX+2T7K2npD+jf2gaDXrjZx7PEE4kablSUoCKujstUc6
+4KrioLOOAN9pIJOwzAdfAoPtwmJXIGPpPNd4AL8FwT+qAXrEf+0vVw/9kB8lBCzj
+WCFPXQ==
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_priv.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_priv.pem
index 34344e68515..2fc63e0dbf7 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_priv.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_priv.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKDewPM5NdDyjWh9
-qk9u1Plow7txd6Crg4kj2tWsdVt/RVcQSB/hyJ+bq1Qnf8Tli9B3wTFJPvKzMNka
-ucCJ+5KHjF4/zMrcn9N6/Q+8ATh+Ot1bROZ1hIX+XLTjUmGaV3dkOSx/aX9GxUOY
-QdOec/eVaiL7g4Fy4foZVJ2BnpbLAgMBAAECgYAkfaLjCS0t8nclJqxFTGy/Doan
-tDtglMdHinyPT4lncd02vJi/sqWhntwkQLl43mDyrteB6I2A3CjOdoOAK0yHOlUd
-Bajq81A3vcYnBXELXfSCVZnihhQei2ljmejPbYogtdHlI+tpxaZI0kz7J9j6qpoa
-xkBvGKNyVcS9linVgQJBANPisB2Nv41lSP2BBDQPmaX0etsOsh62+CxnQWKgiE09
-PvQd1SAImaaLHBCEd5hHu+tSazd4fLODLB3ZrzaT0SsCQQDCXP2/gUODYv2yCxlq
-8YDUWc30ckR1RaxpbnWdnjqXS8baNYjMcZJdGcWR5zbzibJ1a0hO/d+RNcTEAvvh
-u0DhAkEA0PJXIo3KPDGJjRRRhNVte45gKO2REWD10zPv8sbEIwcmsa1JotFYVDgS
-cOdw2KbE1gbs3ELhFlVgh/9HHdcfCQJAQvl2OuJZGFIpJ4vpk09q3EGh1aT2cA61
-LZNxlgGrIO1stU6TOBe+nrQ9v1wUNHFzfECepxGWU1xa1ExO7WbwIQJAf35BQ2JZ
-Str8HCXpRshk63HX44PXnq2FRlPc0tg1qhIONzDLAzw+w6IDCgZGlPwF3zurVrTF
-titHrpv7Z7PwaQ==
+MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMeHA4gTTGDqiBbc
+H8EcA9K2gtjwRVkP8ft3/APEUKPaP0oTVB0nI11w1TTbQTOeNF9FP80KZ4QtsbIM
+F8sncQCQ1UCfH38B8Lw05SinYWxamFBBMX+Tykwd+vyUOn6UaXAbmMkcLN5NkDJl
+I1gBkdZ3e4VauwQgAyWb6wlQIi8xAgMBAAECgYEAwlJA4z8ATQc9YR4jIvy40HgF
++WgP8gxwfJu/ap/AdcPxjaBDdF0QuUlRrDe5SZ9TnFGiMHxokre57xCN/8I67zuU
+T9i0k21R1VnaiuvbWORCRThp8wCXeLCWPa97U4kmYhTd0d0NL/RccR4ipmCt4V5c
+hPZsy4bvSUBOJD+ZGp0CQQD0LC3Csyjfapd00JfXorxTRHNQO35IiWjCXJ6EZzDx
+6Q4D6cz9xfwypEINAKVZQBq4ce5n2i+b4N5ug49ALgGDAkEA0TE4UXY9G41XH6zX
+mewchPuL4SAfCUPkH6xAep0wXJrZi+HMnWetZodG3iu4YCnG9adOglfP3FM1pcm9
+fl7yOwJBANkev8I11c501iDFq3/P8W6Jm5Bolq6hoUnTWhGaQOebuR65s9KlTtEp
+RqKRRHbMjfYdOUWXumX920yiJ6uGPUkCQQCQ6l/xTs+WPpuUPdA9uOso1HlaQz48
+1OM7bcBdMHdIL5104b81a5Ub6aqWTgMz2r0RgA1LDjnYj2wipVa4LF3xAkAq3rlZ
+JmDasqLbys4IKGYQGluFBWIUyBU+GcT5e+ehadyql+Nsi/5HNJrS/RDJoSbRkQpH
+bnBtJZ4MOIZFgXiw
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_pub.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_pub.pem
index 2700c087a21..27a90aac61c 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_pub.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca1_pub.pem
@@ -2,69 +2,69 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:33 2010 GMT
- Not After : Mar 14 14:50:33 2020 GMT
+ Not Before: Jul 11 17:17:35 2014 GMT
+ Not After : Jul 8 17:17:35 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Server
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:a0:de:c0:f3:39:35:d0:f2:8d:68:7d:aa:4f:6e:
- d4:f9:68:c3:bb:71:77:a0:ab:83:89:23:da:d5:ac:
- 75:5b:7f:45:57:10:48:1f:e1:c8:9f:9b:ab:54:27:
- 7f:c4:e5:8b:d0:77:c1:31:49:3e:f2:b3:30:d9:1a:
- b9:c0:89:fb:92:87:8c:5e:3f:cc:ca:dc:9f:d3:7a:
- fd:0f:bc:01:38:7e:3a:dd:5b:44:e6:75:84:85:fe:
- 5c:b4:e3:52:61:9a:57:77:64:39:2c:7f:69:7f:46:
- c5:43:98:41:d3:9e:73:f7:95:6a:22:fb:83:81:72:
- e1:fa:19:54:9d:81:9e:96:cb
+ 00:c7:87:03:88:13:4c:60:ea:88:16:dc:1f:c1:1c:
+ 03:d2:b6:82:d8:f0:45:59:0f:f1:fb:77:fc:03:c4:
+ 50:a3:da:3f:4a:13:54:1d:27:23:5d:70:d5:34:db:
+ 41:33:9e:34:5f:45:3f:cd:0a:67:84:2d:b1:b2:0c:
+ 17:cb:27:71:00:90:d5:40:9f:1f:7f:01:f0:bc:34:
+ e5:28:a7:61:6c:5a:98:50:41:31:7f:93:ca:4c:1d:
+ fa:fc:94:3a:7e:94:69:70:1b:98:c9:1c:2c:de:4d:
+ 90:32:65:23:58:01:91:d6:77:7b:85:5a:bb:04:20:
+ 03:25:9b:eb:09:50:22:2f:31
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 13:1C:98:41:95:F7:35:BD:34:03:0C:2F:0E:5F:D7:8D:05:D5:1E:5E
+ BF:D3:42:A7:69:2F:12:F5:0D:C7:38:31:0E:2E:71:B5:9D:D2:19:93
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Subject Alternative Name:
DNS:server, IP Address:127.0.0.1
X509v3 Issuer Alternative Name:
email:issuer@zeroc.com, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 01:ad:3b:77:8f:89:48:c0:4f:84:97:fa:bf:7d:74:33:87:e0:
- ca:8d:c6:6a:71:1d:e1:b2:30:fb:65:7e:27:45:4c:6c:a3:d1:
- e3:66:b2:51:06:37:22:09:e5:01:9b:63:f0:25:e4:07:e7:33:
- 9e:a0:e1:c0:27:3a:db:c2:36:6a:7f:d9:6a:00:06:d1:01:c2:
- 9a:37:b7:77:22:96:e7:6d:c9:67:c3:bb:b3:9a:7d:2c:37:27:
- 36:83:ce:e0:39:04:03:c7:b2:b8:3b:39:fc:be:5f:8c:e9:34:
- 52:e9:fe:5b:86:87:fe:18:49:25:dd:9f:71:89:b6:f0:12:18:
- 4b:3c
+ Signature Algorithm: sha256WithRSAEncryption
+ bf:f2:6e:79:3f:4f:34:4d:56:20:94:48:e2:c6:38:09:8e:f4:
+ 6c:b4:53:bb:87:0c:12:73:15:19:ac:30:a6:9e:c8:30:1c:83:
+ 4c:7a:54:90:96:39:fc:f3:2c:a2:66:71:87:c6:fd:d6:ce:f7:
+ 46:ab:76:53:00:b4:e5:8b:d2:29:be:36:ea:eb:07:6a:08:f5:
+ c5:e9:29:74:21:da:b1:07:19:70:3b:bc:db:80:5c:f9:9d:03:
+ 74:6b:58:93:6d:27:53:3a:f4:ed:9c:3b:b5:f5:cc:c8:d6:a7:
+ f6:70:02:e1:65:20:35:41:50:8f:4f:6a:45:e9:f1:57:ed:a2:
+ fc:36
-----BEGIN CERTIFICATE-----
-MIIDwDCCAymgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDwDCCAymgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzNaFw0yMDAzMTQxNDUwMzNaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzVaFw0yNDA3MDgxNzE3MzVaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGU2VydmVy
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCg3sDzOTXQ8o1ofapPbtT5aMO7
-cXegq4OJI9rVrHVbf0VXEEgf4cifm6tUJ3/E5YvQd8ExST7yszDZGrnAifuSh4xe
-P8zK3J/Tev0PvAE4fjrdW0TmdYSF/ly041Jhmld3ZDksf2l/RsVDmEHTnnP3lWoi
-+4OBcuH6GVSdgZ6WywIDAQABo4IBOzCCATcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
-ExyYQZX3Nb00AwwvDl/XjQXVHl4wgc4GA1UdIwSBxjCBw4AUotmAKuSRjguFt+TV
-KGJPx8mL6NGhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHhwOIE0xg6ogW3B/BHAPStoLY
+8EVZD/H7d/wDxFCj2j9KE1QdJyNdcNU020EznjRfRT/NCmeELbGyDBfLJ3EAkNVA
+nx9/AfC8NOUop2FsWphQQTF/k8pMHfr8lDp+lGlwG5jJHCzeTZAyZSNYAZHWd3uF
+WrsEIAMlm+sJUCIvMQIDAQABo4IBOzCCATcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
+v9NCp2kvEvUNxzgxDi5xtZ3SGZMwgc4GA1UdIwSBxjCBw4AU02SieGyMH63yJnn4
+GwUlxYtiqfOhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
MRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRlbnMxFDASBgNVBAoTC1plcm9DLCBJ
bmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMTD1plcm9DIFRlc3QgQ0EgMTEdMBsG
-CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCUMXCsUGoVmTAXBgNVHREEEDAO
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQD55vgRsLeFADAXBgNVHREEEDAO
ggZzZXJ2ZXKHBH8AAAEwIQYDVR0SBBowGIEQaXNzdWVyQHplcm9jLmNvbYcEfwAA
-ATANBgkqhkiG9w0BAQUFAAOBgQABrTt3j4lIwE+El/q/fXQzh+DKjcZqcR3hsjD7
-ZX4nRUxso9HjZrJRBjciCeUBm2PwJeQH5zOeoOHAJzrbwjZqf9lqAAbRAcKaN7d3
-Ipbnbclnw7uzmn0sNyc2g87gOQQDx7K4Ozn8vl+M6TRS6f5bhof+GEkl3Z9xibbw
-EhhLPA==
+ATANBgkqhkiG9w0BAQsFAAOBgQC/8m55P080TVYglEjixjgJjvRstFO7hwwScxUZ
+rDCmnsgwHINMelSQljn88yyiZnGHxv3WzvdGq3ZTALTli9Ipvjbq6wdqCPXF6Sl0
+IdqxBxlwO7zbgFz5nQN0a1iTbSdTOvTtnDu19czI1qf2cALhZSA1QVCPT2pF6fFX
+7aL8Ng==
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca2.pfx b/cpp/test/IceSSL/certs/s_rsa_nopass_ca2.pfx
new file mode 100644
index 00000000000..fffaf777f0d
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca2.pfx
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca2_priv.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca2_priv.pem
index ca04adb04b6..09a5dd8be6f 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca2_priv.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca2_priv.pem
@@ -1,16 +1,16 @@
-----BEGIN PRIVATE KEY-----
-MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMfBo+BrulMxbiZ8
-BzLPYNBkiDNtaM6UlJbDNTjZ/8Fz6AJFit2TLHj1vO3xzdtdRJUHltnjQFe6qo0I
-sAzxN+r37IRulcTtognQVA2Cl/A4FX9RUyHgUiw3x5ZP77OUlwnkREkOdrxgt3bG
-yg7xqHzdGEedb21sKXlmL5dauW1fAgMBAAECgYEAuLlET5uvsZFLeIFHst/9epkN
-LumleywBgK3CgPFvxrjlu3wN37ti6/TrouryYEKO0nYzNQknDjnL0CJRk5ZaCuio
-PHCPzYwUUgik46GsSJeg+Z76ehhRoiYMTmwClhofLWwveaxvMc1CoH29V2Z6+KOn
-qJf+gv+n/V0FlhDhuBECQQDmu6bxTh+JN+q8UWu2zg7lgMoe81mYWuTIXCWHcxWM
-v90u5S6c7vHRXWLyI8BQ856qi3Y/5XqVnuBXId/Hub75AkEA3aGXt4u0MaMzabrQ
-KmIDZxyZdAhhuLHntNYRHoS6IE0LjVyLSj0YkGOhD59lXeA5LVlWhsyWbWIUmr5x
-ipOtFwJAOoNkNtXFEZtooBFV66oeBP3ARFEaa5TBaD5WFh+NW4Bcq0Pbqli+YoX4
-TcfbQaxGlKGBf3rGt6Lu6anhglkMoQJBANHzWSjL1AhNpM+c48Oyk6yjIA8WPZRc
-G7ZoL1FsxHEC61WffGf4VoO5jYKiKcFzPlbiUaBiwIGgLwqkLCTtXkMCQHYbQ0Nb
-GDaHMJXrNTJteY0dsLhctkO/ibErmIfEr+eZh80+OLAhbFFJRszI7mpT+Outav0s
-fEtDC1uz3kB38/4=
+MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL7+tNkgWa08qyaY
+P+pSX3o6/q13+AbBGPp0bVE0xQ+pnw/CLyhjyN/5iVuEuTW+9UTBj/0anMLKUHj6
+qmshS0/c287Y3SQud1tq2K7N+cWPmL+A8hm8k3ZCxVLVzKFbAE3y+qjKkWls743w
+Im7Z5/J7t8VfOVI7ohvOpTfrSxNrAgMBAAECgYACgN4n9meWgLQRlm9IB/peZMWP
+yoHCvOcx6TLBnLp0gRmnoDj0A5LPdLrbKzsuPCmE1DCp9Z5WY0Z4v3haXR5akM/0
+sEwm2AuhR4ZJTlIn8YgBaQz9BsnBnopI+wSHLahjlJX2IUlakgr4+Ueef+smhVM9
+8emYKo6cGucXwcwBUQJBAO0jnAdZTyYMs04blAiyvLYRtgO1SEwJH7DhMmsfCFNp
+jLCsvvjbicngsnLdaHyHHqDLQiiQKeazFrxvl72ROnkCQQDOL448QQiIIFpIYREN
+jxOr8gtCtOXFioPH3IVbB4qrVNJA82ZRatCeILvS7EfE5VDh2VvUJzJrWhwp/f9H
+uYQDAkEAtsiS1KtHManqb1MciJPUl3YRWMxbnJgPwFPke+MglMKvueJ9FO6LR3sV
+sSnuBsZTmlbxeLieQ39ZEAfn6ytM6QJAWAzA7gRLs241f+FL2gF2wiAMJQGBehmL
+60bGADi5RC9l1mzbDfvSeSS7cPiMMY5IOxqKd5ABnQyPKHOal7OmpwJAVfQ8mtaF
+VetDuqRYbUHGdmVQzaCQ3/8MxCw4msnED+DC2ZjdHxoRGhbg+euih+iDHOT00jR6
+me0k0ObGMzDEIg==
-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_nopass_ca2_pub.pem b/cpp/test/IceSSL/certs/s_rsa_nopass_ca2_pub.pem
index 94c40a3fc6c..43de10ba4dc 100644
--- a/cpp/test/IceSSL/certs/s_rsa_nopass_ca2_pub.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_nopass_ca2_pub.pem
@@ -2,69 +2,69 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 2/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:34 2010 GMT
- Not After : Mar 14 14:50:34 2020 GMT
+ Not Before: Jul 11 17:17:36 2014 GMT
+ Not After : Jul 8 17:17:36 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Server
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:c7:c1:a3:e0:6b:ba:53:31:6e:26:7c:07:32:cf:
- 60:d0:64:88:33:6d:68:ce:94:94:96:c3:35:38:d9:
- ff:c1:73:e8:02:45:8a:dd:93:2c:78:f5:bc:ed:f1:
- cd:db:5d:44:95:07:96:d9:e3:40:57:ba:aa:8d:08:
- b0:0c:f1:37:ea:f7:ec:84:6e:95:c4:ed:a2:09:d0:
- 54:0d:82:97:f0:38:15:7f:51:53:21:e0:52:2c:37:
- c7:96:4f:ef:b3:94:97:09:e4:44:49:0e:76:bc:60:
- b7:76:c6:ca:0e:f1:a8:7c:dd:18:47:9d:6f:6d:6c:
- 29:79:66:2f:97:5a:b9:6d:5f
+ 00:be:fe:b4:d9:20:59:ad:3c:ab:26:98:3f:ea:52:
+ 5f:7a:3a:fe:ad:77:f8:06:c1:18:fa:74:6d:51:34:
+ c5:0f:a9:9f:0f:c2:2f:28:63:c8:df:f9:89:5b:84:
+ b9:35:be:f5:44:c1:8f:fd:1a:9c:c2:ca:50:78:fa:
+ aa:6b:21:4b:4f:dc:db:ce:d8:dd:24:2e:77:5b:6a:
+ d8:ae:cd:f9:c5:8f:98:bf:80:f2:19:bc:93:76:42:
+ c5:52:d5:cc:a1:5b:00:4d:f2:fa:a8:ca:91:69:6c:
+ ef:8d:f0:22:6e:d9:e7:f2:7b:b7:c5:5f:39:52:3b:
+ a2:1b:ce:a5:37:eb:4b:13:6b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 0E:AA:EF:2E:74:AC:99:9E:19:9F:1B:40:44:17:7D:C9:6B:5F:4B:E6
+ CE:04:E2:8C:3C:F8:C6:05:3C:C4:6C:7E:0A:76:1B:94:0B:C2:13:E5
X509v3 Authority Key Identifier:
- keyid:29:71:09:F4:CF:57:4E:F3:3C:2B:7F:49:CE:4F:7F:64:45:CE:5F:05
+ keyid:E6:A2:63:95:8F:8C:4D:7F:7A:3C:62:1A:C3:2A:BA:53:BB:C2:BF:B1
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 2/emailAddress=info@zeroc.com
- serial:C5:15:C5:DC:84:DB:8A:C9
+ serial:E3:A0:C8:CA:39:6A:77:CF
X509v3 Subject Alternative Name:
DNS:server, IP Address:127.0.0.1
X509v3 Issuer Alternative Name:
email:issuer@zeroc.com, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 1e:62:76:df:b4:49:c3:c0:4d:52:64:d4:62:6b:5a:fb:53:db:
- 32:f1:01:84:56:3a:b0:00:48:1d:8c:18:1c:04:0f:ec:5f:2c:
- db:f1:dd:b6:93:ba:34:65:82:4f:e7:0d:eb:f5:41:e5:9b:ad:
- b8:0c:0c:7b:fa:e7:7f:ba:c6:b7:23:a3:dd:c9:51:20:f0:60:
- b0:e4:04:4a:9f:0d:73:77:f2:e5:a1:07:1c:7e:4a:e0:9a:87:
- 09:9a:00:1f:b5:96:59:70:d1:af:fb:12:c6:e5:64:75:72:f3:
- fc:3e:90:6c:58:8f:49:2b:78:6c:b8:00:a2:af:12:5e:db:bf:
- 56:ef
+ Signature Algorithm: sha256WithRSAEncryption
+ b6:25:8d:b4:aa:3b:9f:55:ca:54:36:e6:d0:d6:b2:29:09:d4:
+ 60:cb:61:bf:29:09:f4:4b:09:00:1a:03:e1:41:be:91:4a:2a:
+ e1:7f:5f:d8:f1:5a:ec:8a:d2:ca:22:0e:2a:11:4e:0e:f3:94:
+ eb:d0:8c:49:bf:75:11:28:8a:36:f5:0d:39:a4:06:71:8f:ba:
+ 67:e4:b5:cb:e6:86:76:a2:e3:24:e7:ee:01:4f:b2:70:57:a5:
+ 70:1f:27:70:cb:cd:6f:78:b2:10:69:d9:8c:d8:7a:9f:bf:8d:
+ 21:05:04:b0:bf:55:90:ec:31:34:ff:b9:d7:94:15:7b:b4:6e:
+ e0:4e
-----BEGIN CERTIFICATE-----
-MIIDwDCCAymgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDwDCCAymgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAyMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzRaFw0yMDAzMTQxNDUwMzRaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzZaFw0yNDA3MDgxNzE3MzZaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGU2VydmVy
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHwaPga7pTMW4mfAcyz2DQZIgz
-bWjOlJSWwzU42f/Bc+gCRYrdkyx49bzt8c3bXUSVB5bZ40BXuqqNCLAM8Tfq9+yE
-bpXE7aIJ0FQNgpfwOBV/UVMh4FIsN8eWT++zlJcJ5ERJDna8YLd2xsoO8ah83RhH
-nW9tbCl5Zi+XWrltXwIDAQABo4IBOzCCATcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
-DqrvLnSsmZ4ZnxtARBd9yWtfS+Ywgc4GA1UdIwSBxjCBw4AUKXEJ9M9XTvM8K39J
-zk9/ZEXOXwWhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+/rTZIFmtPKsmmD/qUl96Ov6t
+d/gGwRj6dG1RNMUPqZ8Pwi8oY8jf+YlbhLk1vvVEwY/9GpzCylB4+qprIUtP3NvO
+2N0kLndbatiuzfnFj5i/gPIZvJN2QsVS1cyhWwBN8vqoypFpbO+N8CJu2efye7fF
+XzlSO6IbzqU360sTawIDAQABo4IBOzCCATcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
+zgTijDz4xgU8xGx+CnYblAvCE+Uwgc4GA1UdIwSBxjCBw4AU5qJjlY+MTX96PGIa
+wyq6U7vCv7GhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
MRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRlbnMxFDASBgNVBAoTC1plcm9DLCBJ
bmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMTD1plcm9DIFRlc3QgQ0EgMjEdMBsG
-CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQDFFcXchNuKyTAXBgNVHREEEDAO
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQDjoMjKOWp3zzAXBgNVHREEEDAO
ggZzZXJ2ZXKHBH8AAAEwIQYDVR0SBBowGIEQaXNzdWVyQHplcm9jLmNvbYcEfwAA
-ATANBgkqhkiG9w0BAQUFAAOBgQAeYnbftEnDwE1SZNRia1r7U9sy8QGEVjqwAEgd
-jBgcBA/sXyzb8d22k7o0ZYJP5w3r9UHlm624DAx7+ud/usa3I6PdyVEg8GCw5ARK
-nw1zd/LloQccfkrgmocJmgAftZZZcNGv+xLG5WR1cvP8PpBsWI9JK3hsuACirxJe
-279W7w==
+ATANBgkqhkiG9w0BAQsFAAOBgQC2JY20qjufVcpUNubQ1rIpCdRgy2G/KQn0SwkA
+GgPhQb6RSirhf1/Y8VrsitLKIg4qEU4O85Tr0IxJv3URKIo29Q05pAZxj7pn5LXL
+5oZ2ouMk5+4BT7JwV6VwHydwy81veLIQadmM2Hqfv40hBQSwv1WQ7DE0/7nXlBV7
+tG7gTg==
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_pass_ca1_priv.pem b/cpp/test/IceSSL/certs/s_rsa_pass_ca1_priv.pem
index c8f10b7d79b..9d4741a1fca 100644
--- a/cpp/test/IceSSL/certs/s_rsa_pass_ca1_priv.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_pass_ca1_priv.pem
@@ -1,17 +1,17 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
-MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIIl4lILgc9ToCAggA
-MBQGCCqGSIb3DQMHBAhsdS4QtR0aBQSCAoAzttNbJnIxkzisUVlL8a7NMYMZqJMF
-8eDuU/5s8f7vY5gJqD4eotuNOAlm+0olSaF18ngWvErc7XsPLuiNvWuruuDYOm+Y
-NuA9K7mlycBG7n7o/m1ZKTZTqvm9B44oJUdqPUX7dq2i3U6yo+EfTGHpi7qAdidA
-AxNJ7Nk4W3AJTsPt2KrPt2rjC5vj8sonpO5tq3r3k5ZiNeU4EMXpSIwRctywxhos
-5BIInmUJbNxgpbd8/9j/3Ulf0GiQY52coS20pCOJq1Vkiibgy2UZAD8E7SySNFrP
-e/7XlZF3q4hUMQwLJrZFIUT8g8c+53WHdcuiQqneVvCgmtWoB2EKLB2Mbix9pX4r
-Rxjf4TeijlhiCQh0UsxWJUL7POPx8FvaatqrcLw6tJXzSCce5n5EVKQYbvsI8ebU
-mg9p6Z39I10K0UH2XrSVrBzlkmks3Uf3KBFXztqqngOmIed+jZVWoHWC6lvS4e4a
-BpRKZzTFLYrYkey7BW9bSlYnANkT7AJGLGqR41jfgBntLLDeGflUO97oPbe9n6E/
-G0ZIMzfI4hqeRe2ZVf0emhMNQmCp612dImTuEKZskYqaCdVemuIqXjVkaKQwLvUB
-VDSnCINSVIgwMwU+PL8o1ODTkGWXmNlJFqainN3i/b6kL5zzut9nXRqkdytTC0mZ
-OoO6f8ITI9jEj4zE09Y3pWgawogsG1hxm6x5zTpkO1Kv19p2+FpBQjR2YMFjh0yX
-ZIv+QldYRnqaY3zcVbejZRx/J63KvRVrrZM8WOhGW8yc1Gy3mPyDemsyO1ymucc0
-m6cyuG1udwgzTzgCrm4d9Wisj4lrO5v7hup5bJAcHAr1rYEr/5j/gOYA
+MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQInlfYWwzyGTECAggA
+MBQGCCqGSIb3DQMHBAhYU9lqNli1SASCAoBARv/s3Y8KZYe4nMrQq0iOIH+lfFCJ
+PR45ALfCeJ/8FlzXiyhXTGGEodCjHUJtC53lnXrj/7krv/4g1fLvJb4IXJ5qG6Jv
+9JZ6wKZ0Sjsb+6wW+mXLbxXXf3rCNhvwgoC+DovMtg5g0mbL7j5qR9bp5Ch2wM3/
+IIVL1GgAR9d7Tt6+5p3jvOkR1M6u94u7gMrm4iXnsdGSWHsZbByDiUXVUGyGxwOD
+4q/BiCefqwS5TGqZPHcGFV4qjEPAI2awGH2x0x23eKZVZK4TtK3dzmCV2JdAnbgS
+Rwn3aUoLNVKaAnomC/HpMMKXG9R9W6MQciPaQ3pYGNwxKL9j+0PtPob63d+q1Suw
+Y8SaXimNbOV1XY0LTckMCJferTrvHWxa86v/KQIWz8SFgU7o1PVmHZ34iftzh4rs
+0BRv0fCBBNZu53wylAD9MWDpGvExzbOqINUz8uiOHmGF/HGfSWaRm5pPf613jWUd
+HXPYAD1h206ByGlaGgVGqSNWmmxbeLr/vPBq463sXiN2LQdKGPTvh5Ej/hJgbt12
++NstnuA0H17MnqLsMT9aVSkTMRuyuaFC8u2NKOJ2PPDiuVKHN4jXJQCau4grOHnI
+o+f+8rOYi/1DPYd8mq6hYqyolpJMC2UjyqwFwY9YMjEJT1cOaHegk47c/l20Mhmx
+w8jysAw3FjR1RtJakyZSMm+erVmHw82lo5nSHzUScnK9IF/qt4vytXUTuGlLVkl/
+70Vme0WPQR14H5ivbtgjsumiD/7D0GSjMI8IBQQEz3mdD+tRqUqbNUANQvztgXjS
+G8j8jn7WJ9Ri6ZSTvxZ1RKKAJwx8/YDC2j3Eo2rRnVNt8GnREWFjORxL
-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_pass_ca1_pub.pem b/cpp/test/IceSSL/certs/s_rsa_pass_ca1_pub.pem
index 9a0d873dc55..446dcd89920 100644
--- a/cpp/test/IceSSL/certs/s_rsa_pass_ca1_pub.pem
+++ b/cpp/test/IceSSL/certs/s_rsa_pass_ca1_pub.pem
@@ -2,69 +2,69 @@ Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
- Signature Algorithm: sha1WithRSAEncryption
+ Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=Florida, L=Palm Beach Gardens, O=ZeroC, Inc., OU=Ice, CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
Validity
- Not Before: Mar 17 14:50:33 2010 GMT
- Not After : Mar 14 14:50:33 2020 GMT
+ Not Before: Jul 11 17:17:35 2014 GMT
+ Not After : Jul 8 17:17:35 2024 GMT
Subject: C=US, ST=Florida, O=ZeroC, Inc., OU=Ice/emailAddress=info@zeroc.com, CN=Server
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
- 00:dd:ff:45:ed:21:09:d6:4b:91:3e:c3:71:28:0b:
- 5e:92:40:da:80:5c:c7:0f:7b:3c:65:cb:1a:06:16:
- 5b:71:0f:e4:83:2a:42:3b:6b:46:10:3c:77:18:96:
- 5a:7f:e2:f3:90:59:3d:d6:aa:4e:d6:e6:10:13:18:
- 10:be:97:99:8a:fc:dd:c5:6a:69:ff:c2:9b:8e:eb:
- 1f:48:ee:b1:d5:fa:90:aa:9a:b7:a7:73:9e:e0:c9:
- 1b:dc:f9:13:e4:67:8a:ae:ef:0f:00:4a:e8:85:09:
- 99:2e:75:ce:27:47:ea:bb:fe:0f:8b:d7:58:71:8a:
- ab:61:84:64:75:8a:59:de:ed
+ 00:bd:85:92:f3:47:e4:a6:ce:b2:95:68:94:6b:69:
+ 23:c2:63:5e:89:a4:96:f3:3a:15:f1:2d:18:32:ca:
+ f2:d0:8a:91:c5:58:fa:12:a3:c1:a5:72:fa:07:70:
+ da:a2:f5:6b:d8:fc:e1:e9:52:5a:1e:29:14:81:4d:
+ 71:a4:b4:ef:d6:e0:dc:99:a5:5a:d1:c6:a4:39:41:
+ 5f:c6:a8:e0:ed:16:83:fa:24:1c:55:36:6a:98:46:
+ 0e:50:7a:14:7a:78:07:e5:03:3e:29:92:38:8a:33:
+ dc:da:92:28:83:47:62:a0:4a:a1:1e:e7:fa:bc:3b:
+ 97:83:cb:9e:0d:e0:fb:d9:89
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
- 6B:53:95:D2:AA:F0:D3:F7:22:D3:D1:39:CD:8A:8D:19:C7:11:84:5C
+ 19:93:2B:8B:02:99:F7:CC:34:C4:2F:17:E5:23:EC:F1:74:ED:DB:1C
X509v3 Authority Key Identifier:
- keyid:A2:D9:80:2A:E4:91:8E:0B:85:B7:E4:D5:28:62:4F:C7:C9:8B:E8:D1
+ keyid:D3:64:A2:78:6C:8C:1F:AD:F2:26:79:F8:1B:05:25:C5:8B:62:A9:F3
DirName:/C=US/ST=Florida/L=Palm Beach Gardens/O=ZeroC, Inc./OU=Ice/CN=ZeroC Test CA 1/emailAddress=info@zeroc.com
- serial:94:31:70:AC:50:6A:15:99
+ serial:F9:E6:F8:11:B0:B7:85:00
X509v3 Subject Alternative Name:
DNS:server, IP Address:127.0.0.1
X509v3 Issuer Alternative Name:
email:issuer@zeroc.com, IP Address:127.0.0.1
- Signature Algorithm: sha1WithRSAEncryption
- 14:35:61:b4:ac:49:96:67:a4:07:38:ba:16:6a:6a:bf:82:0b:
- c7:f3:2b:94:4b:24:a6:89:aa:c9:51:b9:d4:57:fd:3f:37:60:
- 28:12:a7:15:b7:18:18:c0:55:b9:32:bd:f8:58:ca:7a:b6:45:
- 28:73:00:a5:43:3a:7d:ee:6b:64:a8:c2:7c:ad:c9:24:31:0b:
- 30:92:54:35:86:4b:3c:f5:8b:f2:50:87:77:52:1b:6a:d5:84:
- fa:d0:03:7e:5b:17:7d:27:17:1e:b2:6e:2c:47:07:7b:36:1c:
- 50:5a:3b:bd:ae:2d:3b:c5:1d:11:84:d1:5d:f3:73:fc:be:a0:
- f9:a7
+ Signature Algorithm: sha256WithRSAEncryption
+ 16:2c:ea:17:ad:ed:89:74:86:d4:90:cf:9b:66:37:25:7a:52:
+ be:c0:40:e9:bc:33:84:ec:a4:b4:da:21:b3:68:93:8c:be:ed:
+ c8:8b:c7:6c:fd:0b:89:6f:04:e2:53:c9:fa:4e:9b:11:28:f1:
+ ea:e8:df:b5:f6:33:f2:d5:7f:3c:84:f6:49:db:cd:3e:b5:ea:
+ 44:f5:4c:ed:16:6d:21:93:f8:88:22:3e:19:04:25:11:ac:44:
+ 34:3a:08:18:93:f4:e9:73:a1:fd:90:00:96:7b:db:4a:e8:06:
+ 16:d1:68:fc:27:da:86:2a:a5:e3:6e:06:7e:f5:29:e7:64:4a:
+ 9c:87
-----BEGIN CERTIFICATE-----
-MIIDwDCCAymgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBmTELMAkGA1UEBhMCVVMx
+MIIDwDCCAymgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBmTELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0Zsb3JpZGExGzAZBgNVBAcTElBhbG0gQmVhY2ggR2FyZGVuczEU
MBIGA1UEChMLWmVyb0MsIEluYy4xDDAKBgNVBAsTA0ljZTEYMBYGA1UEAxMPWmVy
b0MgVGVzdCBDQSAxMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0x
-MDAzMTcxNDUwMzNaFw0yMDAzMTQxNDUwMzNaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
+NDA3MTExNzE3MzVaFw0yNDA3MDgxNzE3MzVaMHMxCzAJBgNVBAYTAlVTMRAwDgYD
VQQIEwdGbG9yaWRhMRQwEgYDVQQKEwtaZXJvQywgSW5jLjEMMAoGA1UECxMDSWNl
MR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTEPMA0GA1UEAxMGU2VydmVy
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDd/0XtIQnWS5E+w3EoC16SQNqA
-XMcPezxlyxoGFltxD+SDKkI7a0YQPHcYllp/4vOQWT3Wqk7W5hATGBC+l5mK/N3F
-amn/wpuO6x9I7rHV+pCqmrenc57gyRvc+RPkZ4qu7w8ASuiFCZkudc4nR+q7/g+L
-11hxiqthhGR1ilne7QIDAQABo4IBOzCCATcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
-a1OV0qrw0/ci09E5zYqNGccRhFwwgc4GA1UdIwSBxjCBw4AUotmAKuSRjguFt+TV
-KGJPx8mL6NGhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9hZLzR+SmzrKVaJRraSPCY16J
+pJbzOhXxLRgyyvLQipHFWPoSo8GlcvoHcNqi9WvY/OHpUloeKRSBTXGktO/W4NyZ
+pVrRxqQ5QV/GqODtFoP6JBxVNmqYRg5QehR6eAflAz4pkjiKM9zakiiDR2KgSqEe
+5/q8O5eDy54N4PvZiQIDAQABo4IBOzCCATcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
+GZMriwKZ98w0xC8X5SPs8XTt2xwwgc4GA1UdIwSBxjCBw4AU02SieGyMH63yJnn4
+GwUlxYtiqfOhgZ+kgZwwgZkxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdGbG9yaWRh
MRswGQYDVQQHExJQYWxtIEJlYWNoIEdhcmRlbnMxFDASBgNVBAoTC1plcm9DLCBJ
bmMuMQwwCgYDVQQLEwNJY2UxGDAWBgNVBAMTD1plcm9DIFRlc3QgQ0EgMTEdMBsG
-CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCUMXCsUGoVmTAXBgNVHREEEDAO
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQD55vgRsLeFADAXBgNVHREEEDAO
ggZzZXJ2ZXKHBH8AAAEwIQYDVR0SBBowGIEQaXNzdWVyQHplcm9jLmNvbYcEfwAA
-ATANBgkqhkiG9w0BAQUFAAOBgQAUNWG0rEmWZ6QHOLoWamq/ggvH8yuUSySmiarJ
-UbnUV/0/N2AoEqcVtxgYwFW5Mr34WMp6tkUocwClQzp97mtkqMJ8rckkMQswklQ1
-hks89YvyUId3Uhtq1YT60AN+Wxd9Jxcesm4sRwd7NhxQWju9ri07xR0RhNFd83P8
-vqD5pw==
+ATANBgkqhkiG9w0BAQsFAAOBgQAWLOoXre2JdIbUkM+bZjclelK+wEDpvDOE7KS0
+2iGzaJOMvu3Ii8ds/QuJbwTiU8n6TpsRKPHq6N+19jPy1X88hPZJ280+tepE9Uzt
+Fm0hk/iIIj4ZBCURrEQ0OggYk/Tpc6H9kACWe9tK6AYW0Wj8J9qGKqXjbgZ+9Snn
+ZEqchw==
-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/server.cnf b/cpp/test/IceSSL/certs/server.cnf
index 9503e6f4c46..a7ac4ceaf81 100644
--- a/cpp/test/IceSSL/certs/server.cnf
+++ b/cpp/test/IceSSL/certs/server.cnf
@@ -29,7 +29,7 @@ certs = $dir # Where issued certs are kept.
RANDFILE = $dir/.rand # Private random number file.
default_days = 3650 # How long certs are valid.
-default_md = sha1 # The Message Digest type.
+default_md = sha256 # The Message Digest type.
preserve = yes # Keep passed DN ordering?
policy = ca_policy
@@ -57,7 +57,7 @@ issuerAltName = email:issuer@zeroc.com, IP:127.0.0.1
[ req ]
default_bits = 1024
-default_md = sha1
+default_md = sha256
prompt = no
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions
diff --git a/cpp/test/IceSSL/certs/test_ca1.cnf b/cpp/test/IceSSL/certs/test_ca1.cnf
index 67f30e4a4f3..a9a72cd1c78 100644
--- a/cpp/test/IceSSL/certs/test_ca1.cnf
+++ b/cpp/test/IceSSL/certs/test_ca1.cnf
@@ -21,13 +21,13 @@ default_ca = ice
[ ice ]
default_days = 3650 # How long certs are valid.
-default_md = md5 # The Message Digest type.
+default_md = sha256 # The Message Digest type.
preserve = no # Keep passed DN ordering?
[ req ]
default_bits = 2048
-default_md = md5
+default_md = sha256
prompt = no
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions
diff --git a/cpp/test/IceSSL/certs/test_ca2.cnf b/cpp/test/IceSSL/certs/test_ca2.cnf
index 86f7ca0e478..07221423483 100644
--- a/cpp/test/IceSSL/certs/test_ca2.cnf
+++ b/cpp/test/IceSSL/certs/test_ca2.cnf
@@ -21,13 +21,13 @@ default_ca = ice
[ ice ]
default_days = 3650 # How long certs are valid.
-default_md = md5 # The Message Digest type.
+default_md = sha256 # The Message Digest type.
preserve = no # Keep passed DN ordering?
[ req ]
default_bits = 2048
-default_md = md5
+default_md = sha256
prompt = no
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions
diff --git a/cpp/test/IceSSL/configuration/.depend b/cpp/test/IceSSL/configuration/.depend
index 1ef5a5370e8..5cd81c83880 100644
--- a/cpp/test/IceSSL/configuration/.depend
+++ b/cpp/test/IceSSL/configuration/.depend
@@ -1,7 +1,7 @@
Test$(OBJEXT): Test.cpp Test.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h
-Client$(OBJEXT): Client.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/DeprecatedStringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/NativePropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h
+Client$(OBJEXT): Client.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/DeprecatedStringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/NativePropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h $(includedir)/IceSSL/IceSSL.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h $(includedir)/IceSSL/EndpointInfo.h
AllTests$(OBJEXT): AllTests.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/DeprecatedStringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/NativePropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h ../../include/TestCommon.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/IconvStringConverter.h Test.h Util.h $(includedir)/IceSSL/IceSSL.h $(includedir)/IceSSL/EndpointInfo.h
Test$(OBJEXT): Test.cpp Test.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h
-TestI$(OBJEXT): TestI.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/DeprecatedStringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/NativePropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h TestI.h Test.h ../../include/TestCommon.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/IconvStringConverter.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h Util.h $(includedir)/IceSSL/IceSSL.h $(includedir)/IceSSL/EndpointInfo.h $(includedir)/IceUtil/FileUtil.h
+TestI$(OBJEXT): TestI.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/DeprecatedStringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/NativePropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h TestI.h Test.h ../../include/TestCommon.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/IconvStringConverter.h $(includedir)/IceSSL/Plugin.h $(includedir)/IceSSL/Config.h $(includedir)/IceSSL/ConnectionInfo.h Util.h $(includedir)/IceSSL/IceSSL.h $(includedir)/IceSSL/EndpointInfo.h
Server$(OBJEXT): Server.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/DeprecatedStringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/IceUtil/UndefSysMacros.h $(includedir)/IceUtil/StringConverter.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Version.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/ThreadPoolF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/GCObject.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/ResponseHandlerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/DefaultObjectFactory.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/NativePropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h TestI.h Test.h
Test.h Test.cpp: Test.ice $(SLICE2CPP) $(SLICEPARSERLIB)
diff --git a/cpp/test/IceSSL/configuration/.depend.mak b/cpp/test/IceSSL/configuration/.depend.mak
index c6c462639b5..e209ee5c9e9 100644
--- a/cpp/test/IceSSL/configuration/.depend.mak
+++ b/cpp/test/IceSSL/configuration/.depend.mak
@@ -1,7 +1,7 @@
Test$(OBJEXT): Test.cpp Test.h "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/ObjectFactory.h"
-Client$(OBJEXT): Client.cpp "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/DeprecatedStringConverter.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/SlicedData.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/NativePropertiesAdmin.h" "$(includedir)/Ice/Metrics.h" "$(includedir)/Ice/Service.h"
+Client$(OBJEXT): Client.cpp "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/DeprecatedStringConverter.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/SlicedData.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/NativePropertiesAdmin.h" "$(includedir)/Ice/Metrics.h" "$(includedir)/Ice/Service.h" "$(includedir)/IceSSL/IceSSL.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" "$(includedir)/IceSSL/EndpointInfo.h"
AllTests$(OBJEXT): AllTests.cpp "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/DeprecatedStringConverter.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/SlicedData.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/NativePropertiesAdmin.h" "$(includedir)/Ice/Metrics.h" "$(includedir)/Ice/Service.h" "$(includedir)/IceUtil/FileUtil.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" ../../include/TestCommon.h "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Cache.h" "$(includedir)/IceUtil/CountDownLatch.h" "$(includedir)/IceUtil/CtrlCHandler.h" "$(includedir)/IceUtil/RecMutex.h" "$(includedir)/IceUtil/UUID.h" "$(includedir)/IceUtil/IconvStringConverter.h" Test.h Util.h "$(includedir)/IceSSL/IceSSL.h" "$(includedir)/IceSSL/EndpointInfo.h"
Test$(OBJEXT): Test.cpp Test.h "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/Config.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/ObjectFactory.h"
-TestI$(OBJEXT): TestI.cpp "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/DeprecatedStringConverter.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/SlicedData.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/NativePropertiesAdmin.h" "$(includedir)/Ice/Metrics.h" "$(includedir)/Ice/Service.h" TestI.h Test.h ../../include/TestCommon.h "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Cache.h" "$(includedir)/IceUtil/CountDownLatch.h" "$(includedir)/IceUtil/CtrlCHandler.h" "$(includedir)/IceUtil/RecMutex.h" "$(includedir)/IceUtil/UUID.h" "$(includedir)/IceUtil/IconvStringConverter.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" Util.h "$(includedir)/IceSSL/IceSSL.h" "$(includedir)/IceSSL/EndpointInfo.h" "$(includedir)/IceUtil/FileUtil.h"
+TestI$(OBJEXT): TestI.cpp "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/DeprecatedStringConverter.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/SlicedData.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/NativePropertiesAdmin.h" "$(includedir)/Ice/Metrics.h" "$(includedir)/Ice/Service.h" TestI.h Test.h ../../include/TestCommon.h "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Cache.h" "$(includedir)/IceUtil/CountDownLatch.h" "$(includedir)/IceUtil/CtrlCHandler.h" "$(includedir)/IceUtil/RecMutex.h" "$(includedir)/IceUtil/UUID.h" "$(includedir)/IceUtil/IconvStringConverter.h" "$(includedir)/IceSSL/Plugin.h" "$(includedir)/IceSSL/Config.h" "$(includedir)/IceSSL/ConnectionInfo.h" Util.h "$(includedir)/IceSSL/IceSSL.h" "$(includedir)/IceSSL/EndpointInfo.h"
Server$(OBJEXT): Server.cpp "$(includedir)/Ice/Ice.h" "$(includedir)/Ice/Config.h" "$(includedir)/IceUtil/Config.h" "$(includedir)/Ice/DeprecatedStringConverter.h" "$(includedir)/Ice/CommunicatorF.h" "$(includedir)/Ice/ProxyF.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/Ice/ProxyHandle.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/Ice/ObjectF.h" "$(includedir)/Ice/Handle.h" "$(includedir)/Ice/Exception.h" "$(includedir)/Ice/Format.h" "$(includedir)/Ice/StreamF.h" "$(includedir)/Ice/LocalObject.h" "$(includedir)/Ice/LocalObjectF.h" "$(includedir)/Ice/StreamHelpers.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Iterator.h" "$(includedir)/IceUtil/Optional.h" "$(includedir)/IceUtil/UndefSysMacros.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/Ice/Initialize.h" "$(includedir)/Ice/PropertiesF.h" "$(includedir)/Ice/Proxy.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/Ice/ProxyFactoryF.h" "$(includedir)/Ice/ConnectionIF.h" "$(includedir)/Ice/RequestHandlerF.h" "$(includedir)/Ice/EndpointF.h" "$(includedir)/Ice/EndpointTypes.h" "$(includedir)/Ice/ObjectAdapterF.h" "$(includedir)/Ice/ReferenceF.h" "$(includedir)/Ice/OutgoingAsync.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/Ice/OutgoingAsyncF.h" "$(includedir)/Ice/InstanceF.h" "$(includedir)/Ice/Current.h" "$(includedir)/Ice/ConnectionF.h" "$(includedir)/Ice/Identity.h" "$(includedir)/Ice/Version.h" "$(includedir)/Ice/BasicStream.h" "$(includedir)/Ice/Object.h" "$(includedir)/Ice/IncomingAsyncF.h" "$(includedir)/Ice/ObjectFactoryF.h" "$(includedir)/Ice/ObjectFactoryManagerF.h" "$(includedir)/Ice/Buffer.h" "$(includedir)/Ice/Protocol.h" "$(includedir)/Ice/SlicedDataF.h" "$(includedir)/Ice/UserExceptionFactory.h" "$(includedir)/Ice/FactoryTable.h" "$(includedir)/Ice/ObserverHelper.h" "$(includedir)/Ice/Instrumentation.h" "$(includedir)/Ice/ThreadPoolF.h" "$(includedir)/Ice/LoggerF.h" "$(includedir)/Ice/InstrumentationF.h" "$(includedir)/Ice/Dispatcher.h" "$(includedir)/Ice/BuiltinSequences.h" "$(includedir)/Ice/Plugin.h" "$(includedir)/Ice/LocalException.h" "$(includedir)/Ice/PropertiesAdmin.h" "$(includedir)/Ice/GCObject.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/Ice/Outgoing.h" "$(includedir)/Ice/Incoming.h" "$(includedir)/Ice/ServantLocatorF.h" "$(includedir)/Ice/ServantManagerF.h" "$(includedir)/Ice/ResponseHandlerF.h" "$(includedir)/Ice/IncomingAsync.h" "$(includedir)/Ice/Properties.h" "$(includedir)/Ice/Logger.h" "$(includedir)/Ice/LoggerUtil.h" "$(includedir)/Ice/Communicator.h" "$(includedir)/Ice/RouterF.h" "$(includedir)/Ice/LocatorF.h" "$(includedir)/Ice/PluginF.h" "$(includedir)/Ice/ImplicitContextF.h" "$(includedir)/Ice/CommunicatorAsync.h" "$(includedir)/Ice/ObjectFactory.h" "$(includedir)/Ice/ObjectAdapter.h" "$(includedir)/Ice/FacetMap.h" "$(includedir)/Ice/Endpoint.h" "$(includedir)/Ice/ServantLocator.h" "$(includedir)/Ice/SlicedData.h" "$(includedir)/Ice/Process.h" "$(includedir)/Ice/Application.h" "$(includedir)/Ice/Connection.h" "$(includedir)/Ice/ConnectionAsync.h" "$(includedir)/Ice/Functional.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/Ice/Stream.h" "$(includedir)/Ice/ImplicitContext.h" "$(includedir)/Ice/Locator.h" "$(includedir)/Ice/FactoryTableInit.h" "$(includedir)/Ice/DefaultObjectFactory.h" "$(includedir)/Ice/ProcessF.h" "$(includedir)/Ice/Router.h" "$(includedir)/Ice/DispatchInterceptor.h" "$(includedir)/Ice/NativePropertiesAdmin.h" "$(includedir)/Ice/Metrics.h" "$(includedir)/Ice/Service.h" TestI.h Test.h
Test.h Test.cpp: Test.ice "$(SLICE2CPP)" "$(SLICEPARSERLIB)"
diff --git a/cpp/test/IceSSL/configuration/AllTests.cpp b/cpp/test/IceSSL/configuration/AllTests.cpp
index 9637bf21715..4e493db54d2 100644
--- a/cpp/test/IceSSL/configuration/AllTests.cpp
+++ b/cpp/test/IceSSL/configuration/AllTests.cpp
@@ -74,6 +74,7 @@ public:
{
dnsNames.push_back(p->second);
}
+
}
test(find(dnsNames.begin(), dnsNames.end(), "server") != dnsNames.end());
@@ -140,7 +141,8 @@ private:
typedef IceUtil::Handle<CertificateVerifierI> CertificateVerifierIPtr;
static PropertiesPtr
-createClientProps(const Ice::PropertiesPtr& defaultProperties, const string& defaultDir, const string& defaultHost)
+createClientProps(const Ice::PropertiesPtr& defaultProperties, const string& defaultDir,
+ const string& defaultHost, bool password)
{
PropertiesPtr result = createProperties();
result->setProperty("Ice.Plugin.IceSSL", "IceSSL:createIceSSL");
@@ -153,6 +155,11 @@ createClientProps(const Ice::PropertiesPtr& defaultProperties, const string& def
{
result->setProperty("Ice.Default.Host", defaultHost);
}
+ if(password)
+ {
+ result->setProperty("IceSSL.Password", "password");
+ }
+ //result->setProperty("IceSSL.Trace.Security", "1");
#ifdef ICE_USE_SECURE_TRANSPORT
const string keychainName = "client.keychain";
const string keychainPassword = "password";
@@ -164,7 +171,8 @@ createClientProps(const Ice::PropertiesPtr& defaultProperties, const string& def
}
static Test::Properties
-createServerProps(const Ice::PropertiesPtr& defaultProperties, const string& defaultDir, const string& defaultHost)
+createServerProps(const Ice::PropertiesPtr& defaultProperties, const string& defaultDir, const string& defaultHost,
+ bool password)
{
Test::Properties result;
result["Ice.Plugin.IceSSL"] = "IceSSL:createIceSSL";
@@ -177,6 +185,11 @@ createServerProps(const Ice::PropertiesPtr& defaultProperties, const string& def
{
result["Ice.Default.Host"] = defaultHost;
}
+ if(password)
+ {
+ result["IceSSL.Password"] = "password";
+ }
+ //result["IceSSL.Trace.Security"] = "1";
#ifdef ICE_USE_SECURE_TRANSPORT
result["IceSSL.Keychain"] = "server.keychain";
result["IceSSL.KeychainPassword"] = "password";
@@ -184,8 +197,22 @@ createServerProps(const Ice::PropertiesPtr& defaultProperties, const string& def
return result;
}
+void verify(const IceSSL::CertificatePtr& cert, const IceSSL::CertificatePtr& ca)
+{
+ cerr << "Verify signature: ";
+ if(cert->verify(ca))
+ {
+ cerr << " VALID";
+ }
+ else
+ {
+ cerr << " INVALID";
+ }
+ cerr << endl;
+}
+
void
-allTests(const CommunicatorPtr& communicator, const string& testDir)
+allTests(const CommunicatorPtr& communicator, const string& testDir, bool pfx, bool shutdown)
{
string factoryRef = "factory:tcp -p 12010";
ObjectPrx base = communicator->stringToProxy(factoryRef);
@@ -204,7 +231,7 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
cout << "testing manual initialization... " << flush;
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("Ice.InitPlugins", "0");
CommunicatorPtr comm = initialize(initData);
ObjectPrx p = comm->stringToProxy("dummy:ssl -p 9999");
@@ -223,15 +250,20 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
comm->destroy();
}
+
+//
+// Anonymous cipher are not supported with SChannel
+//
+#ifndef ICE_USE_SCHANNEL
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("Ice.InitPlugins", "0");
-#ifdef ICE_USE_OPENSSL
+# ifdef ICE_USE_OPENSSL
initData.properties->setProperty("IceSSL.Ciphers", "ADH");
-#else
+# else
initData.properties->setProperty("IceSSL.Ciphers", "DH_anon_WITH_AES_256_CBC_SHA");
-#endif
+# endif
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
CommunicatorPtr comm = initialize(initData);
PluginManagerPtr pm = comm->getPluginManager();
@@ -239,12 +271,12 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
ObjectPrx obj = comm->stringToProxy(factoryRef);
test(obj);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(obj);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
-#ifdef ICE_USE_OPENSSL
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
+# ifdef ICE_USE_OPENSSL
d["IceSSL.Ciphers"] = "ADH";
-#else
+# else
d["IceSSL.Ciphers"] = "DH_anon_WITH_AES_256_CBC_SHA";
-#endif
+# endif
d["IceSSL.VerifyPeer"] = "0";
Test::ServerPrx server = fact->createServer(d);
try
@@ -258,6 +290,7 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
fact->destroyServer(server);
comm->destroy();
}
+#endif
cout << "ok" << endl;
cout << "testing certificate verification... " << flush;
@@ -271,25 +304,34 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// CA certificate.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
initData.properties->setProperty("IceSSL.DefaultDir", "");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "0";
Test::ServerPrx server = fact->createServer(d);
try
{
server->noCert();
}
- catch(const LocalException&)
+ catch(const LocalException& ex)
{
+ cerr << ex << endl;
test(false);
}
//
@@ -299,7 +341,14 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
{
IceSSL::NativeConnectionInfoPtr info =
IceSSL::NativeConnectionInfoPtr::dynamicCast(server->ice_getConnection()->getInfo());
+#ifdef ICE_USE_SCHANNEL
+ //
+ // SChannel doesn't seem to send the root certificate
+ //
+ test(info->nativeCerts.size() == 1);
+#else
test(info->nativeCerts.size() == 2);
+#endif
}
catch(const Ice::LocalException&)
{
@@ -310,10 +359,17 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
//
// Test IceSSL.VerifyPeer=1. Client does not have a certificate.
//
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "1";
server = fact->createServer(d);
try
@@ -330,10 +386,17 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// Test IceSSL.VerifyPeer=2. This should fail because the client
// does not supply a certificate.
//
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "2";
server = fact->createServer(d);
try
@@ -362,20 +425,37 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
//
// Test IceSSL.VerifyPeer=1. Client has a certificate.
//
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
+
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "1";
server = fact->createServer(d);
+
try
{
IceSSL::CertificatePtr clientCert =
@@ -432,10 +512,17 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
//
// Test IceSSL.VerifyPeer=2. Client has a certificate.
//
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "2";
server = fact->createServer(d);
try
@@ -457,22 +544,29 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// trust the server's CA. We disable IceSSL.DefaultDir in the client so that
// OpenSSL can't search for the server's CA certificate.
//
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.DefaultDir", "");
initData.properties->setProperty("IceSSL.VerifyPeer", "1");
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "0";
server = fact->createServer(d);
try
{
server->ice_ping();
- test(false);
+ test(false);
}
catch(const ProtocolException&)
{
@@ -499,19 +593,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// IceSSL.DefaultDir in the server so that it can't find the client's CA
// certificate.
//
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert2.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca2_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca2_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca2.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca2_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca2_priv.pem");
+ }
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d.erase("IceSSL.DefaultDir");
d["IceSSL.CertAuthFile"] = defaultDir + "/cacert1.pem";
- d["IceSSL.CertFile"] = defaultDir + "/s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = defaultDir + "/s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = defaultDir + "/s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = defaultDir + "/s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = defaultDir + "/s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "1";
server = fact->createServer(d);
try
@@ -540,18 +648,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
//
// Verify that IceSSL.CheckCertName has no effect in a server.
//
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.CheckCertName"] = "1";
server = fact->createServer(d);
try
@@ -576,19 +698,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// Test subject alternative name.
//
{
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.CheckCertName", "1");
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
server = fact->createServer(d);
try
{
@@ -605,19 +741,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// Test common name.
//
{
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.CheckCertName", "1");
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_cn1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_cn1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1_cn1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_cn1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_cn1_priv.pem";
+ }
server = fact->createServer(d);
try
{
@@ -635,19 +785,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// common name, therefore the address "127.0.0.1" must NOT match.
//
{
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.CheckCertName", "1");
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_cn2_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_cn2_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1_cn2.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_cn2_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_cn2_priv.pem";
+ }
server = fact->createServer(d);
try
{
@@ -666,17 +830,22 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
cout << "ok" << endl;
cout << "testing custom certificate verifier... " << flush;
+
{
+//
+// Anonymous ciphers are not supported with SChannel.
+//
+#ifndef ICE_USE_SCHANNEL
//
// ADH is allowed but will not have a certificate.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
-#ifdef ICE_USE_OPENSSL
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
+# ifdef ICE_USE_OPENSSL
initData.properties->setProperty("IceSSL.Ciphers", "ADH");
-#else
+# else
initData.properties->setProperty("IceSSL.Ciphers", "(DH_anon*)");
-#endif
+# endif
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
CommunicatorPtr comm = initialize(initData);
IceSSL::PluginPtr plugin = IceSSL::PluginPtr::dynamicCast(comm->getPluginManager()->getPlugin("IceSSL"));
@@ -686,14 +855,14 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
-#ifdef ICE_USE_OPENSSL
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
+# ifdef ICE_USE_OPENSSL
string cipherSub = "ADH-";
d["IceSSL.Ciphers"] = "ADH";
-#else
+# else
string cipherSub = "DH_anon";
d["IceSSL.Ciphers"] = "(DH_anon*)";
-#endif
+# endif
d["IceSSL.VerifyPeer"] = "0";
Test::ServerPrx server = fact->createServer(d);
try
@@ -735,16 +904,24 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
fact->destroyServer(server);
comm->destroy();
+#endif
}
{
//
// Verify that a server certificate is present.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
CommunicatorPtr comm = initialize(initData);
IceSSL::PluginPtr plugin = IceSSL::PluginPtr::dynamicCast(comm->getPluginManager()->getPlugin("IceSSL"));
@@ -754,10 +931,17 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "2";
Test::ServerPrx server = fact->createServer(d);
try
@@ -778,23 +962,47 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
cout << "testing protocols... " << flush;
{
+ //
+ // In OS X we don't support IceSSL.Protocols as secure transport doesn't allow to set the enabled protocols
+ // instead we use IceSSL.ProtocolVersionMax IceSSL.ProtocolVersionMin to set the maximun and minimum
+ // enabled protocol versions. See the test bellow.
+ //
#ifndef ICE_USE_SECURE_TRANSPORT
//
// This should fail because the client and server have no protocol
// in common.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
- initData.properties->setProperty("IceSSL.Ciphers", "ADH");
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
+ initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
- initData.properties->setProperty("IceSSL.Protocols", "ssl3");
+ initData.properties->setProperty("IceSSL.Protocols", "ssl3");
CommunicatorPtr comm = initialize(initData);
+
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
- d["IceSSL.Ciphers"] = "ADH";
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
+ initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "s_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "s_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "s_rsa_nopass_ca1_priv.pem");
+ }
d["IceSSL.VerifyPeer"] = "0";
- d["IceSSL.Protocols"] = "tls1";
+ d["IceSSL.Protocols"] = "tls";
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -822,17 +1030,27 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
- d["IceSSL.Ciphers"] = "ADH";
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
+ d["IceSSL.CertAuthFile"] = "cacert1.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "0";
- d["IceSSL.Protocols"] = "tls1, ssl3";
+ d["IceSSL.Protocols"] = "tls, ssl3";
server = fact->createServer(d);
try
{
server->ice_ping();
}
- catch(const LocalException&)
+ catch(const LocalException& ex)
{
+ cerr << ex << endl;
test(false);
}
fact->destroyServer(server);
@@ -843,7 +1061,7 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// in common.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.Ciphers", "(DH_anon*)");
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
initData.properties->setProperty("IceSSL.ProtocolVersionMax", "ssl3");
@@ -851,7 +1069,7 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.Ciphers"] = "(DH_anon*)";
d["IceSSL.VerifyPeer"] = "0";
d["IceSSL.ProtocolVersionMax"] = "tls1_2";
@@ -883,7 +1101,7 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.Ciphers"] = "(DH_anon*)";
d["IceSSL.VerifyPeer"] = "0";
d["IceSSL.ProtocolVersionMax"] = "tls1";
@@ -915,17 +1133,31 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_exp_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_exp_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1_exp.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_exp_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_exp_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -958,17 +1190,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
IceSSL::Certificate::load(defaultDir + "/c_rsa_nopass_ca1_exp_pub.pem");
test(!cert->checkValidity());
}
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_exp_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_exp_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1_exp.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_exp_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_exp_priv.pem");
+ }
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
server = fact->createServer(d);
try
{
@@ -995,6 +1242,7 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
cout << "ok" << endl;
+#ifdef ICE_USE_OPENSSL
cout << "testing CA certificate directory... " << flush;
{
//
@@ -1002,15 +1250,29 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// certificate in the default directory.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1025,17 +1287,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
comm->destroy();
}
cout << "ok" << endl;
-
+#endif
+
+ //
+ // SChannel doesn't support PCKS8 certificates (PEM Password protected certificates)
+ //
+#ifdef ICE_USE_SCHANNEL
+ if(pfx)
+ {
+#endif
cout << "testing password prompt... " << flush;
{
//
// Use the correct password.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, false);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_pass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_pass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_pass_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_pass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_pass_ca1_priv.pem");
+ }
initData.properties->setProperty("Ice.InitPlugins", "0");
CommunicatorPtr comm = initialize(initData);
PluginManagerPtr pm = comm->getPluginManager();
@@ -1047,10 +1324,17 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
test(prompt->count() == 1);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1063,14 +1347,22 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
fact->destroyServer(server);
comm->destroy();
-
+
+ cerr << "Use incorrect password" << endl;
//
// Use an incorrect password and check that retries are attempted.
//
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, false);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_pass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_pass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_pass_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_pass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_pass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.PasswordRetryMax", "4");
initData.properties->setProperty("Ice.InitPlugins", "0");
comm = initialize(initData);
@@ -1097,34 +1389,37 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
comm->destroy();
}
cout << "ok" << endl;
-
+#ifdef ICE_USE_SCHANNEL
+ }
+#endif
cout << "testing ciphers... " << flush;
+#ifndef ICE_USE_SCHANNEL
{
//
// The server has a certificate but the client doesn't. They should
// negotiate to use ADH since we explicitly enable it.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
-#ifdef ICE_USE_OPENSSL
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
+# ifdef ICE_USE_OPENSSL
initData.properties->setProperty("IceSSL.Ciphers", "ADH");
-#else
+# else
initData.properties->setProperty("IceSSL.Ciphers", "(DH_anon*)");
-#endif
+# endif
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
-#ifdef ICE_USE_OPENSSL
+# ifdef ICE_USE_OPENSSL
string cipherSub = "ADH-";
d["IceSSL.Ciphers"] = "RSA:ADH";
-#else
+# else
string cipherSub = "DH_";
d["IceSSL.Ciphers"] = "(RSA_*) (DH_anon*)";
-#endif
+# endif
d["IceSSL.VerifyPeer"] = "1";
Test::ServerPrx server = fact->createServer(d);
try
@@ -1148,16 +1443,16 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// provide a certificate.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
-#ifdef ICE_USE_OPENSSL
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
+# ifdef ICE_USE_OPENSSL
initData.properties->setProperty("IceSSL.Ciphers", "ALL:!ADH");
-#else
+# else
initData.properties->setProperty("IceSSL.Ciphers", "!(DH_anon*)");
-#endif
+# endif
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.VerifyPeer"] = "0";
Test::ServerPrx server = fact->createServer(d);
try
@@ -1169,12 +1464,12 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
{
}
-#if defined(_WIN32) || defined(ICE_USE_SECURE_TRANSPORT)
+# if defined(_WIN32) || defined(ICE_USE_SECURE_TRANSPORT)
catch(const ConnectionLostException&)
{
}
-#endif
+# endif
catch(const LocalException& ex)
{
cerr << ex << endl;
@@ -1184,13 +1479,13 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
comm->destroy();
}
-#ifdef ICE_USE_SECURE_TRANSPORT
+# ifdef ICE_USE_SECURE_TRANSPORT
{
//
// This should fail because the client disabled all ciphers.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
@@ -1199,7 +1494,7 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
@@ -1225,12 +1520,12 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// Test IceSSL.DHParams
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.Ciphers", "(DH_anon*)");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.Ciphers"] = "(DH_anon*)";
d["IceSSL.DHParams"] = "dh_params512.der";
d["IceSSL.VerifyPeer"] = "0";
@@ -1253,12 +1548,12 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// Test IceSSL.DHParams
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.Ciphers", "(DH_anon*)");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.Ciphers"] = "(DH_anon*)";
d["IceSSL.DHParams"] = "dh_params1024.der";
d["IceSSL.VerifyPeer"] = "0";
@@ -1275,31 +1570,158 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
fact->destroyServer(server);
comm->destroy();
}
-#endif
-
+# endif
+#else // SChannel ciphers
+ {
+ //
+ // Client and server should negotiate to use 3DES as it is enabled in both.
+ //
+ InitializationData initData;
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
+ initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
+ initData.properties->setProperty("IceSSL.Ciphers", "3DES");
+
+ CommunicatorPtr comm = initialize(initData);
+ Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
+ test(fact);
+
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
+ d["IceSSL.CertAuthFile"] = "cacert1.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
+ d["IceSSL.Ciphers"] = "3DES AES_256";
+
+ Test::ServerPrx server = fact->createServer(d);
+ try
+ {
+ server->checkCipher("3DES");
+ IceSSL::NativeConnectionInfoPtr info =
+ IceSSL::NativeConnectionInfoPtr::dynamicCast(server->ice_getConnection()->getInfo());
+ test(info->cipher.compare(0, 4, "3DES") == 0);
+ }
+ catch(const LocalException& ex)
+ {
+ cerr << ex << endl;
+ test(false);
+ }
+ fact->destroyServer(server);
+ comm->destroy();
+ }
+ {
+ //
+ // Client and server doesn't enable a common cipher negotiate to use 3DES as it is enabled in both.
+ //
+ InitializationData initData;
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
+ initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
+ initData.properties->setProperty("IceSSL.Ciphers", "3DES");
+
+ CommunicatorPtr comm = initialize(initData);
+ Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
+ test(fact);
+
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
+ d["IceSSL.CertAuthFile"] = "cacert1.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
+ d["IceSSL.Ciphers"] = "AES_256";
+
+ Test::ServerPrx server = fact->createServer(d);
+ try
+ {
+ server->checkCipher("3DES");
+ test(false);
+ }
+ catch(const Ice::ConnectionLostException&)
+ {
+ //expected
+ }
+ catch(const LocalException& ex)
+ {
+ cerr << ex << endl;
+ test(false);
+ }
+ fact->destroyServer(server);
+ comm->destroy();
+ }
+#endif
//
// No DSA support in Secure Transport.
//
#ifndef ICE_USE_SECURE_TRANSPORT
{
+
+ //
+ // DSA PEM certificates are not supported with SChannel.
+ //
+# ifdef ICE_USE_SCHANNEL
+ if(pfx)
+ {
+# endif
//
// Configure a server with RSA and DSA certificates.
//
// First try a client with a DSA certificate.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_dsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_dsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_dsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_dsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_dsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.Ciphers", "DEFAULT:DSS");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem" + sep + "s_dsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem" + sep + "s_dsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx" + sep + "s_dsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem" + sep + "s_dsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem" + sep + "s_dsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.Ciphers"] = "DEFAULT:DSS";
d["IceSSL.VerifyPeer"] = "1";
Test::ServerPrx server = fact->createServer(d);
@@ -1317,20 +1739,35 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
//
// Next try a client with an RSA certificate.
//
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem" + sep + "s_dsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem" + sep + "s_dsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx" + sep + "s_dsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem" + sep + "s_dsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem" + sep + "s_dsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.Ciphers"] = "DEFAULT:DSS";
d["IceSSL.VerifyPeer"] = "1";
server = fact->createServer(d);
+
try
{
server->ice_ping();
@@ -1341,16 +1778,20 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
fact->destroyServer(server);
comm->destroy();
+# ifdef ICE_USE_SCHANNEL
+ }
+# endif
+# ifndef ICE_USE_SCHANNEL
//
// Next try a client with ADH. This should fail.
//
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.Ciphers", "ADH");
comm = initialize(initData);
fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem" + sep + "s_dsa_nopass_ca1_pub.pem";
d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem" + sep + "s_dsa_nopass_ca1_priv.pem";
@@ -1372,24 +1813,46 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
fact->destroyServer(server);
comm->destroy();
+# endif
}
+# ifndef ICE_USE_SCHANNEL
{
//
// Configure a server with RSA and a client with DSA. This should fail.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_dsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_dsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_dsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_dsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_dsa_nopass_ca1_priv.pem");
+ }
+
initData.properties->setProperty("IceSSL.Ciphers", "DSS");
+ initData.properties->setProperty("IceSSL.Trace.Security", "1");
+
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
+ d["IceSSL.VerifyPeer"] = "2";
+ d["IceSSL.Trace.Security"] = "1";
+
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1414,33 +1877,49 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
fact->destroyServer(server);
comm->destroy();
}
+# endif
#endif
cout << "ok" << endl;
cout << "testing IceSSL.TrustOnly... " << flush;
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "C=US, ST=Florida, O=ZeroC\\, Inc.,"
"OU=Ice, emailAddress=info@zeroc.com, CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
server->ice_ping();
}
- catch(const LocalException&)
+ catch(const LocalException& ex)
{
+ cerr << ex << endl;
test(false);
}
fact->destroyServer(server);
@@ -1448,20 +1927,34 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "!C=US, ST=Florida, O=ZeroC\\, Inc.,"
"OU=Ice, emailAddress=info@zeroc.com, CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1476,20 +1969,34 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "C=US, ST=Florida, O=\"ZeroC, Inc.\","
"OU=Ice, emailAddress=info@zeroc.com, CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1504,19 +2011,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
-
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly"] = "C=US, ST=Florida, O=ZeroC\\, Inc., OU=Ice, emailAddress=info@zeroc.com,"
"CN=Client";
Test::ServerPrx server = fact->createServer(d);
@@ -1533,18 +2053,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly"] = "!C=US, ST=Florida, O=ZeroC\\, Inc., OU=Ice, emailAddress=info@zeroc.com, CN=Client";
Test::ServerPrx server = fact->createServer(d);
try
@@ -1560,19 +2094,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1587,19 +2135,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "!CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1614,19 +2176,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
-
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly"] = "CN=Client";
Test::ServerPrx server = fact->createServer(d);
try
@@ -1642,18 +2217,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly"] = "!CN=Client";
Test::ServerPrx server = fact->createServer(d);
try
@@ -1669,19 +2258,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "CN=Client");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1696,18 +2299,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly"] = "CN=Server";
Test::ServerPrx server = fact->createServer(d);
try
@@ -1723,19 +2340,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "C=Canada,CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1750,19 +2381,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "!C=Canada,CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1777,19 +2422,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "C=Canada;CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1804,19 +2463,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "!C=Canada;!CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1831,19 +2504,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "!CN=Server1"); // Should not match "Server"
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1858,18 +2545,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly"] = "!CN=Client1"; // Should not match "Client"
Test::ServerPrx server = fact->createServer(d);
try
@@ -1883,29 +2584,29 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
fact->destroyServer(server);
comm->destroy();
}
+
{
//
// Test rejection when client does not supply a certificate.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
CommunicatorPtr comm = initialize(initData);
-#ifdef ICE_USE_OPENSSL
- initData.properties->setProperty("IceSSL.Ciphers", "ADH");
-#else
- initData.properties->setProperty("IceSSL.Ciphers", "(DH_anon*)");
-#endif
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.TrustOnly"] = "C=US, ST=Florida, O=ZeroC\\, Inc.,OU=Ice, emailAddress=info@zeroc.com, CN=Client";
-#ifdef ICE_USE_OPENSSL
- d["IceSSL.Ciphers"] = "ADH";
-#else
- d["IceSSL.Ciphers"] = "(DH_anon*)";
-#endif
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "0";
Test::ServerPrx server = fact->createServer(d);
try
@@ -1924,24 +2625,23 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// Test rejection when client does not supply a certificate.
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
CommunicatorPtr comm = initialize(initData);
-#ifdef ICE_USE_OPENSSL
- initData.properties->setProperty("IceSSL.Ciphers", "ADH");
-#else
- initData.properties->setProperty("IceSSL.Ciphers", "(DH_anon*)");
-#endif
initData.properties->setProperty("IceSSL.VerifyPeer", "0");
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.TrustOnly"] = "!C=US, ST=Florida, O=ZeroC\\, Inc.,OU=Ice, emailAddress=info@zeroc.com, CN=Client";
-#ifdef ICE_USE_OPENSSL
- d["IceSSL.Ciphers"] = "ADH";
-#else
- d["IceSSL.Ciphers"] = "(DH_anon*)";
-#endif
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.VerifyPeer"] = "0";
Test::ServerPrx server = fact->createServer(d);
try
@@ -1960,19 +2660,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// Rejection takes precedence (client).
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly", "ST=Florida;!CN=Server;C=US");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -1990,18 +2704,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
// Rejection takes precedence (server).
//
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly"] = "C=US;!CN=Client;ST=Florida";
Test::ServerPrx server = fact->createServer(d);
try
@@ -2020,23 +2748,38 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
cout << "testing IceSSL.TrustOnly.Client... " << flush;
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly.Client", "C=US, ST=Florida, O=ZeroC\\, Inc.,"
"OU=Ice, emailAddress=info@zeroc.com, CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
// Should have no effect.
d["IceSSL.TrustOnly.Client"] = "C=US, ST=Florida, O=ZeroC\\, Inc., OU=Ice, emailAddress=info@zeroc.com,"
- "CN=Server";
+ "CN=Server";
+
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -2051,20 +2794,34 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly.Client", "!C=US, ST=Florida, O=ZeroC\\, Inc.,"
"OU=Ice, emailAddress=info@zeroc.com, CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -2079,18 +2836,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
// Should have no effect.
d["IceSSL.TrustOnly.Client"] = "!CN=Client";
Test::ServerPrx server = fact->createServer(d);
@@ -2107,19 +2878,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly.Client", "CN=Client");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -2134,19 +2919,33 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
initData.properties->setProperty("IceSSL.TrustOnly.Client", "!CN=Client");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -2164,10 +2963,17 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
cout << "testing IceSSL.TrustOnly.Server... " << flush;
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
// Should have no effect.
initData.properties->setProperty("IceSSL.TrustOnly.Server", "C=US, ST=Florida, O=ZeroC\\, Inc., OU=Ice,"
"emailAddress=info@zeroc.com,CN=Client");
@@ -2175,12 +2981,20 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly.Server"] = "C=US, ST=Florida, O=ZeroC\\, Inc., OU=Ice, emailAddress=info@zeroc.com,"
- "CN=Client";
+ "CN=Client";
+
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -2195,18 +3009,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly.Server"] =
"!C=US, ST=Florida, O=ZeroC\\, Inc., OU=Ice, emailAddress=info@zeroc.com, CN=Client";
Test::ServerPrx server = fact->createServer(d);
@@ -2223,20 +3051,34 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
// Should have no effect.
initData.properties->setProperty("IceSSL.TrustOnly.Server", "!CN=Server");
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -2251,18 +3093,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly.Server"] = "CN=Server";
Test::ServerPrx server = fact->createServer(d);
try
@@ -2278,18 +3134,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly.Server"] = "!CN=Client";
Test::ServerPrx server = fact->createServer(d);
try
@@ -2308,21 +3178,35 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
cout << "testing IceSSL.TrustOnly.Server.<AdapterName>... " << flush;
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
- d["IceSSL.TrustOnly.Server"] = "CN=bogus";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly.Server.ServerAdapter"] =
"C=US, ST=Florida, O=ZeroC\\, Inc., OU=Ice, emailAddress=info@zeroc.com,CN=Client";
+ d["IceSSL.TrustOnly.Server"] = "CN=bogus";
Test::ServerPrx server = fact->createServer(d);
try
{
@@ -2337,18 +3221,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly.Server.ServerAdapter"] =
"!C=US, ST=Florida, O=ZeroC\\, Inc., OU=Ice, emailAddress=info@zeroc.com, CN=Client";
Test::ServerPrx server = fact->createServer(d);
@@ -2365,18 +3263,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly.Server.ServerAdapter"] = "CN=bogus";
Test::ServerPrx server = fact->createServer(d);
try
@@ -2392,18 +3304,32 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
{
InitializationData initData;
- initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost);
+ initData.properties = createClientProps(defaultProperties, defaultDir, defaultHost, pfx);
initData.properties->setProperty("IceSSL.CertAuthFile", "cacert1.pem");
- initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
- initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ if(pfx)
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_ca1.pfx");
+ }
+ else
+ {
+ initData.properties->setProperty("IceSSL.CertFile", "c_rsa_nopass_ca1_pub.pem");
+ initData.properties->setProperty("IceSSL.KeyFile", "c_rsa_nopass_ca1_priv.pem");
+ }
CommunicatorPtr comm = initialize(initData);
Test::ServerFactoryPrx fact = Test::ServerFactoryPrx::checkedCast(comm->stringToProxy(factoryRef));
test(fact);
- Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost);
+ Test::Properties d = createServerProps(defaultProperties, defaultDir, defaultHost, pfx);
d["IceSSL.CertAuthFile"] = "cacert1.pem";
- d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
- d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ if(pfx)
+ {
+ d["IceSSL.CertFile"] = "s_rsa_ca1.pfx";
+ }
+ else
+ {
+ d["IceSSL.CertFile"] = "s_rsa_nopass_ca1_pub.pem";
+ d["IceSSL.KeyFile"] = "s_rsa_nopass_ca1_priv.pem";
+ }
d["IceSSL.TrustOnly.Server.ServerAdapter"] = "!CN=bogus";
Test::ServerPrx server = fact->createServer(d);
try
@@ -2419,5 +3345,8 @@ allTests(const CommunicatorPtr& communicator, const string& testDir)
}
cout << "ok" << endl;
- factory->shutdown();
+ if(shutdown)
+ {
+ factory->shutdown();
+ }
}
diff --git a/cpp/test/IceSSL/configuration/Client.cpp b/cpp/test/IceSSL/configuration/Client.cpp
index 6ecc87b3561..e99831bdee8 100644
--- a/cpp/test/IceSSL/configuration/Client.cpp
+++ b/cpp/test/IceSSL/configuration/Client.cpp
@@ -8,6 +8,7 @@
// **********************************************************************
#include <Ice/Ice.h>
+#include <IceSSL/IceSSL.h>
using namespace std;
@@ -20,9 +21,12 @@ run(int argc, char* argv[], const Ice::CommunicatorPtr& communicator)
return 1;
}
- void allTests(const Ice::CommunicatorPtr&, const string&);
+ void allTests(const Ice::CommunicatorPtr&, const string&, bool, bool);
- allTests(communicator, argv[1]);
+ cerr << "testing with PKCS12 certificates..." << endl;
+ allTests(communicator, argv[1], true, false);
+ cerr << "testing with PEM certificates..." << endl;
+ allTests(communicator, argv[1], false, true);
return EXIT_SUCCESS;
}
diff --git a/cpp/test/IceSSL/configuration/TestI.cpp b/cpp/test/IceSSL/configuration/TestI.cpp
index 151f141ad1e..e4f192bf3ae 100644
--- a/cpp/test/IceSSL/configuration/TestI.cpp
+++ b/cpp/test/IceSSL/configuration/TestI.cpp
@@ -30,8 +30,9 @@ ServerI::noCert(const Ice::Current& c)
IceSSL::NativeConnectionInfoPtr info = IceSSL::NativeConnectionInfoPtr::dynamicCast(c.con->getInfo());
test(info->nativeCerts.size() == 0);
}
- catch(const Ice::LocalException&)
+ catch(const Ice::LocalException& ex)
{
+ cerr << ex << endl;
test(false);
}
}
diff --git a/cpp/test/IceUtil/Makefile b/cpp/test/IceUtil/Makefile
index 7204235c3cc..4b2372755f2 100644
--- a/cpp/test/IceUtil/Makefile
+++ b/cpp/test/IceUtil/Makefile
@@ -19,7 +19,8 @@ SUBDIRS = condvar \
ctrlCHandler \
timer \
priority \
- fileLock
+ fileLock \
+ sha1
.PHONY: $(EVERYTHING) $(SUBDIRS)
diff --git a/cpp/test/IceUtil/Makefile.mak b/cpp/test/IceUtil/Makefile.mak
index 6ba18b9c814..aaacb16a35d 100644
--- a/cpp/test/IceUtil/Makefile.mak
+++ b/cpp/test/IceUtil/Makefile.mak
@@ -19,7 +19,8 @@ SUBDIRS = condvar \
ctrlCHandler \
timer \
priority \
- fileLock
+ fileLock \
+ sha1
$(EVERYTHING)::
@for %i in ( $(SUBDIRS) ) do \
diff --git a/cpp/test/IceUtil/sha1/.depend b/cpp/test/IceUtil/sha1/.depend
new file mode 100644
index 00000000000..23a70b2909f
--- /dev/null
+++ b/cpp/test/IceUtil/sha1/.depend
@@ -0,0 +1 @@
+Client$(OBJEXT): Client.cpp $(includedir)/IceUtil/SHA1.h $(includedir)/IceUtil/Config.h ../../include/TestCommon.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/MutexPtrLock.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/StringConverter.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/IceUtil/IconvStringConverter.h $(includedir)/IceUtil/UndefSysMacros.h
diff --git a/cpp/test/IceUtil/sha1/.depend.mak b/cpp/test/IceUtil/sha1/.depend.mak
new file mode 100644
index 00000000000..d417fc1015e
--- /dev/null
+++ b/cpp/test/IceUtil/sha1/.depend.mak
@@ -0,0 +1 @@
+Client$(OBJEXT): Client.cpp "$(includedir)/IceUtil/SHA1.h" "$(includedir)/IceUtil/Config.h" ../../include/TestCommon.h "$(includedir)/IceUtil/IceUtil.h" "$(includedir)/IceUtil/AbstractMutex.h" "$(includedir)/IceUtil/Lock.h" "$(includedir)/IceUtil/ThreadException.h" "$(includedir)/IceUtil/Exception.h" "$(includedir)/IceUtil/Time.h" "$(includedir)/IceUtil/Cache.h" "$(includedir)/IceUtil/Handle.h" "$(includedir)/IceUtil/Mutex.h" "$(includedir)/IceUtil/MutexProtocol.h" "$(includedir)/IceUtil/CountDownLatch.h" "$(includedir)/IceUtil/Cond.h" "$(includedir)/IceUtil/CtrlCHandler.h" "$(includedir)/IceUtil/Functional.h" "$(includedir)/IceUtil/Monitor.h" "$(includedir)/IceUtil/MutexPtrLock.h" "$(includedir)/IceUtil/RecMutex.h" "$(includedir)/IceUtil/ScopedArray.h" "$(includedir)/IceUtil/Shared.h" "$(includedir)/IceUtil/StringConverter.h" "$(includedir)/IceUtil/Thread.h" "$(includedir)/IceUtil/Timer.h" "$(includedir)/IceUtil/UUID.h" "$(includedir)/IceUtil/UniquePtr.h" "$(includedir)/IceUtil/IconvStringConverter.h" "$(includedir)/IceUtil/UndefSysMacros.h"
diff --git a/cpp/test/IceUtil/sha1/.gitignore b/cpp/test/IceUtil/sha1/.gitignore
new file mode 100644
index 00000000000..1446b6586f5
--- /dev/null
+++ b/cpp/test/IceUtil/sha1/.gitignore
@@ -0,0 +1,4 @@
+// Generated by makegitignore.py
+
+// IMPORTANT: Do not edit this file -- any edits made here will be lost!
+client
diff --git a/cpp/test/IceUtil/sha1/Client.cpp b/cpp/test/IceUtil/sha1/Client.cpp
new file mode 100644
index 00000000000..99d043f8e29
--- /dev/null
+++ b/cpp/test/IceUtil/sha1/Client.cpp
@@ -0,0 +1,115 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#include <IceUtil/SHA1.h>
+#include <TestCommon.h>
+
+using namespace IceUtil;
+using namespace std;
+
+namespace
+{
+
+struct SHA1Item
+{
+ const char* data;
+ const char* digest;
+};
+
+SHA1Item items[] =
+{
+ {"hello world", "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"},
+ {"2aae6c35c94fcfb415dbe95f408b9ce91ee846ed", "d6b0d82cea4269b51572b8fab43adcee9fc3cf9a"},
+ {"Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
+ "Cras vel ante adipiscing, aliquet ipsum sit amet, suscipit ante. "
+ "Donec tempor purus in suscipit tempus. "
+ "Vestibulum vulputate ipsum in quam bibendum laoreet. "
+ "Etiam tristique viverra metus, at condimentum eros scelerisque et. "
+ "Proin in diam sit amet nisi facilisis dictum. "
+ "Donec placerat libero a mauris tristique, "
+ "id pulvinar magna pharetra. Vivamus posuere tincidunt elit, "
+ "eget lacinia nisl feugiat in. Aenean neque mi, "
+ "vehicula a vestibulum nec, condimentum vel ipsum. "
+ "Duis sit amet quam sit amet risus sollicitudin euismod. "
+ "Nullam elit neque, suscipit ac convallis non, convallis et urna. "
+ "Sed semper elementum erat, ut egestas lacus interdum sit amet. "
+ "Sed ipsum nisi, ultricies congue augue id, euismod posuere sapien. "
+ "Fusce volutpat nisl in orci laoreet, vitae lacinia urna venenatis.",
+ "84fac2d6a78ab4acbeae1408ab4de49c4bd145bb"},
+ {"Pellentesque accumsan mauris neque, nec sollicitudin metus ornare eu. "
+ "Sed dignissim nisi neque, sit amet dapibus purus faucibus laoreet. "
+ "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. "
+ "Donec cursus risus sed arcu varius posuere. Donec pretium felis mi, eu consequat arcu imperdiet vitae. "
+ "Etiam fringilla velit in nisl semper, nec mattis turpis blandit. "
+ "Etiam magna sem, laoreet eu urna vitae, laoreet dictum tortor. In et iaculis enim, nec pharetra ipsum. "
+ "Sed porttitor suscipit ligula mattis sollicitudin. Cras imperdiet iaculis dictum. "
+ "Ut vel nisl condimentum, placerat ante a, suscipit turpis",
+ "0ecd4503f02f3febeca1460fb81e8f7fc0d59abe"},
+ {"Curabitur in dolor justo. Morbi vitae consectetur odio. Aliquam erat volutpat. "
+ "Fusce consectetur magna nec metus ornare pretium. Ut tincidunt mi eu bibendum pharetra. "
+ "Morbi sit amet elit augue. Praesent et enim condimentum, ullamcorper est tempor, auctor leo. "
+ "Pellentesque eu convallis urna, ac auctor orci. Cras sapien lectus, convallis congue nunc nec, "
+ "porta molestie est. Aliquam consectetur elementum posuere. Duis et mollis lorem.",
+ "b4d38ece814fdfe9ff067d08c6389c6512530bb4"}
+};
+
+int itemsSize = sizeof(items)/sizeof(SHA1Item);
+
+string toHex(const string& data)
+{
+ ostringstream os;
+ for(size_t i = 0; i < data.size(); ++i)
+ {
+ os.width(2);
+ os.fill('0');
+ unsigned char c = data[i];
+ os << hex << (int)c;
+ }
+ return os.str();
+}
+
+}
+
+int main(int argc, char* argv[])
+{
+ cout << "Testing sha1 hash computation... ";
+ for(int i = 0; i < itemsSize; ++i)
+ {
+ const SHA1Item* item = &items[i];
+ vector<unsigned char> buffer;
+ IceUtil::sha1(reinterpret_cast<const unsigned char*>(item->data), strlen(item->data), buffer);
+ test(buffer.size() == 20);
+ string digest = toHex(string(reinterpret_cast<const char*>(&buffer[0]), 20));
+ test(item->digest == digest);
+ }
+
+ for(int i = 0; i < itemsSize; ++i)
+ {
+ const SHA1Item* item = &items[i];
+ IceUtil::SHA1 hasher;
+ //
+ // Test adding the data in chunks
+ //
+ const unsigned char* begin = reinterpret_cast<const unsigned char*>(&item->data[0]);
+ const unsigned char* end = begin + strlen(item->data);
+ while(begin != end)
+ {
+ size_t packetSize = min(static_cast<size_t>(5), static_cast<size_t>(end - begin));
+ hasher.update(begin, packetSize);
+ begin += packetSize;
+ }
+ vector<unsigned char> buffer;
+ hasher.finalize(buffer);
+ test(buffer.size() == 20);
+ string digest = toHex(string(reinterpret_cast<const char*>(&buffer[0]), 20));
+ test(item->digest == digest);
+ }
+ cout << "ok" << endl;
+ return EXIT_SUCCESS;
+}
diff --git a/cpp/test/IceUtil/sha1/Makefile b/cpp/test/IceUtil/sha1/Makefile
new file mode 100644
index 00000000000..e629db011fa
--- /dev/null
+++ b/cpp/test/IceUtil/sha1/Makefile
@@ -0,0 +1,29 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+top_srcdir = ../../..
+
+CLIENT = $(call mktestname,client)
+
+TARGETS = $(CLIENT)
+
+OBJS = Client.o
+
+
+SRCS = $(OBJS:.o=.cpp)
+
+include $(top_srcdir)/config/Make.rules
+
+CPPFLAGS := -I. -I../../include $(CPPFLAGS)
+
+$(CLIENT): $(OBJS)
+ rm -f $@
+ $(call mktest,$@,$(OBJS),$(BASELIBS))
+
+include .depend
diff --git a/cpp/test/IceUtil/sha1/Makefile.mak b/cpp/test/IceUtil/sha1/Makefile.mak
new file mode 100644
index 00000000000..f5d0d46d9ee
--- /dev/null
+++ b/cpp/test/IceUtil/sha1/Makefile.mak
@@ -0,0 +1,33 @@
+# **********************************************************************
+#
+# Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+top_srcdir = ..\..\..
+
+CLIENT = client.exe
+
+TARGETS = $(CLIENT)
+
+OBJS = Client.obj
+
+SRCS = $(OBJS:.obj=.cpp)
+
+!include $(top_srcdir)/config/Make.rules.mak
+
+CPPFLAGS = -I. -I../../include $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
+
+!if "$(GENERATE_PDB)" == "yes"
+PDBFLAGS = /pdb:$(CLIENT:.exe=.pdb)
+!endif
+
+$(CLIENT): $(OBJS)
+ $(LINK) $(LD_EXEFLAGS) $(PDBFLAGS) $(SETARGV) $(OBJS) $(PREOUT)$@ $(PRELIBS)$(BASELIBS)
+ @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \
+ $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest
+
+!include .depend.mak
diff --git a/cpp/test/IceUtil/sha1/run.py b/cpp/test/IceUtil/sha1/run.py
new file mode 100755
index 00000000000..16c74442816
--- /dev/null
+++ b/cpp/test/IceUtil/sha1/run.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+# **********************************************************************
+#
+# Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+import os, sys
+
+path = [ ".", "..", "../..", "../../..", "../../../.." ]
+head = os.path.dirname(sys.argv[0])
+if len(head) > 0:
+ path = [os.path.join(head, p) for p in path]
+path = [os.path.abspath(p) for p in path if os.path.exists(os.path.join(p, "scripts", "TestUtil.py")) ]
+if len(path) == 0:
+ raise RuntimeError("can't find toplevel directory!")
+sys.path.append(os.path.join(path[0], "scripts"))
+import TestUtil
+
+client = os.path.join(os.getcwd(), "client")
+TestUtil.simpleTest(client)