summaryrefslogtreecommitdiff
path: root/cpp/test
diff options
context:
space:
mode:
authorJose <pepone@users.noreply.github.com>2021-09-20 11:14:49 +0200
committerGitHub <noreply@github.com>2021-09-20 11:14:49 +0200
commit8333a032f107938170a26ba6d88c4638bdd0d206 (patch)
tree58c08638c080ba01244500ce1185094a52a90c9b /cpp/test
parentMinor refactor for C# readValue to match Java implementation (#1305) (diff)
downloadice-8333a032f107938170a26ba6d88c4638bdd0d206.tar.bz2
ice-8333a032f107938170a26ba6d88c4638bdd0d206.tar.xz
ice-8333a032f107938170a26ba6d88c4638bdd0d206.zip
Add revocation certificate checks (#1303)
Diffstat (limited to 'cpp/test')
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca3.p12bin0 -> 2972 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca3_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca3_pub.pem30
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca3_revoked.p12bin0 -> 3020 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca3_revoked_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca3_revoked_pub.pem30
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca4.p12bin0 -> 3028 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca4_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca4_pub.pem31
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca4_revoked.p12bin0 -> 3060 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca4_revoked_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca4_revoked_pub.pem31
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca4_unknown.p12bin0 -> 3028 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca4_unknown_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_ca4_unknown_pub.pem30
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai3.p12bin0 -> 4302 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai3_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai3_pub.pem58
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai3_revoked.p12bin0 -> 4342 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai3_revoked_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai3_revoked_pub.pem58
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai4.p12bin0 -> 4390 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai4_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai4_pub.pem60
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai4_revoked.p12bin0 -> 4430 bytes
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai4_revoked_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/c_rsa_cai4_revoked_pub.pem60
-rw-r--r--cpp/test/IceSSL/certs/ca.crl.pem30
-rw-r--r--cpp/test/IceSSL/certs/ca3.cnf18
-rw-r--r--cpp/test/IceSSL/certs/ca3.crl.pem15
-rw-r--r--cpp/test/IceSSL/certs/ca4.cnf18
-rw-r--r--cpp/test/IceSSL/certs/ca4.crl.pem15
-rw-r--r--cpp/test/IceSSL/certs/cacert2.derbin0 -> 1027 bytes
-rw-r--r--cpp/test/IceSSL/certs/cacert3.derbin0 -> 1028 bytes
-rw-r--r--cpp/test/IceSSL/certs/cacert3.pem24
-rw-r--r--cpp/test/IceSSL/certs/cacert4.derbin0 -> 1028 bytes
-rw-r--r--cpp/test/IceSSL/certs/cacert4.pem24
-rw-r--r--cpp/test/IceSSL/certs/cacerts.pem48
-rw-r--r--cpp/test/IceSSL/certs/cai3.cnf18
-rw-r--r--cpp/test/IceSSL/certs/cai3.crl.pem14
-rw-r--r--cpp/test/IceSSL/certs/cai3.derbin0 -> 1295 bytes
-rw-r--r--cpp/test/IceSSL/certs/cai3.pem58
-rw-r--r--cpp/test/IceSSL/certs/cai4.cnf18
-rw-r--r--cpp/test/IceSSL/certs/cai4.crl.pem14
-rw-r--r--cpp/test/IceSSL/certs/cai4.derbin0 -> 1343 bytes
-rw-r--r--cpp/test/IceSSL/certs/cai4.pem60
-rw-r--r--cpp/test/IceSSL/certs/db/ca1/ca.settings.json1
-rw-r--r--cpp/test/IceSSL/certs/db/ca1/intermediate1/ca.settings.json1
-rw-r--r--cpp/test/IceSSL/certs/db/ca1/intermediate1/intermediate1/ca.settings.json1
-rw-r--r--cpp/test/IceSSL/certs/db/ca2/ca.settings.json1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_revoked.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_revoked_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/ca.pem24
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/ca.settings.json1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/ca_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/crlnumber1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/crlnumber.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/index.txt3
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/index.txt.attr1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/index.txt.attr.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/index.txt.old2
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3.pem58
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_revoked.pem58
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_revoked_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/ca.pem58
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/ca.settings.json1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/ca_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/crlnumber1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/crlnumber.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt2
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.attr1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.attr.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3.pem58
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_revoked.pem58
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_revoked_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_revoked.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_revoked_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4.pem31
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_revoked.pem31
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_revoked_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_unknown.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_unknown_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/ca.pem24
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/ca.settings.json1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/ca_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/crlnumber1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/crlnumber.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/index.txt3
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/index.txt.attr1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/index.txt.attr.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/index.txt.old2
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4.pem60
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_revoked.pem60
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_revoked_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/ca.pem60
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/ca.settings.json1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/ca_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/crlnumber1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/crlnumber.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt2
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.attr1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.attr.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.old1
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4.pem60
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_revoked.pem60
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_revoked_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4.pem31
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_revoked.pem31
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_revoked_key.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_unknown.pem30
-rw-r--r--cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_unknown_key.pem30
-rwxr-xr-xcpp/test/IceSSL/certs/makecerts.py159
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca3.p12bin0 -> 2972 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca3_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca3_pub.pem30
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca3_revoked.p12bin0 -> 3020 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca3_revoked_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca3_revoked_pub.pem30
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca4.p12bin0 -> 3020 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca4_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca4_pub.pem31
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca4_revoked.p12bin0 -> 3060 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca4_revoked_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca4_revoked_pub.pem31
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca4_unknown.p12bin0 -> 3028 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca4_unknown_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_ca4_unknown_pub.pem30
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai3.p12bin0 -> 4302 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai3_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai3_pub.pem58
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai3_revoked.p12bin0 -> 4342 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai3_revoked_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai3_revoked_pub.pem58
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai4.p12bin0 -> 4390 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai4_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai4_pub.pem60
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai4_revoked.p12bin0 -> 4430 bytes
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai4_revoked_priv.pem28
-rw-r--r--cpp/test/IceSSL/certs/s_rsa_cai4_revoked_pub.pem60
-rw-r--r--cpp/test/IceSSL/configuration/AllTests.cpp281
151 files changed, 3731 insertions, 5 deletions
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca3.p12 b/cpp/test/IceSSL/certs/c_rsa_ca3.p12
new file mode 100644
index 00000000000..a9deb82c8f8
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca3.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca3_priv.pem b/cpp/test/IceSSL/certs/c_rsa_ca3_priv.pem
new file mode 100644
index 00000000000..6ac07c87141
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca3_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCUQpl85aRm4MBh
+wkhF78xikPM8thIDBlKQ51//3Nziwsk9HeLmGFm14ozUZ2HF3YZpwosEn2PE7dAl
+13fi2FnYSyGLgGr507Tkei6fTos78MgJKL5DVEnuYz4OPXuntZwu2fj6zTCRPXwG
+IEMIO1e3s0j72jBkKg/PzKV4IoL+dU+5pq5EMfB7BrPnAgBwgVAPPBTw1lYUz8+f
+3w2xhaxHDBqJ8xepGaLfNq3PfwqH96CyGm/CcyGTDr8Jc98Y4QpyHiJUYhQBIfB8
+XTbmyyrEY08I9aZwDu5W7eUCdtXp4DiKI7eBKyiDz34Sb7m5DtNVg6dHlfX8gMkZ
+oEsznkWxAgMBAAECggEAdSsBBBy0RX2fbGLPHT465zaolDVLnMpVXCEO1DVm92p7
+AWrqE2/xDfZB1+bv9SByBojxtrCEd3B+DDnxi/vxXSdbFlVhtZhjICGTUOEQ1kke
+vWZOnwUw/E3AEB7054B2MuyegQ7CMDZIGstKTmofk5UDu84eajp3joCr0HptzcwS
+TFDOHfzHtjadfPR6lPND/dZdCO1NtlptqrWX98P23z6KwbMXHmqXlrjzkCBPf1Yh
+om60c8x4sXvSf7cXMvTOIEacGrKSkcnmEk449OFqxNKh1J3nRNIHcJBahroyWQK6
+F5bWWG9aUdj8AHh9Ene01fRykV0EdpEaEF5JjXQFcQKBgQDC5UCmmnDvYR844569
+QLoZQzN8ul8ioHH9xoLWN0PdrvandykiF5s3Za6u+zHTXu37/spz9+EZdxFzVifq
+MyvUy1k6+ePbvFUbaoOJYXIam3NITqKsTq2sRp6BTPdOOBW2DFgeMKIGCpycN3kw
+qA22YZK+HCTCWr4f7gThtRLptQKBgQDCvkoDJDnYoUUQKbWFo8uUK4ffAF2TGTiv
+SeVBkaL5Mxdm4iShSDG5HSsUhIk9+6j7p88YzsWrzv+iOwHH+jIO49VOjTyoZfQs
+IBvTTD9T9Bo/vcK6dEsKAozuZvgVW5MBziUh2hL/x32O38egQg6srMxyD2ds/+Cj
+9BLRyul5jQKBgHkzgIUbPmhfib8jLrCa9CCJvhcu/8LU7I7ZSLxXGgleqV1zqUze
+SVSmE4AWDuJYAr/Xr6d227Guble/mIr4z6VB4Hfgt2cLNBIcpzhkNUV+rq6k2F03
+gKHGOQRIDPPDxRy1iIcdz2TabJJpnSA5Im3tOAiqD+Id9GZ+6uJCbUSRAoGBAI/d
+gdHGTlGh+eJR3b7HXVqtueddXsOPq1ebcJi63TnZq50ezU60hb8qNCwpKTY4FwMq
+Wg0Km+8rsaAIlW1FgPuNBoTMRBZnkzWR1tyHBHWh7E5Qgm26AcF4VuK8AOPOTdDU
+mIvkjYqVtkT5PoE+q5aW5UYR6ScV9L9KTSjdDRP1AoGAUqxt3cef6SN6wMmmisFo
+C0FL3ZQvdS5wo3bFHYDkCivvz0mftxLh1jO8oLBAP6xWvVrhN57CTGxMRCcjqxlM
+y67SXdG6ka/x9HxqEM2e1Ht0rC27b8pyzx4Nhj4nR5brxtTXvbTVYm0HY84oZXC/
+NYd5c1hpJc/nTXHZApN7eYA=
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca3_pub.pem b/cpp/test/IceSSL/certs/c_rsa_ca3_pub.pem
new file mode 100644
index 00000000000..e9e35f714ce
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca3_pub.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFFTCCA/2gAwIBAgIIGqm9W38JQLQwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMloXDTIzMTIyMDE2MzIzMlowgYUxDzANBgNVBAMMBkNsaWVudDEMMAoG
+A1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRl
+cjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEW
+DmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+lEKZfOWkZuDAYcJIRe/MYpDzPLYSAwZSkOdf/9zc4sLJPR3i5hhZteKM1Gdhxd2G
+acKLBJ9jxO3QJdd34thZ2Eshi4Bq+dO05Houn06LO/DICSi+Q1RJ7mM+Dj17p7Wc
+Ltn4+s0wkT18BiBDCDtXt7NI+9owZCoPz8yleCKC/nVPuaauRDHwewaz5wIAcIFQ
+DzwU8NZWFM/Pn98NsYWsRwwaifMXqRmi3zatz38Kh/egshpvwnMhkw6/CXPfGOEK
+ch4iVGIUASHwfF025ssqxGNPCPWmcA7uVu3lAnbV6eA4iiO3gSsog89+Em+5uQ7T
+VYOnR5X1/IDJGaBLM55FsQIDAQABo4IBfDCCAXgwHQYDVR0OBBYEFA+zXPc/Qeeh
+eXZOBNalAWvLz0S/MIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQrCd4Qj0N
+oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNVBAsMA0lj
+ZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNV
+BAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHpl
+cm9jLmNvbYIJAOGYOElEzDTWMAsGA1UdDwQEAwIF4DAzBgNVHR8ELDAqMCigJqAk
+hiJodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhMy5jcmwucGVtMBcGA1UdEQQQMA6H
+BH8AAAGCBmNsaWVudDAhBgNVHRIEGjAYhwR/AAABgRBpc3N1ZXJAemVyb2MuY29t
+MBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQCykMSwWywR
+Nucy4MlupFXnhRtBlBoz2838L6AdAQyK/mgww2uxPEOULc4xvNz6kWbg1zaN2rfP
+GTUDmQXmWKbZH19Nl+MB66JRoHLXi0y5+c8xP9kCWuhxqPmtrTOq61jJOUVN4HzV
+MWKyfHjm8PI36GWXlfJcnhGeVVt878hl1ZUfVZseU/L3bwQFgyUF8FUUPw9LGf/i
+MxJ80mVFKwMmeNpb6NtPaHOIH77jAvlYHt/KNU3i005zMXRQSt+N9hVlsceBCSEX
+ZTlQqJX6hvZHFjI5EvVX7QVlAEnS+S4JMIbbXtMGipWuNtp+w8M/BkNH5abghO/x
+P2bkRL3mU/Ba
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca3_revoked.p12 b/cpp/test/IceSSL/certs/c_rsa_ca3_revoked.p12
new file mode 100644
index 00000000000..a97b9286d62
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca3_revoked.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca3_revoked_priv.pem b/cpp/test/IceSSL/certs/c_rsa_ca3_revoked_priv.pem
new file mode 100644
index 00000000000..c634d852c87
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca3_revoked_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDWsate12k+zvxC
+pDtPnql+P/PDjS7cPiSo+dEfqFBTpc/s6RucW5Tb4ibbkSt8hnUyrNJ4lKnxCxBv
+AUJFB/LXTjGt78v7hPGXhdNAOvSG4fgN3nXf9US4VNKsAQWBL/VC6dHuRG+J2B9P
+CRwYLJl9SZ1xrDLOfKrnMTP7GebZjwOGOW2+vwUIUB5m9gTeEyMwZYoPo6r+8i+l
+8INo7YX/lvX6tWHsQuO0xnQL/Vss2vcP4+wOVW2xAOYR/U06qI6HPau/az72WRk5
+6MwEkQ4Fqlv6Ttrk9S60VQg2hHibidoWlriMunvxjNHI9vFIXY8G4HHF0qanD7V0
+fQlBSsfHAgMBAAECggEAIRVh1gyVwEL/JnnOVfeaIMVUF/dCmFfPKGbOrfUu46Ty
+hIxrX83RA4029bDKJbdGiheNm101TtqonqJwBtkxt7Hp/+aq5UhYPkQ2CHjNQ5fA
+tMpqGafe/hS8HhtOMNkmDziey/upwHEYagJ6XNNKl77nTyP89ErLvzKa0v/rzexu
+ak1qWH9AB0jkCnUShqnkWpSHr1oQqVHNLaLTr0EPMZ7Ntlh91ld+OVtSf7N5gm2f
+2AAozHrGfoaya57fkzyx0R4HWikpbVcSmoAa9U8E64wISyvNXgzCCl18sovDLvJs
+EzrZYL2eOKMTsCfgBSQVV4WDtoOyB8qXFrL/4thUeQKBgQD8Bw/qtjk7imk1o0A3
+NDia92HEZ3CPXSQKqsKkzsURchKkLQ/DqGPFzihHB8O8ir3Yvek4oegxLKsHlgxa
+fcALBZANiQh3vehlVY5F1KbGUA03jcwWIEohVJsq6q2QkA3H7RCZaGbhYdawS3Al
+nVHWKfUuFzATQrqIVhPZp0OJOwKBgQDaE/cgenoP/9FhMGDvaOYXQWIDXA601Pkm
+L9Q6KS8PXhbApqEtcNUW7wUYvJbfmvZAX530LJVQW4tBadWkbpKntbLG/odkhh9V
+bUvpV5ZEgEfYxvQqplj4QUs22oSA6C71Zl0Q7nW/+FhBTChdraD3Dd8kP6WHHFNh
+Jy3uLgKy5QKBgQCFPNqOVE3Hi3H5mFe/l40BaB04rxLTyALg3MvQQzvt8CeoweXe
+o2wzy7yBaLpzN8oMBsKAXSAatymn9gyL3oUjjopMjZB7dVuiDuwLQNP2baW/I+is
+Hd/y5P6vXqfpkC6o7kxjPc1+A7JzOz6LtDLqjP4AouOYmyNwJkmSPJo4twKBgQC5
+jfFhRjUj9eRfEL36F0RoFy7hcuvke64/CsVGc5JiPgmYBG/x7Say689nW9f4DK9o
+2LLadzDY/fuAPiAVWCwa3SRv41SqeOCiXGwR8H+ga5I2ZhqNS5s6KLxpwQardGO4
+VE/tvyibniDh9n4GL11duQTbn/gk/ToI2UBgf++17QKBgQDdFWCJWaZwUyfhmwLO
+M+QSOHi1PsgLy36ani63HgOhZ+c+sXy08U8tmc+DYSfGd3r47OfhYnQmvsa8eb4A
+SaT2rDepP3kNavvwBvOC7jZQihHBr5LHHT17ZGMfCZYlWM6+3odGZFZVJoqtnh5r
+1uL0AsIAvWiGOYkVBRqVBBemKQ==
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca3_revoked_pub.pem b/cpp/test/IceSSL/certs/c_rsa_ca3_revoked_pub.pem
new file mode 100644
index 00000000000..de6b964d21a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca3_revoked_pub.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFIjCCBAqgAwIBAgIJAKAoXFyhnxKnMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGRMRswGQYDVQQDDBJDbGllbnQgY2Ez
+IHJldm9rZWQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAO
+BgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0w
+GwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBANaxq17XaT7O/EKkO0+eqX4/88ONLtw+JKj50R+oUFOlz+zp
+G5xblNviJtuRK3yGdTKs0niUqfELEG8BQkUH8tdOMa3vy/uE8ZeF00A69Ibh+A3e
+dd/1RLhU0qwBBYEv9ULp0e5Eb4nYH08JHBgsmX1JnXGsMs58qucxM/sZ5tmPA4Y5
+bb6/BQhQHmb2BN4TIzBlig+jqv7yL6Xwg2jthf+W9fq1YexC47TGdAv9Wyza9w/j
+7A5VbbEA5hH9TTqojoc9q79rPvZZGTnozASRDgWqW/pO2uT1LrRVCDaEeJuJ2haW
+uIy6e/GM0cj28UhdjwbgccXSpqcPtXR9CUFKx8cCAwEAAaOCAXwwggF4MB0GA1Ud
+DgQWBBR1ETpFd2k9ytvwkaxU36+D/riDQTCBwwYDVR0jBIG7MIG4gBSeyMtKvfMz
+iahOoc870KwneEI9DaGBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVzdCBDQSAz
+MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdK
+dXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3
+DQEJARYOaW5mb0B6ZXJvYy5jb22CCQDhmDhJRMw01jALBgNVHQ8EBAMCBeAwMwYD
+VR0fBCwwKjAooCagJIYiaHR0cDovLzEyNy4wLjAuMToyMDAwMS9jYTMuY3JsLnBl
+bTAXBgNVHREEEDAOhwR/AAABggZjbGllbnQwIQYDVR0SBBowGIcEfwAAAYEQaXNz
+dWVyQHplcm9jLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsF
+AAOCAQEASfYjRkHSx96/vPRNb521SLcF8NF7MjtNWLTMz7rSlhpKyXYTfe84tIn+
+AYquDTTxuYCN1I0wQRFvDyN2Al2R63craAjDTmmzG78s5JG6QCx1WRyRsE/XjHpD
+U9OwiC7hBp1EdarXPaRstutTG+DYULzvoQ69EaSJh9enjdfYihqNw6XpkYhQGvlr
+p59rBLbrx7dmmUbAKbWlzfj91MURJbGALXstCP126a09qZdWlR1RiB+KGv2iKr2x
+Az9/6AiUyYIIM5OttrmF/ebhbrE7/lGlTzJqtR3E4Tc25c+5MBeWtT/G83qDIzE9
+2OmR/GcVOL+mPvZ+pdza/4FsIxJing==
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca4.p12 b/cpp/test/IceSSL/certs/c_rsa_ca4.p12
new file mode 100644
index 00000000000..713084f84f7
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca4.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca4_priv.pem b/cpp/test/IceSSL/certs/c_rsa_ca4_priv.pem
new file mode 100644
index 00000000000..65286a9f8ca
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca4_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCv/YpTtjjzMEtx
+QGR3XStEngq7rWJcT4FdvSpJMFPhe1VWRycBYUnfReZ0NpULgOvWnufaXaFA9V3T
+eRtWQP39lXIr1yx0bLjK7NHOWDZ6cRkvI0nfMW7aejOcwC5UlE9BLiymhkKIu9iY
+onoNba2GTy+4Kpj9byopKroYrq2lF0/aLw+Vr+227Nd1+0ujKIjwWE+/ujzVCumQ
+YHhQWb8tQapNhS6ggXnrnvSBuQE56VAM7mmUYV2IAtiBhmaMm0SdwJ3jsoOAwosb
+/88YpdJThjTU1+zzFFk3NyNxAV1cu+TT3tbNWGvckMDWZjjoq+U2BwnJyH0xTW5S
+BCf94V4ZAgMBAAECggEAI8xsHdkcPoOdZP0XMpyWF5AaWNDNCD/37axz9I1LEru2
+wSUaDxLOJwed+Be+O6fO0UpjmSygh4khu8mPwPzZbYK/xaEwXsJa2JRRnSqeckud
+NtRzy13P0cs3wnPpOLUuZfDRjlITKKMlTO8H6sFboc1rxIeNtUeuiM8zKaAmnEUK
+JlB+tJDuXeqCBplXralqIwg1/dO/gL1ziuww439vUKsBHrOo8v30fEk9w/snLXnn
+2rzmTSHeJGmxj6KUjTpvR7FD6aadm0/XSIkit2TNnrSeD8pNJEWN1W6Y7YP0NPtI
+YHGWrdfglvAAl/gWv/+Hi+m4cHNUV70NKo6ZiFyLAQKBgQDiU1lWiav7lqalvRFy
+LWHV1grBftUntxomcXBQ5RLi6Eg6hh2NIELOaPLCRk1Bu9vvdEu5prsdm2v0dwRO
+NOz4SEqrdgYRNpVn2H29HyI9woEr1K7wRo97q/enPeeAI0OooiZKajFYJ/SoLxHa
+aa/8EYHxxeduBC6ljZI1mCHXOQKBgQDHEK7zbInaJN2/jmjMK9dpELHQ42/lscm8
+S+X16zQQXb2VdijcnZbhi0fvOjGFN6HGSO1UdkwalmOAyrFU7srYBEIpwUF1ptfY
+HRzOWXaUU4akotMmOA50mQwDY5xp95e9sA96yesYuJykm7e2qDBm+Um6vbvT86f+
+fJczHQ/d4QKBgE4aJUJP0CHKI0gert6P+qsoah3L/xLthQCvNOs1ogbb0dEgZyJE
+d8lzPhL837xHb+Z6Y4d1mizlbaO3Tq0OZphnmh0BZaabB4QGmZ2iGNbnQFw30Qbp
+0qoC9juoiTMW+EpBaqVTcCPT5gID/E07G5gJEqa0fODiYJaQ/FuyXDtBAoGAK/bJ
+TMWp5F3EA6xmBMGh/3hKbUHt0qLjVQzGKvvZMcwiNMI14BOF4SYrqvAFQ9C3j91H
+XSILSMvyCd26MHHUpsS6ABLIbD1+6iHz3Lbxc2zHDdFQJN64gpPSjWUQhG7EOoaJ
+xKqXm4waPFiPyG140yU3XWDN/M+RSKknk4hVmsECgYBTHkUcfo5uFmYi1yokQdYO
+DCbFJVTaJICFayGUeBhoKjeQa9GN6Lng1SuMvRjLjSobiMEtCU2AsTRl7bQcjnGI
+1MJwJ4ZGlU3FMy9lfxSCwdR7jDSA+pUZiiuPIYnEV0JTp1F8Use8yUd3cE2hAmlF
+sw+//1EuXFf33aXIIgU2hQ==
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca4_pub.pem b/cpp/test/IceSSL/certs/c_rsa_ca4_pub.pem
new file mode 100644
index 00000000000..bb7f1888fcb
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca4_pub.pem
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFSTCCBDGgAwIBAgIJAOexJKE6WRWuMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGJMRMwEQYDVQQDDApDbGllbnQgY2E0
+MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdK
+dXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3
+DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQCv/YpTtjjzMEtxQGR3XStEngq7rWJcT4FdvSpJMFPhe1VWRycBYUnfReZ0
+NpULgOvWnufaXaFA9V3TeRtWQP39lXIr1yx0bLjK7NHOWDZ6cRkvI0nfMW7aejOc
+wC5UlE9BLiymhkKIu9iYonoNba2GTy+4Kpj9byopKroYrq2lF0/aLw+Vr+227Nd1
++0ujKIjwWE+/ujzVCumQYHhQWb8tQapNhS6ggXnrnvSBuQE56VAM7mmUYV2IAtiB
+hmaMm0SdwJ3jsoOAwosb/88YpdJThjTU1+zzFFk3NyNxAV1cu+TT3tbNWGvckMDW
+Zjjoq+U2BwnJyH0xTW5SBCf94V4ZAgMBAAGjggGrMIIBpzAdBgNVHQ4EFgQULgKR
+88du2yB9DwE9V1BlnLR0eR4wgcMGA1UdIwSBuzCBuIAU/it+ysGyPKGv41bKHJBf
+IpNzzLuhgZSkgZEwgY4xGDAWBgNVBAMMD1plcm9DIFRlc3QgQ0EgNDEMMAoGA1UE
+CwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQ
+MA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmlu
+Zm9AemVyb2MuY29tggkAgSvhMIVd41wwCwYDVR0PBAQDAgXgMGIGCCsGAQUFBwEB
+BFYwVDAiBggrBgEFBQcwAYYWaHR0cDovLzEyNy4wLjAuMToyMDAwMjAuBggrBgEF
+BQcwAoYiaHR0cDovLzEyNy4wLjAuMToyMDAwMS9jYWNlcnQ0LmRlcjAXBgNVHREE
+EDAOhwR/AAABggZjbGllbnQwIQYDVR0SBBowGIcEfwAAAYEQaXNzdWVyQHplcm9j
+LmNvbTATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEAEjSd
+E3TMx6c7dHBQ6+2hSeE4WvwOjClomYCSk/RPZi/Uw6uFgJO6mh/WgdaXm4HHHU4k
+GZ6hQxSephZgZJZ2Wram5Gpne6DaXG2XvQLwYtL0RgWCx01lFnaUSExNEOqzjGAN
+ZQ6WE0FUF3eqkQJKLXHuvJBJ19iABADE+jNGlO2b9XlyaJUYLffHeW8ESVZd0Npb
+FNsWpquHWW2nZr9OFYuoka8rA8aWMmN974d4hOD8JKU3nSTMJ767oz29n2DIO+3y
+YWOh49JsZdSMgzmy/xmLVY2SGvtNIwvzTTsJO6KZNkuFcvwYWiP05IWM4S365MP5
+RsBWAQukVHG4KkN+TA==
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca4_revoked.p12 b/cpp/test/IceSSL/certs/c_rsa_ca4_revoked.p12
new file mode 100644
index 00000000000..8d08b89ff6d
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca4_revoked.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca4_revoked_priv.pem b/cpp/test/IceSSL/certs/c_rsa_ca4_revoked_priv.pem
new file mode 100644
index 00000000000..2a6eaa18726
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca4_revoked_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC+vvoERUzTjMAt
+Sp69A4BM9rXKmop93ThpuimG0tCkm5ataoR1tGn8EiITqGRosD1UGB6FPuF5QZ8W
+z7m6CVhkYMDCrDEL3C+I1DTU7KfuocQdur6zQn5nvkm9SLb18lWSVsMkGKe1fUPR
+CSrEw5VwOAl4DFFtVB9csvYjSz8MpJfUKiIyFJGKikn1mlslkRRfq6MCFDomzq+P
+ll3b2Rh4q+1qMPl9r5aMnMy5EEbhIJm2Mi0cUdbsB7Zpb2liDoiAYdm1gYq6bmsL
+AsTS9/hC2P4Z5BnRB+OzZ2sx9yo121+/VYYYIeVTkEiryn9lgO1VpPOYwS8Dc42Y
+PpN1r62XAgMBAAECggEAHudeJnb73YJ+WFgwo7r/fHi0N2EWcxH2Y9rPg5KAT0sN
+/Ia3c0KJsVdWwgyUSAnVxdwqhbgMW9Lv7Yg2NRfyhEDQujmfsKY55VdMP/sfsh/v
+YEmzP+PUCwbfd5ViXzKl/pGkCCMeeN8Ur7dmgH6XpZjOn+6O+sGYWzJ7gnhcfLWe
+ZNHblus7wU3XvBaP4MaPtrREREbO5rvSyYeszfC+MuGIn+dQ+Bxcen20j6oDPxwV
+UEfr3v5+KTMzzrz2tZHNLOhO7NTGcel6/SgQxy6MVJLbDYCPDyLYv6p6/AKJrkZS
+HJ6kpSCrbr3RO+J/quN71TMN64wBPda/fJWZHM7o4QKBgQDlKp5dlJCivqhZPLh+
+frvz0shxdZ3hctO9xoqMeWBSFrrijXQ1IwzP5ykt8MSIPWlGHr4/K9Um1ZFP+oWY
+VKUhBxzFndCC0etMmKh7wDAWATyYIxo2bCHFHNmvIcdNKccMC5SxE2HINz2cQSNQ
+MJC2vzWNZOvOSlmOYR6m9j6u/wKBgQDVFK9L2orDh7WNiQp2x17U6S5YWkmeP1GP
+JI58bibk3d+ZRP2NvA5v4MIAJ180H+YW+GS8ikB7PvuPOpN3yMhIf9cXutO38WLv
+OVTKOYSIQC8Xsb831bARULOSV1Kvjl6sQndcz8XvUNpEzIvOZVLORXPO+FTy7gwg
+NsLRfB0ZaQKBgQChvuLnyeQL+eV4lpLhNTITdcJj0lAMv68TUv6XB1QknEZrgMt0
+dbilRNKbykPspOuYwjok/BsFvddCS9/fFF84YHy+PhTdQKyC83x3W76UyWqrNptZ
+rhhnt2UtZvn0THhg2Auqr7NkTRj/IDp8bsq1MV/q3EBS6ccr5wBrd4HmoQKBgQC7
+CNsOJBilpRuxztbGiB4vmTa7CxWPuFio4xfHFRFC15aLfMlrfeTWQ11GsUiaAl3/
+T61s6ZXMGO7LPElxXWagbMaq560rytBi19obX/17c4tiqv0Dz6gqqsHU9J15x+hG
+IFmRuDcv57KPrVQSqVHUCZar18MJMfam2CqNovoP8QKBgQCkcM4/CxnqLL73Ejc+
+0iYTVjzQSYsRTj8ah1Ulx13+Z/AMs6Rp9VOCeO5GYaynw+wz+NI4ohr39zIy6Qxy
+ize3zVBBgp5K8MGHMxBS1JAW9rXBf5MPGIeQ1aCUFVwHYZ1Wj8HHOZmPYTITI+/l
+yGOqX8Jz0yovInddhzdyt2R8AQ==
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca4_revoked_pub.pem b/cpp/test/IceSSL/certs/c_rsa_ca4_revoked_pub.pem
new file mode 100644
index 00000000000..1273ab0ae52
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca4_revoked_pub.pem
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFUDCCBDigAwIBAgIIBrDobNhhmFkwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgNDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzM1oXDTIzMTIyMDE2MzIzM1owgZExGzAZBgNVBAMMEkNsaWVudCBjYTQg
+cmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4G
+A1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAb
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAvr76BEVM04zALUqevQOATPa1ypqKfd04abophtLQpJuWrWqE
+dbRp/BIiE6hkaLA9VBgehT7heUGfFs+5uglYZGDAwqwxC9wviNQ01Oyn7qHEHbq+
+s0J+Z75JvUi29fJVklbDJBintX1D0QkqxMOVcDgJeAxRbVQfXLL2I0s/DKSX1Coi
+MhSRiopJ9ZpbJZEUX6ujAhQ6Js6vj5Zd29kYeKvtajD5fa+WjJzMuRBG4SCZtjIt
+HFHW7Ae2aW9pYg6IgGHZtYGKum5rCwLE0vf4Qtj+GeQZ0Qfjs2drMfcqNdtfv1WG
+GCHlU5BIq8p/ZYDtVaTzmMEvA3ONmD6Tda+tlwIDAQABo4IBqzCCAacwHQYDVR0O
+BBYEFJ5k5mhHw0O8jz6m1K8m55EUoRBuMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyh
+r+NWyhyQXyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQx
+DDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1
+cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcN
+AQkBFg5pbmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMAsGA1UdDwQEAwIF4DBiBggr
+BgEFBQcBAQRWMFQwIgYIKwYBBQUHMAGGFmh0dHA6Ly8xMjcuMC4wLjE6MjAwMDIw
+LgYIKwYBBQUHMAKGImh0dHA6Ly8xMjcuMC4wLjE6MjAwMDEvY2FjZXJ0NC5kZXIw
+FwYDVR0RBBAwDocEfwAAAYIGY2xpZW50MCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQAD
+ggEBAJl/yqTMrLHBXRRV9Ml6aL0fs4hA75urptFZPUby/viSJCGMEge858FuLs+4
+Wbw1KL1tLojr1p1nAfnUof5rBvIf/o21948UMkghuI2TGXaHS7aqEq8cf+VDm4Ds
+uIVeU7J9nBy6x0VtN5Bzaq825FTGUKGlewt5yxOS9MEIU0hkXGpkW5JxfH5UJR/6
+vCuLmeYkBvcrGgKsr8tM5ebeW+HZWjleZYjVgOtKTdrYU/Cl9LLGdA0kF7IpGdQT
+/zdoHK8ChetPdjLXFWkEhSMIdSm0dN/JxjdEZhowHevNUgdgeTv3cpfTffdpJ4pn
+DBcGlsbhFRqHDgz7POzM5waQsq0=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca4_unknown.p12 b/cpp/test/IceSSL/certs/c_rsa_ca4_unknown.p12
new file mode 100644
index 00000000000..3af24e48470
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca4_unknown.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca4_unknown_priv.pem b/cpp/test/IceSSL/certs/c_rsa_ca4_unknown_priv.pem
new file mode 100644
index 00000000000..8a1c31cbd1e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca4_unknown_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDUJr9NpNuMmJ4d
+vuWce6Cyp460JXg9dE/iC9HPU0/+HVwMLAuqCrEGJcGSuAiFW2QY0mremFIf3ziG
+G2vc6eNVlwwRQ3AD3802ds9WNa5nKXx/5dSvKNIahc0OAIU2gyJDuANVy92r0tYL
+NteRYF0q5vhgbUUkUDCh0xxzmtQUJMDEMEXQT/WN1iG2jjOD1uxyKsM1co924bgb
+0W01t4rrTz3C+gx17yRWFbmMaPy+wzm+Okt+Pzs75t2BZy5RvFkVR0WZvLn/+du/
+J8XQgAmBuptWuLYZswend8IpiGHBH5RiyMl3ll3DTvcEyLVsF+wYRPDxRCJDNEBL
+jpSs+W51AgMBAAECggEBAKZl2ciBlL5a+jGkiB3LjchyyegcN4okD3/h+2ddFjHf
+P1JAvclaZ2zF8mUsuWo3u3QInlAHMurSv1fYbCqyvF9mgM2Nkm9He4LLf2ZD5o39
+qSv7zWyxXNH2vlXMLLAL/LUWwG7r3uslDENxeXUKGylKTef77K5Fw0858WfvOYat
+uxt1HIfP/UmE7VvuVgT/JOULP4ogCwMnrDFRbi3cNVToKoh2Xnetp1IkXmEFBYAJ
+6DqXefokg44gtaGeTm81ckdwcuD6076NeYZh0Lz/vLtyV50hBAxeupaDAfjxKW96
+4pPZkBMwsbYeVYhb+Cy9EMyQIE6JH1GExifRfJhoe2ECgYEA8+IMEXTEwnyqSr0M
+9bzN+L5dNMY962Ujzb9lFWHwyb0h0RB/s3LbMf51O5EYle4zWElq5fm2ulpow/+t
+Cac4q33rXC0rHKW/yiH+PsZQajlMgwqTRfsd8D1EcLZWVMZU9C+H4Htd8BsnUCWV
+6xmYs7N0e6W5vT8BWVtHMmx4iDkCgYEA3rEa0Rn8b12OrGoBXROj8q4zD57N0qdT
+Sp6SpMuueZQlSiaoY/flimfIz0W/ODqmPZ5OnUN6i5hbMbld6J3YXq9Gi4Eb3OdQ
++4mDb3gbmli5nsMPxeHrRR4QeVEx1GaY89Mxl1mi3ehhSPsM6vWVigMWTpC5Yk8W
+If8YzSniAB0CgYATnmOKI/KQEqdAS+T2/7EyCV5GGIxymzg+HN9s0OwlzmkiAEnF
+jb/ETcvwdsObjAXlXEKVLXldlFhJLBAnbqRIZ2C/kYKeU1cSU5m4QwvE/8b/46Hl
+R0YpRUR0LLbVKv86hXhQvpvX7NdEw0FEIFMAYbdFGxfN+XuKTKV1kPRBQQKBgQDH
+znxTNU+r1HPY+tvyWVb2vZoO39uosH0pLJJCzoXjjCrRF1JrL9eCkZA5eUkS+HyE
+OPAsZokjizX3rWw29LlYa0eOj+8iC2I77qxBbbDGkekqK7aRRB1GTK1XTKS7ALsn
+ukx6kfBxzrjLNIXooyTjSdXP9EaBkJg5NJtaKcQfeQKBgQDF6NyeB6U2Yhxi+uo6
+Jso7suuqxiJIPZt/XkjCR4y+YowK1GssT3BznuEUBAAN1OiBmFDXa9mh9xyHlttB
+JUvRjljSMdk0y+vXZikL5viTQC5KzHR2gb3OdBCRjZMeWWfP3Fcg0uK3H7rXh1vp
+casCG8NCs+oBo+FLnHyE1Ayb3A==
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_ca4_unknown_pub.pem b/cpp/test/IceSSL/certs/c_rsa_ca4_unknown_pub.pem
new file mode 100644
index 00000000000..062775b7cbc
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_ca4_unknown_pub.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFLTCCBBWgAwIBAgIJAMDCPUtC26l2MA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTcxMTI0NTFaFw0yMzEyMjExMTI0NTFaMIGRMRswGQYDVQQDDBJDbGllbnQgY2E0
+IHVua25vd24xDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAO
+BgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0w
+GwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBANQmv02k24yYnh2+5Zx7oLKnjrQleD10T+IL0c9TT/4dXAws
+C6oKsQYlwZK4CIVbZBjSat6YUh/fOIYba9zp41WXDBFDcAPfzTZ2z1Y1rmcpfH/l
+1K8o0hqFzQ4AhTaDIkO4A1XL3avS1gs215FgXSrm+GBtRSRQMKHTHHOa1BQkwMQw
+RdBP9Y3WIbaOM4PW7HIqwzVyj3bhuBvRbTW3iutPPcL6DHXvJFYVuYxo/L7DOb46
+S34/Ozvm3YFnLlG8WRVHRZm8uf/5278nxdCACYG6m1a4thmzB6d3wimIYcEflGLI
+yXeWXcNO9wTItWwX7BhE8PFEIkM0QEuOlKz5bnUCAwEAAaOCAYcwggGDMB0GA1Ud
+DgQWBBRJSsprWBlHVvTZmKaSMFEARWy6jTCBwwYDVR0jBIG7MIG4gBT+K37KwbI8
+oa/jVsockF8ik3PMu6GBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVzdCBDQSA0
+MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdK
+dXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3
+DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCBK+EwhV3jXDALBgNVHQ8EBAMCBeAwPgYI
+KwYBBQUHAQEEMjAwMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4xOjIwMDAx
+L2NhY2VydDQuZGVyMBcGA1UdEQQQMA6HBH8AAAGCBmNsaWVudDAhBgNVHRIEGjAY
+hwR/AAABgRBpc3N1ZXJAemVyb2MuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0G
+CSqGSIb3DQEBCwUAA4IBAQAPnJgWnRJKOCBBui5I58ks7vwszG+iaWEF8a5+Zzk0
+PMulqxYX/QC01omIvGeUXWFM+BJ6Sw9MBGDePtlqzt0EP0knqH7FWhta53nmiLlz
+YwoGtfMAfID341M/v4fq2eaDks3Va3xfOYyLgURSBqioD+9ahrNDpofWbXM9ikT8
+ZBHDSjszWqIjLAmCExLqu/bEaMYCPLMO6R1jM5M1Ixiocsb5ZPTq7RyjVANTkFly
+Cw2Do08VK/CZfhRdntyU2PUxXaUDUZUsXldOQ+yxDtXPq/79+ImdSrJ4DZ6xIUPa
+TlgFu3vGj3PmwsHzUfclKizAZtZkZPEL+lMEpiF2YZaV
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai3.p12 b/cpp/test/IceSSL/certs/c_rsa_cai3.p12
new file mode 100644
index 00000000000..b318744849a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai3.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai3_priv.pem b/cpp/test/IceSSL/certs/c_rsa_cai3_priv.pem
new file mode 100644
index 00000000000..b4e7d56aba7
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai3_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDe2l5XfO5aGv75
+DsO7PSntVtBexfygd2GJ+Pw27k3JTSjX5l2C9J8pYlkF31OrWBtjQT+Fl8l22/ss
+AlvUy7pz5RnlkzAiCEa2Mnl9XOb3MeAaA7HmNY538hgOly/XnR+hRsYJrSAgp3fE
+79Sg9xl1IeMp+PLA95CFInVSep0R/I1+y/qu/ax2JjUV2PQ5ZTeBxo+k8gULKsnG
+cZ8Kdp4FKDaCA23tOMh0n9fPsL1MVCwYCp0QM0ZLxHud0ZAjlM65zD8YYkQkuNkd
+qCD913wkuE2Td/lUNjCWVDUk2ENvkia0C0sncwdpMFrKUtJvNlnvZae62TvwqbJF
+TSwfndGhAgMBAAECggEBAIBgOQKbFE9Rx9m/WJ+u/00aupQt53ak7splZR1br/Gr
+gkDFEs9SjbFwVyob2X4WFkjaGHaj1smitZFHlpEB/1mt+3oVjR+9tsZUU0oVT3PN
+BnTV9hBQf8625obZLxU9DTCBral7UsuczVDke49yaPbh25OdNnJU6qrXC9DEk2D9
+EWP6Ndy6tje9DX1DEll7ugATKa/musbq3Od7uVGyp28Pi/cAdOv8m9SgVzH4VQY7
+5O8bXGPNjO2bqdFGDr08UnZyBwbdB5ElE3VnkUQWV8h2Gdpj3ly8g536YKWfzkTT
+QLn0x2VstQYrp7Sla0MuQUl31XWgaPmRawyTdwnGqzECgYEA84pQta5uvb0yR7Oo
+bAb4h6eMtkFYw68RcH02x4ITOyteB8fPg22PTfUziIJKtF2OHsirq6btI+evegkT
+aZU19XlbHLvZ6nw1ukVd4K6wcrrtnTZpi5SeIe8oSVlATSg8hip6X09JDTQlIgXS
+vPjpZ5zIlI/KLIZ6mpMCcmWXHU0CgYEA6kEbzVU8Cv0zcU3ewbxvoiLQiU5Us9E4
+srsVgDESDg6q4bL96BFvQj+ZlJS0AH5QCuOlr1m0k7SuzSGMpJ5B/biYspsbRrfM
+fiJFCfZklon+wCxbkfKYFrgOW9tSf8AuMvhJzPS3vHe/+YiR2bfZI43WWNUM8MPi
+1IZT5Vp8K6UCgYBLq59WRCOeismzo6viHOxd4f6Dppw4+Q13IUDDDrSA/wGRc1ET
+6hfLxjND6A/kKOl+wSUuCYjHTjakuWsxtC323sUjkW6tP/jFrsXziPPEQjaQUZbL
+ytqzeobO+49SKf1cRpiNQqpVEu2yu5J2KvUCv6FHH8JWwVYY7zKkbtJcRQKBgDwu
+j/r3q95S4JV6YQE67R8lfJfZ9O7hkIRyhfqSIMZVxFcJyiuF1ySY/FbswTXjPaMe
+iyF6lWbhI4t11BEyy1doxmoUaTSI4dOB8GS31W3LdBRhEQF05tfnX2D//rjtYbEc
+krFCKbYUudBc4sOhdPqqZOgbjCCK4sqg3ArvbTk1AoGBAKv0kYPQf6adU7tKB4Dw
+VW7VEytk99ec2N5nxEzsEpObX5+4PUwZESNRP5pYqL6yF88dsmNtSwW/7O+8kySP
+13imIaCgP+R5C7duR4o86qKr1ads/taxwxTJGSslx+DAtLucbHMcgCBxY1ngfXGZ
+DckMnT5w8evtM+u7ZDgokKH4
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai3_pub.pem b/cpp/test/IceSSL/certs/c_rsa_cai3_pub.pem
new file mode 100644
index 00000000000..f890e690de0
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai3_pub.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFBTCCA+2gAwIBAgIJAMClO+U8oigEMA0GCSqGSIb3DQEBCwUAMIGbMSUwIwYD
+VQQDDBxaZXJvQyBUZXN0IEludGVybWVkaWF0ZSBDQSAzMQwwCgYDVQQLDANJY2Ux
+FDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQI
+DAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJv
+Yy5jb20wHhcNMjEwOTE2MTYzMjMyWhcNMjMxMjIwMTYzMjMyWjCBijEUMBIGA1UE
+AwwLQ2xpZW50IGNhaTMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIElu
+Yy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYT
+AlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAN7aXld87loa/vkOw7s9Ke1W0F7F/KB3YYn4/Dbu
+TclNKNfmXYL0nyliWQXfU6tYG2NBP4WXyXbb+ywCW9TLunPlGeWTMCIIRrYyeX1c
+5vcx4BoDseY1jnfyGA6XL9edH6FGxgmtICCnd8Tv1KD3GXUh4yn48sD3kIUidVJ6
+nRH8jX7L+q79rHYmNRXY9DllN4HGj6TyBQsqycZxnwp2ngUoNoIDbe04yHSf18+w
+vUxULBgKnRAzRkvEe53RkCOUzrnMPxhiRCS42R2oIP3XfCS4TZN3+VQ2MJZUNSTY
+Q2+SJrQLSydzB2kwWspS0m82We9lp7rZO/CpskVNLB+d0aECAwEAAaOCAVkwggFV
+MB0GA1UdDgQWBBQ2IWakQdHX/QY/3/kxUmCt5BhBdTCBwgYDVR0jBIG6MIG3gBTZ
+qY5XtJJu2J/VKCugKJ9CAZ7yQKGBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVz
+dCBDQSAzMQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYD
+VQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsG
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCC4LfJBP4UYxMAsGA1UdDwQEAwIF
+4DA0BgNVHR8ELTArMCmgJ6AlhiNodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhaTMu
+Y3JsLnBlbTAXBgNVHREEEDAOhwR/AAABggZjbGllbnQwEwYDVR0lBAwwCgYIKwYB
+BQUHAwIwDQYJKoZIhvcNAQELBQADggEBAH04j5GMR6iUMjDyDXcxQ5/PrgEumjWR
+1yccas3CJgtCjV7P1e+ifNjXyhrKZyY88ivWcoveeus/TWZv8i8VuXmL2vuaImZU
+ScfTGRMAuweiSyFaFOWpk97BURF7sCQTlTtO7dZQII6bxACIZKvtFP/UBES7Ok0B
+hfSlMpZs4jxTutlMexHJD/MH3edwTa8DOG0oRpz658PgQJS6oSU2So/LRYbzOE11
+sSRU0Omkj66SIUPV0leh3euQ0jWreSLmjqiQnXSzALVIJ00i1DNuacZFmCTtQVLe
+ueZTaOC1wOYo6u/mII5ap7Y6polJWDmsnzfa2K8YVoovXqMihJeVyrA=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai3_revoked.p12 b/cpp/test/IceSSL/certs/c_rsa_cai3_revoked.p12
new file mode 100644
index 00000000000..c2d8aa0f0cb
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai3_revoked.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai3_revoked_priv.pem b/cpp/test/IceSSL/certs/c_rsa_cai3_revoked_priv.pem
new file mode 100644
index 00000000000..ff8683e93b9
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai3_revoked_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC/VakNnxmJUtpu
+zBS0QDQrr4mRXajRTPfWzPU2jy+HoxxlGNc0RUO4xbFSSU4mobVMbmaS4HLC1/Ca
+6dcTYtl0HQqOCv2eOnN03r8bIdciXpBPnjK1vnKz0V8ljOK16UQs/Mb5kMKGIlFW
+BUlF26/YNLUPb8++111xHbNagxC1EnOb7m9ZVy8aO/IoljSGHRewsZpmxLsoVKIs
+eqeUuiPDRPkKtkclcBFoEA0AYuNK9SVPTaKy9Ke/IoHr0Y+iJotMEfkCQEw6mCAL
+HIaEhs/iOTQOvKrMNwhnYSqBERBnrl7vXEuW0eYuhYrU7sWqSg/XMZ8sropHsfb+
+xus6DziBAgMBAAECggEBALtNg/zNrxX7gdHM/selwmyxnp4rbcPW8RfZ9ILAkOrb
+BkUBmEqXM8CB5yCCmnq++tgji05lYnLTKbq9B8r2jaFZfKeoorZuye+yzqok6pG+
+uM74MvQvx+G4KMh9rsId5JuVqMNOrt7YYX8wFZbJhM7Gaij+cASGl/bP+G+2tnhK
+Mg8S64bVnpbvnaFW97vPd2BY5raZ0x9XhD91FkRRAU5rE0XdHBy4Qh7FM9A4tAah
+Jo5R1moHJF/pOqr5z7Wu2h23cXeEw5DU1uC64vYG/DGNZOCreGPNjJYTWoQnVVeY
+G10YLpvmlSBTAK0xKfthGtiiwXv9qetVd8k3K4PVGTECgYEA5/noRsUmJjagulHX
+eekY6N3mHaLgPTKd7D7iJW5kzsV8TXJsieESG3CzFW/dWhrh5R9IQlALrxQ8qlew
+WF56KU6G8wzq+YtaSbn4cxCQoWOEaSX/g+u2gX8UaOZ8kVu3jmHqQt913S76/Wvo
+LP+901zpM5MoSTITM6gdLoX3+hsCgYEA0yZGFpmEmfD5ES1hJRARLbDgXkP6ams1
+cYHKB18T8umnyJ/WC6D0s7czxvD9CR5eoVhKDd44IPkd4x4goWxxmU8thsS9IznQ
+bM7PwTe/plAPwttELbH70yvImJX1vcMcpYhW9xhJVzIrVyhgQMxXUPsRCvXUsgVs
+DuM8j3EZgZMCgYAN0ZVEofnjzN1GPBnZ6UjSlmVe3pT9EEbYC+bs0+atapY9BtPw
+YrfxaoVAgalt9KwAOhzT1nDbvRjgDNk0amxciZEAaYSV2PdH7QwfzpzPAF6i5OCT
+uzbj/+33UcOZ5RzKHosV8LnUszfAYO0zwQhNzvsVV27O7Wy3ZwxV+SUMgQKBgCCd
+Wdgl0Gii4yX3F3lNGQowtwd4gparhq7IuHcZBZDQ7Jy9q6dSLloQI0xIbx1Ydo9/
+frjTqWHWePpa7flhMc7XfxXBD+IADSSxcT/MJ6s91KFpkwdn5ZkBu1NuXm34VFVx
+UNWMB9ATLMSitPNtXNNiZIiH3lm9IqrOCM2zT5hHAoGBAOHVs9BgXdsyC8wlkLGg
+RFASnBmkgNCMnNc9/3THmAkJBiKreilWHczm17oTQgDo5jvdRGhrncj/Rv/3cKux
+NCxvcB7kmNTG4zfbMt4M6HIyhG2Y5POxNxVA1OOcZdO9EGgyIAFH/Kz4fZlc0Z1s
+P6N7y6OgnKP8Gy7jF9z0x+io
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai3_revoked_pub.pem b/cpp/test/IceSSL/certs/c_rsa_cai3_revoked_pub.pem
new file mode 100644
index 00000000000..f3c521da6a7
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai3_revoked_pub.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFDDCCA/SgAwIBAgIIRKjFm3MTxW4wDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNV
+BAMMHFplcm9DIFRlc3QgSW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEU
+MBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgM
+B0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9j
+LmNvbTAeFw0yMTA5MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGSMRwwGgYDVQQD
+DBNDbGllbnQgY2FpMyByZXZva2VkMQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1pl
+cm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQsw
+CQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/VakNnxmJUtpuzBS0QDQrr4mRXajR
+TPfWzPU2jy+HoxxlGNc0RUO4xbFSSU4mobVMbmaS4HLC1/Ca6dcTYtl0HQqOCv2e
+OnN03r8bIdciXpBPnjK1vnKz0V8ljOK16UQs/Mb5kMKGIlFWBUlF26/YNLUPb8++
+111xHbNagxC1EnOb7m9ZVy8aO/IoljSGHRewsZpmxLsoVKIseqeUuiPDRPkKtkcl
+cBFoEA0AYuNK9SVPTaKy9Ke/IoHr0Y+iJotMEfkCQEw6mCALHIaEhs/iOTQOvKrM
+NwhnYSqBERBnrl7vXEuW0eYuhYrU7sWqSg/XMZ8sropHsfb+xus6DziBAgMBAAGj
+ggFZMIIBVTAdBgNVHQ4EFgQU39cc5usSDwzOwlFeY/8i7ShcoukwgcIGA1UdIwSB
+ujCBt4AU2amOV7SSbtif1SgroCifQgGe8kChgZSkgZEwgY4xGDAWBgNVBAMMD1pl
+cm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5j
+LjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMC
+VVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggguC3yQT+FGMTALBgNV
+HQ8EBAMCBeAwNAYDVR0fBC0wKzApoCegJYYjaHR0cDovLzEyNy4wLjAuMToyMDAw
+MS9jYWkzLmNybC5wZW0wFwYDVR0RBBAwDocEfwAAAYIGY2xpZW50MBMGA1UdJQQM
+MAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQButQ2CYqcI5ZB+r8tp6etL
+6lFwn9PPJd8DBI58xx1nDYnhmldY4+4tK+sM98M15mt7KRmds8yG7Yonw1rjMpYW
+OfObQsG3NWmEBYF2NZJ5nLMGfGqc1D4A3wvENkcBfGC71WRvnIylHh+bQbNdSpJD
+ig+oNCfrXUltVxcZa/0NqwNVAhJWzeyBYZofl9CJZusaFGnt2NXE1Ur0fnkEtz5m
+iw4Bw2k5uiPGgoqIlfQWsfN1BJy16Dnp8PoI4fPl83EjfMpQutN/t1WK7X1jwpu+
+CQycGkW2wFuA9ZRKbVY7Nft0QdnYsMkg1mbbVxAL5KOcSmkBt/W+WcbF6EaNvrcY
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai4.p12 b/cpp/test/IceSSL/certs/c_rsa_cai4.p12
new file mode 100644
index 00000000000..375756e8224
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai4.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai4_priv.pem b/cpp/test/IceSSL/certs/c_rsa_cai4_priv.pem
new file mode 100644
index 00000000000..000a6c414e7
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai4_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCwbzqRi5m5i4dH
+ITI54a78v7k1HIdekJGxwzfL3gtQpnnm/joO1mHA1COt3yeP8nVs+1cvCOnPNtWN
+JZxE1HQPRIT679N9HUWsxqBdEgPf5Md8fqLvYGdzz1O14T+fPwlYAKFVi6JLpNt0
+LvDkErIawqFI/dZOe7V7q/gqQVSZRYh0x0+qKsvaU1lfaCG4w9/h8wn/vN6iGEUN
+Xmgeugt6Yyg45DQ1hKaJPv2Oq200wtPLj+SnJ0TOyIfs7CzhZb/Z8Tdh8arjn3SM
+7EXE8//ZSI8Dj6T/T6FWkPI7h9c9YFw+erTz/eqS40QKK+qfoWfAqpSPoTM8M0sd
+ev3R1Ff/AgMBAAECggEALjoGW2n7Lf0bxYwyD65M3dYR3ZOK+EDim3Oto9Gan1fu
+6pHDfm23EQHEE2M7h2CcWaCE2EL6l5sjWqb3CaWsfu+R8/lwLQDFZ55nF9uHflr/
+1WOMpzFYCaTRpv7MX5nxhcgsfTBnpnAcO5Ws8eTgG1jRT0GKq+eHxk5paBDT7JA2
+6zau9zLQtoAEBPIeSH2VYsqrcAvQQW74bRyxDSe3yFeK0tHhsfFRnHsGv+g5UGG1
+wFsUKM5jSE5qenF3867quBK5Pf3nnlcwLtCK++eAyJPN+0N9MqQOdEmuPTcO2rXR
+6dZFsU/xMksUybwEtZVbfCu5STa2JizadL0eQugEGQKBgQDZBj1NVi5WHonrQcFY
+sOgRvyntEivx1Di8POiu1eWewvIj66z3o2rnta7/NU6sdEmwyPIZDisudikpt1k6
+mebPoD+TDg5HiWq4AjGHaelgWq5YLPj1p3QYPnpYMEaDgA+iuSUYj/HFhDbFcqa5
+IUF10h7/B1oftKSHZGQ+OnLYpQKBgQDQHttwSFxLnH9H2Gmn0dDkzoFHWRH06TKf
+o3aSNe3FSgkR3QBOAHSqkXoWySJpSZbwBVy14IoA3fjLZ2KixKC7E0/Zme2ILHBN
+8q2Y0sg9EKfcxdbFb6nIguDglE7Rjw7ZGlh+zYxHX755LsYGfM7wwtRRT3Hy4Xzk
+8i5k02oo0wKBgQDI2eJwKZtWroq8BK4ZFBijHAWEV7X96Ifdho1eCa2qQgdxQRNi
+WIZ/DYF4xfAa4MC2cTLGB3vlUwwDhKF6/6ZCb6+GvJJwmHgA9l66UUXgm+wQxQZf
+62shaOk3pu4Lk8Bku+7eDZIXV6aNE+/DFEkN7rorErXQ9BD1EO9JPDS/1QKBgEbK
+eDHVKy+85750alvfDoMFiwvNzEHWIJYUb/yDw4DcEgG1fqkJlqV+Hl0pxT6y/Vhf
+Oo3S9p4c4setPuvGnjWD+CE4LoenNfwNk+brq5i51Z9O3CMEPGgrvHoneDfnxVEr
+mPZozFJqystFka4bPfi/DKEruMK42Fa32fgJwY5pAoGAXPJxUKm2UnnrYkrYVJWz
+dL0tLhFf97U/7ZP7CR158ZzBtumOXkps/uWzyxZCVIy3KhjfP9D2zG8NstV4Ml20
+ifMFXLikUYOhue5n3S8BSriIGGCVPd5vyEKfBgTIx3HLhhf50mZ0/CSYAlpZLOBi
+6K6zNOdkUIqMJ286EANVMdQ=
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai4_pub.pem b/cpp/test/IceSSL/certs/c_rsa_cai4_pub.pem
new file mode 100644
index 00000000000..4ba6f5721c1
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai4_pub.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFMTCCBBmgAwIBAgIJAPAkFq7yZ86WMA0GCSqGSIb3DQEBCwUAMIGbMSUwIwYD
+VQQDDBxaZXJvQyBUZXN0IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2Ux
+FDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQI
+DAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJv
+Yy5jb20wHhcNMjEwOTE2MTYzMjMzWhcNMjMxMjIwMTYzMjMzWjCBijEUMBIGA1UE
+AwwLQ2xpZW50IGNhaTQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIElu
+Yy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYT
+AlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALBvOpGLmbmLh0chMjnhrvy/uTUch16QkbHDN8ve
+C1Cmeeb+Og7WYcDUI63fJ4/ydWz7Vy8I6c821Y0lnETUdA9EhPrv030dRazGoF0S
+A9/kx3x+ou9gZ3PPU7XhP58/CVgAoVWLokuk23Qu8OQSshrCoUj91k57tXur+CpB
+VJlFiHTHT6oqy9pTWV9oIbjD3+HzCf+83qIYRQ1eaB66C3pjKDjkNDWEpok+/Y6r
+bTTC08uP5KcnRM7Ih+zsLOFlv9nxN2HxquOfdIzsRcTz/9lIjwOPpP9PoVaQ8juH
+1z1gXD56tPP96pLjRAor6p+hZ8CqlI+hMzwzSx16/dHUV/8CAwEAAaOCAYUwggGB
+MB0GA1UdDgQWBBR3H42uoPC77DsNnj+oeJZtzk9QAjCBwwYDVR0jBIG7MIG4gBTJ
+IksqWuICC9mJkR0dfKlkjZFVMKGBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVz
+dCBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYD
+VQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsG
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCrv4yO3/t46DALBgNVHQ8EBAMC
+BeAwXwYIKwYBBQUHAQEEUzBRMCIGCCsGAQUFBzABhhZodHRwOi8vMTI3LjAuMC4x
+OjIwMDAyMCsGCCsGAQUFBzAChh9odHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhaTQu
+ZGVyMBcGA1UdEQQQMA6HBH8AAAGCBmNsaWVudDATBgNVHSUEDDAKBggrBgEFBQcD
+AjANBgkqhkiG9w0BAQsFAAOCAQEAaBWWiVlhL1lOL5s2QkaYNzSb4eKqmoJ7iF8N
+gssJUCgMxNlOG9yyF7z2MGjdFuK61VjH79xOAkwi7G1NiFcQPC32XjOmNP6CtsOA
+3wmA+SEeldi6BZceCyELWsFweEswYbMupo+V3vAPSWoNcOMyfXOf590jMQIEq4Mu
+W81MMTgstduYaYcH5EKxqEThQoZmY23olABw5JkSSq1lk1vsxHJo9wLwFQgReU8R
+5Jex6pA6dEPFi1Sgx5rliM708+38/6JZVbtSSgyPM99F7/NylWZY982ME1yOWYBG
+Pt1T7SyOVkg6u57rdPAXoybP3GpqI7/2nuwf7igSwAx01ZvRKQ==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai4_revoked.p12 b/cpp/test/IceSSL/certs/c_rsa_cai4_revoked.p12
new file mode 100644
index 00000000000..003028f92c7
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai4_revoked.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai4_revoked_priv.pem b/cpp/test/IceSSL/certs/c_rsa_cai4_revoked_priv.pem
new file mode 100644
index 00000000000..b3f51ba2c8d
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai4_revoked_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOEsY8MuD7IwZc
+lAFDM5AgCy+4gpLPh92PycUI7K4kyaWENsPmLmzBf3F/lzWTJMqXW/wj8omfK94M
+Htk6qAocJcCPQ7vU3QvUJLqfEdDtTS4UT3RebCFcLPiqeS7U0aI3BuUBDQR3wd/2
+M1C1RkaKTq7IDiruydDjdd4oMolEgz1+BG+nuUB8qSnlBaSBumMFDgugaHgCUKV9
+OOoLrRVsnb9xLetRqLYaRC8rxAbzGkxhjWAY9CazmJK/NMIRvrRO/faWEIogkZxF
+nzmHbzMbZkfK9zI/bB/H8GzZRM1AM9xbcZcokKgJDjahCJ5y7aRY94cMh207/M72
+0y0w4eKpAgMBAAECggEBAMAnNX2wm6TRdf8ha0P0crHOfIL6DldBg1GufPHjcEaR
+WKs+PdEG/RY49eZZYvV/2wDkHuqOH9GyH+0BXuGZC0RP14w/RogoTf1U+keVX1HH
+I+6AYCwje7/tlzmuogKEL1RMM4GVV9MrjuCN3PYLP397+vJEc7gRq5xNrgehh+m/
+IU7ZzzQP7jvgGi023tUJOH5Och0YQKeCG+5VQdFVCnRpmNXwZWp/ZEsFCUUa1jjm
+lIn+UtwtvnQbvotjNLLRGniMyIL3tttoTsULD7hDAXTAX2mab1ofZqtYynnwMSAL
+PxNAFJTYkDe/6CDit7pg46ChWoBCh/WEetlQ4u8aGuECgYEA9obr5DyNKpcJaPE8
+L9qZkIM8CelUP482BC7S85m9ieyuQ0zvtLEbHbA+0Ybira8XAbu2PjRbyYnSgj5h
+i+/KkTeilAyOfx6n2VkQrxri4gRdaBCjBiSJLr1C6+qb4shgVapQvT2r/G+6HnPf
+9VuqyFA/tolxLXCWNLudrfQ1qDUCgYEA1f3pQc6gbQQE7ADHACkvU8DWln/hiFrU
+K7B4WBeSYPT0mU75ykzIe73kEa98nmnFSTAFRtS3N/sScEm4xwcGykySJk5sSyfa
+jdMr0MvmHe7RwrSU92C5ohB8d0tL2Eti0xEUnpygXZyyMShDKJrBrIfp7dAN6W4y
+x+tQdRuOpyUCgYBRlhtRQHzTgIK7uUJa7/RscBIZkZ+xHTsaLUjhF5sznyGY4khe
+O1KnA6H2g7ZXFp/9kdrhQUCzNSp2siBkSGp4nrnuVy19gm64LpKn8LTvadRj0UWy
+jbrcvgP8wXrvlbLUBvaLenKFq5Aj7eNLdxfRDUXYqinLiPwc3Y50eGKdlQKBgQCS
++F/C3bobBX6n5GTIvICPwkrfdJcegltkYkBVKGNVigeQX8h5Y8DyE9pXNzKczkI8
+YOnO2vu3TA4+5rMspqvIN0zNWGFSQN3/OEDIl7HFbyfL1SDWwizcnPwPJrzBog0O
+r5V81k/h22QbFO8DLT7FU1ecCJ/1acUgv4Iz3CherQKBgBp5hYVbT2GUhaySMNlC
+BBRqM9aDMN8Sgp2GmSXtK6tS2GMvcbqC9N/USO9KCw2R5Qnmk1wKiPFuiDexi1rj
+qP5VSxG4/9ZMpbHtNWmoynWHVO+vbTF0tfUcbjr3+1BR8uohinlecyRTzVf9LsbP
+LeHEDuCHU1IS6ddDAOzTIkUL
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/c_rsa_cai4_revoked_pub.pem b/cpp/test/IceSSL/certs/c_rsa_cai4_revoked_pub.pem
new file mode 100644
index 00000000000..51e153c5c32
--- /dev/null
+++ b/cpp/test/IceSSL/certs/c_rsa_cai4_revoked_pub.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFOTCCBCGgAwIBAgIJALcL0gr5bjylMA0GCSqGSIb3DQEBCwUAMIGbMSUwIwYD
+VQQDDBxaZXJvQyBUZXN0IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2Ux
+FDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQI
+DAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJv
+Yy5jb20wHhcNMjEwOTE2MTYzMjMzWhcNMjMxMjIwMTYzMjMzWjCBkjEcMBoGA1UE
+AwwTQ2xpZW50IGNhaTQgcmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAta
+ZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTEL
+MAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzhLGPDLg+yMGXJQBQzOQIAsvuIKS
+z4fdj8nFCOyuJMmlhDbD5i5swX9xf5c1kyTKl1v8I/KJnyveDB7ZOqgKHCXAj0O7
+1N0L1CS6nxHQ7U0uFE90XmwhXCz4qnku1NGiNwblAQ0Ed8Hf9jNQtUZGik6uyA4q
+7snQ43XeKDKJRIM9fgRvp7lAfKkp5QWkgbpjBQ4LoGh4AlClfTjqC60VbJ2/cS3r
+Uai2GkQvK8QG8xpMYY1gGPQms5iSvzTCEb60Tv32lhCKIJGcRZ85h28zG2ZHyvcy
+P2wfx/Bs2UTNQDPcW3GXKJCoCQ42oQiecu2kWPeHDIdtO/zO9tMtMOHiqQIDAQAB
+o4IBhTCCAYEwHQYDVR0OBBYEFA4SviIz+iusmzaH67Z4tDjqmjuyMIHDBgNVHSME
+gbswgbiAFMkiSypa4gIL2YmRHR18qWSNkVUwoYGUpIGRMIGOMRgwFgYDVQQDDA9a
+ZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIElu
+Yy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYT
+AlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbYIJAKu/jI7f+3joMAsG
+A1UdDwQEAwIF4DBfBggrBgEFBQcBAQRTMFEwIgYIKwYBBQUHMAGGFmh0dHA6Ly8x
+MjcuMC4wLjE6MjAwMDIwKwYIKwYBBQUHMAKGH2h0dHA6Ly8xMjcuMC4wLjE6MjAw
+MDEvY2FpNC5kZXIwFwYDVR0RBBAwDocEfwAAAYIGY2xpZW50MBMGA1UdJQQMMAoG
+CCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQAclFls4KzNEcBY9dxk3ICqLGqI
+5hKrg7DRskqyD50goDzzC221YNmNCBhLql8eGOfMIpWus/KsJSttZk3lJnt0pxqK
+WTcDJYW9VyyuXBIleAjiNrm9WynVTar0h/QnPjRO39ZYUsCQhUAnR1ZY5yTNX8zu
+N4LsdvOzHr4Vj2Km2E2xmloo23yDIoOVGytlJyH6Ywv3Z/Mebx7WQvtCu0unJOic
+0ukynb79qHSnxh8y/DK2KXrM+N7U/crpeebE4PaM6EhzE06uEDKsUsdYodgPU0bX
+jybrYa+WSG6Vcy2f0Kp4atRd5VmSCjrIuNYy0CO2uQKkpQzjWqFpVMpmS4ZU
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/ca.crl.pem b/cpp/test/IceSSL/certs/ca.crl.pem
new file mode 100644
index 00000000000..939b65b091e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/ca.crl.pem
@@ -0,0 +1,30 @@
+-----BEGIN X509 CRL-----
+MIICPTCCASUCAQEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNVBAMMD1plcm9DIFRl
+c3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4G
+A1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAb
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tFw0yMTA5MTYxNjMyMzNaFw0yMzEy
+MjAxNjMyMzNaMFIwGQIILgt8kE/hRjEXDTIxMDkxNjE2MzIzM1owGQIIV6Idou+0
++kIXDTIxMDkxNjE2MzIzM1owGgIJAKAoXFyhnxKnFw0yMTA5MTYxNjMyMzNaoA4w
+DDAKBgNVHRQEAwIBADANBgkqhkiG9w0BAQsFAAOCAQEAy0yfUxVynGHewTxZ8tMk
+oVL4BNqgXY72zWbl3Gu8y1sunDl3X8fkTQmZod80ke5MbNWCIaqQllZ9tFfK07SQ
+ATQMp6z8PdNhrNq6L3JR0axSfWAEp/AYjLgZ6tF9NUCWsJU+hvpwU5hD0rh9blJE
+KZJcx3bA7DzWIsJ05EkFpUSe7M+D74pVp8XZdpR2Jrh/Nl3BOpU2Ghosab80ZkNb
+mk4YS2POV1tqjNq1XnwQcZ2iE22nvtbe16BQ6+JDgE6/nnNCwyKtRgkVfjbnsmB7
+S+Od5tk/PInrBPqbggjg7WJBN4wVlTnmGA1ZnrMoMNH8IOab2Fap8o1iTXk6PwWN
+jQ==
+-----END X509 CRL-----
+
+-----BEGIN X509 CRL-----
+MIICLjCCARYCAQEwDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNVBAMMHFplcm9DIFRl
+c3QgSW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbRcNMjEwOTE2
+MTYzMjMzWhcNMjMxMjIwMTYzMjMzWjA2MBkCCESoxZtzE8VuFw0yMTA5MTYxNjMy
+MzNaMBkCCFKuYXN2qRPYFw0yMTA5MTYxNjMyMzNaoA4wDDAKBgNVHRQEAwIBADAN
+BgkqhkiG9w0BAQsFAAOCAQEADmxcIAS0P13nGAXuSvEA7ZR+2975M1bP0FrJbeEW
+o0dTpA5sv6qB+BYFtYneGYBskjd0FxlTJaU355YUSwSKumEs9W9pPsNuUUD2BTwU
+Iue0K0BDfkzqoLVfuFJBWtcgQPJdQYis6gSPAh4Yc3NtMpbl5mDO47ES+FZLa3v3
+IPTPfETJBG9aVlDRwr85zCXI13Xf1po4APVKqJhu92MU2nCT0RnfRMYORiOfJKB6
+lCUe0/IkEU3MlMK7tJVdbww10UFPy/z0MkD9S5XRompuT7aUS7gNRVV8KzOd1tXh
+0xqhC9KO+1kCTLmycISjk1jL3JagmIvPuJvcZk2NdvqHjQ==
+-----END X509 CRL-----
diff --git a/cpp/test/IceSSL/certs/ca3.cnf b/cpp/test/IceSSL/certs/ca3.cnf
new file mode 100644
index 00000000000..b4712537ed8
--- /dev/null
+++ b/cpp/test/IceSSL/certs/ca3.cnf
@@ -0,0 +1,18 @@
+###################################################################
+[ ca ]
+default_ca = CA_default # The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir = ./db/ca3 # Where everything is kept
+certs = $dir # Where the issued certs are kept
+crl_dir = $dir # Where the issued crl are kept
+database = $dir/index.txt # database index file.
+
+certificate = $dir/ca.pem # The CA certificate
+crlnumber = $dir/crlnumber # the current crl number
+ # must be commented out to leave a V1 CRL
+crl = $dir/crl.pem # The current CRL
+private_key = $dir/ca_key.pem # The private key
+default_md = default # use public key default MD
diff --git a/cpp/test/IceSSL/certs/ca3.crl.pem b/cpp/test/IceSSL/certs/ca3.crl.pem
new file mode 100644
index 00000000000..f72abfa840c
--- /dev/null
+++ b/cpp/test/IceSSL/certs/ca3.crl.pem
@@ -0,0 +1,15 @@
+-----BEGIN X509 CRL-----
+MIICPTCCASUCAQEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNVBAMMD1plcm9DIFRl
+c3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4G
+A1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAb
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tFw0yMTA5MTYxNjMyMzNaFw0yMzEy
+MjAxNjMyMzNaMFIwGQIILgt8kE/hRjEXDTIxMDkxNjE2MzIzM1owGQIIV6Idou+0
++kIXDTIxMDkxNjE2MzIzM1owGgIJAKAoXFyhnxKnFw0yMTA5MTYxNjMyMzNaoA4w
+DDAKBgNVHRQEAwIBADANBgkqhkiG9w0BAQsFAAOCAQEAy0yfUxVynGHewTxZ8tMk
+oVL4BNqgXY72zWbl3Gu8y1sunDl3X8fkTQmZod80ke5MbNWCIaqQllZ9tFfK07SQ
+ATQMp6z8PdNhrNq6L3JR0axSfWAEp/AYjLgZ6tF9NUCWsJU+hvpwU5hD0rh9blJE
+KZJcx3bA7DzWIsJ05EkFpUSe7M+D74pVp8XZdpR2Jrh/Nl3BOpU2Ghosab80ZkNb
+mk4YS2POV1tqjNq1XnwQcZ2iE22nvtbe16BQ6+JDgE6/nnNCwyKtRgkVfjbnsmB7
+S+Od5tk/PInrBPqbggjg7WJBN4wVlTnmGA1ZnrMoMNH8IOab2Fap8o1iTXk6PwWN
+jQ==
+-----END X509 CRL-----
diff --git a/cpp/test/IceSSL/certs/ca4.cnf b/cpp/test/IceSSL/certs/ca4.cnf
new file mode 100644
index 00000000000..6d216c00842
--- /dev/null
+++ b/cpp/test/IceSSL/certs/ca4.cnf
@@ -0,0 +1,18 @@
+###################################################################
+[ ca ]
+default_ca = CA_default # The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir = ./db/ca4 # Where everything is kept
+certs = $dir # Where the issued certs are kept
+crl_dir = $dir # Where the issued crl are kept
+database = $dir/index.txt # database index file.
+
+certificate = $dir/ca.pem # The CA certificate
+crlnumber = $dir/crlnumber # the current crl number
+ # must be commented out to leave a V1 CRL
+crl = $dir/crl.pem # The current CRL
+private_key = $dir/ca_key.pem # The private key
+default_md = default # use public key default MD
diff --git a/cpp/test/IceSSL/certs/ca4.crl.pem b/cpp/test/IceSSL/certs/ca4.crl.pem
new file mode 100644
index 00000000000..de0b88b0106
--- /dev/null
+++ b/cpp/test/IceSSL/certs/ca4.crl.pem
@@ -0,0 +1,15 @@
+-----BEGIN X509 CRL-----
+MIICPTCCASUCAQEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNVBAMMD1plcm9DIFRl
+c3QgQ0EgNDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4G
+A1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAb
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tFw0yMTA5MTYxNjMyMzNaFw0yMzEy
+MjAxNjMyMzNaMFIwGQIIBrDobNhhmFkXDTIxMDkxNjE2MzIzM1owGQIIUo/NVk10
+uIIXDTIxMDkxNjE2MzIzM1owGgIJAKu/jI7f+3joFw0yMTA5MTYxNjMyMzNaoA4w
+DDAKBgNVHRQEAwIBADANBgkqhkiG9w0BAQsFAAOCAQEAC8kOu53AtrU+8dribp+i
+gVxASZkT4G3boo1B2oqqT9JdkE8rq1lWtBs/tFfUsaA9OY+BzRVFCzLz8lToVerT
+QN31gACtzgVUXkBvZrPsgmhH7/885ja+rRIs5WhcoFpnL7HrQ+EAZvf7n07WnhmF
+KnM/Ap4lwBfd2oNOxjq/ut1jK8T813E4aC2kGM4ZhED/tNWqW6Qu/Mg6X48QqYbo
+RojrNuGyt4Lv7pEKAE1fusrPr3sY/jMxj2mWgKMa5AqOoWHvJQ2NC2hxum+N/qoO
+TkEesylVi1nY6iTtpitEccu/vIDrYTT5xXbBTQkuL6fVD6AtuJCOAhR05GdPM/g3
+8w==
+-----END X509 CRL-----
diff --git a/cpp/test/IceSSL/certs/cacert2.der b/cpp/test/IceSSL/certs/cacert2.der
new file mode 100644
index 00000000000..4eb02277da2
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cacert2.der
Binary files differ
diff --git a/cpp/test/IceSSL/certs/cacert3.der b/cpp/test/IceSSL/certs/cacert3.der
new file mode 100644
index 00000000000..726a5cd3c9e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cacert3.der
Binary files differ
diff --git a/cpp/test/IceSSL/certs/cacert3.pem b/cpp/test/IceSSL/certs/cacert3.pem
new file mode 100644
index 00000000000..5075a1e6c53
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cacert3.pem
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIIEADCCAuigAwIBAgIJAOGYOElEzDTWMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAOFPAXV9VFU6FVrFIlm8PPX+dA6rrOu8RljQBT/JYVsohTEDN9mY
+9Lz4iiZf9wSvAPvuHXrvtKcYl558/9KgzqIse19aKs+77qno0LPyHf5JRxQud/+P
+imPK3WnmCHwZHi8yHKl1h9GP+vPn2MkAm6le5t37oTtKbnhmAA7f4IdY4Csk3te4
+KcgeNeFAlaIB4mNifz7Vm/SCeR2oest8yW9r7Wb3bcHRXEKL5tc1WNb21BmLEg3V
+PnPh778RxF0vodUrQUciM4+kXDrvuIHP+k+/u7xg+Kj10Cy0KJKRhk1N1+6EVVqz
+j1RBw8sDtLKyROOgK7U+3UjifsG0dG9eSj8CAwEAAaNfMF0wDAYDVR0TBAUwAwEB
+/zAdBgNVHQ4EFgQUnsjLSr3zM4moTqHPO9CsJ3hCPQ0wCwYDVR0PBAQDAgGGMCEG
+A1UdEQQaMBiHBH8AAAGBEGlzc3VlckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQAD
+ggEBAHhnDnxvq4i5ypGxIh89g9G2PiFUJ5YmoVldQ1QQkq1R1skzG7ROeKlHh/cC
+rs8R9pFSnNFTQC3TGecV0qk73alzGjav59czP4R2I4OZhABv/zvImmmQnaZBAk9g
+5JwYZ+Kzbwy8hxl76L0rHK4z9w/zpGEM+vrH4gZRGQdCPZ+5XzgeAOkaC+rPOkcw
+RtwPAvUS62fLZi+T+n7PLtoRwlzLPONX6RVPhxYwMg3Di7N4MM06isgaI91a7BUa
+iB/Uf/3ygmHd1rrbiNh3DCGKSVepwH1UTCu1Rjy58EpdIp9G/OGintjDc8XajQS4
+bhvlbfthknBKY96MwibqxDRme9A=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/cacert4.der b/cpp/test/IceSSL/certs/cacert4.der
new file mode 100644
index 00000000000..5bce345a92e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cacert4.der
Binary files differ
diff --git a/cpp/test/IceSSL/certs/cacert4.pem b/cpp/test/IceSSL/certs/cacert4.pem
new file mode 100644
index 00000000000..96f069257b6
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cacert4.pem
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIIEADCCAuigAwIBAgIJAIEr4TCFXeNcMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAME+gjpbcHfR85ROm4hsT94XBQQgCcT7ZOqG1HvzDRyZYs5jCxpY
+9BeKLd0JjacuXpp/uiFiy3F2MSkEp1KyviV10+uqv3myGd+phCRtRFpDRX2y7ocn
++WUTWi0koqfs2KLqzqBhgfSLHeLHECKOH3u1NUGZSjfR7+hEu04Ru65non7SyQ3U
+Csa1psXsWMKlo1YfdPTzGJ5IQ2cJXHQFylpgLk8yrVDImMHPymsajXFsq34jpkpu
+QDZeKHCaKEgl20S3xrmALCHpXNdkjqtc2gNoVI+C//oZpk9ms2EOlsKwzxB8/d9W
+eunK4h0IB3H2mZ6QWAm0SSyAVSAdaNBDxxECAwEAAaNfMF0wDAYDVR0TBAUwAwEB
+/zAdBgNVHQ4EFgQU/it+ysGyPKGv41bKHJBfIpNzzLswCwYDVR0PBAQDAgGGMCEG
+A1UdEQQaMBiHBH8AAAGBEGlzc3VlckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQAD
+ggEBALq8P+lJ+nvK7LegSDKT5WamOzO4YThObANCsP/zLQRsIbHjWGDkGT57ndwc
+1Wp0GkhoTWOraocAnEHTSFnMC6j+xABspMxz6ob5T5mIFLmyiTf2psVlmsPDmbR8
+RIOMkW0WFBQKO+zFSE8Mwwnw+QKGL7Xj396ZxGC9SfNiOrW0UBJUBsML3Ck/hM/H
++GVqFN15/WK/LOzCzTWVUlrFFAKtii9r9PUgJfX+XySULcFwvu+rPsgxxMGn2CNa
+iuAAumzTVRJTVM7VSGEImz0VM2F32jKhsjQwbNI2KqlYCTZlklecHT6Fk1Dd8SQi
+pBJgYgVfzEcgm5pNMFakDUzOcw8=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/cacerts.pem b/cpp/test/IceSSL/certs/cacerts.pem
index accb6f6115b..df75a533d77 100644
--- a/cpp/test/IceSSL/certs/cacerts.pem
+++ b/cpp/test/IceSSL/certs/cacerts.pem
@@ -46,3 +46,51 @@ SlMPLWc7V3jNWWipLEBZNpGJdyY+/K3ICxyRCm7oi5hrmvb6aNWllA+jK4ki88zv
nmxv6tEBfklqemGMaRbEAzZLKPJ8XD975qKsgA1pX8kL9SsFSgHGkSNf24dym30I
c1ap2D2imLtqOYXRjEw3ek7ITUU/TQRvq1sxdQ==
-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEADCCAuigAwIBAgIJAOGYOElEzDTWMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAOFPAXV9VFU6FVrFIlm8PPX+dA6rrOu8RljQBT/JYVsohTEDN9mY
+9Lz4iiZf9wSvAPvuHXrvtKcYl558/9KgzqIse19aKs+77qno0LPyHf5JRxQud/+P
+imPK3WnmCHwZHi8yHKl1h9GP+vPn2MkAm6le5t37oTtKbnhmAA7f4IdY4Csk3te4
+KcgeNeFAlaIB4mNifz7Vm/SCeR2oest8yW9r7Wb3bcHRXEKL5tc1WNb21BmLEg3V
+PnPh778RxF0vodUrQUciM4+kXDrvuIHP+k+/u7xg+Kj10Cy0KJKRhk1N1+6EVVqz
+j1RBw8sDtLKyROOgK7U+3UjifsG0dG9eSj8CAwEAAaNfMF0wDAYDVR0TBAUwAwEB
+/zAdBgNVHQ4EFgQUnsjLSr3zM4moTqHPO9CsJ3hCPQ0wCwYDVR0PBAQDAgGGMCEG
+A1UdEQQaMBiHBH8AAAGBEGlzc3VlckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQAD
+ggEBAHhnDnxvq4i5ypGxIh89g9G2PiFUJ5YmoVldQ1QQkq1R1skzG7ROeKlHh/cC
+rs8R9pFSnNFTQC3TGecV0qk73alzGjav59czP4R2I4OZhABv/zvImmmQnaZBAk9g
+5JwYZ+Kzbwy8hxl76L0rHK4z9w/zpGEM+vrH4gZRGQdCPZ+5XzgeAOkaC+rPOkcw
+RtwPAvUS62fLZi+T+n7PLtoRwlzLPONX6RVPhxYwMg3Di7N4MM06isgaI91a7BUa
+iB/Uf/3ygmHd1rrbiNh3DCGKSVepwH1UTCu1Rjy58EpdIp9G/OGintjDc8XajQS4
+bhvlbfthknBKY96MwibqxDRme9A=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEADCCAuigAwIBAgIJAIEr4TCFXeNcMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAME+gjpbcHfR85ROm4hsT94XBQQgCcT7ZOqG1HvzDRyZYs5jCxpY
+9BeKLd0JjacuXpp/uiFiy3F2MSkEp1KyviV10+uqv3myGd+phCRtRFpDRX2y7ocn
++WUTWi0koqfs2KLqzqBhgfSLHeLHECKOH3u1NUGZSjfR7+hEu04Ru65non7SyQ3U
+Csa1psXsWMKlo1YfdPTzGJ5IQ2cJXHQFylpgLk8yrVDImMHPymsajXFsq34jpkpu
+QDZeKHCaKEgl20S3xrmALCHpXNdkjqtc2gNoVI+C//oZpk9ms2EOlsKwzxB8/d9W
+eunK4h0IB3H2mZ6QWAm0SSyAVSAdaNBDxxECAwEAAaNfMF0wDAYDVR0TBAUwAwEB
+/zAdBgNVHQ4EFgQU/it+ysGyPKGv41bKHJBfIpNzzLswCwYDVR0PBAQDAgGGMCEG
+A1UdEQQaMBiHBH8AAAGBEGlzc3VlckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQAD
+ggEBALq8P+lJ+nvK7LegSDKT5WamOzO4YThObANCsP/zLQRsIbHjWGDkGT57ndwc
+1Wp0GkhoTWOraocAnEHTSFnMC6j+xABspMxz6ob5T5mIFLmyiTf2psVlmsPDmbR8
+RIOMkW0WFBQKO+zFSE8Mwwnw+QKGL7Xj396ZxGC9SfNiOrW0UBJUBsML3Ck/hM/H
++GVqFN15/WK/LOzCzTWVUlrFFAKtii9r9PUgJfX+XySULcFwvu+rPsgxxMGn2CNa
+iuAAumzTVRJTVM7VSGEImz0VM2F32jKhsjQwbNI2KqlYCTZlklecHT6Fk1Dd8SQi
+pBJgYgVfzEcgm5pNMFakDUzOcw8=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/cai3.cnf b/cpp/test/IceSSL/certs/cai3.cnf
new file mode 100644
index 00000000000..eb827baa829
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cai3.cnf
@@ -0,0 +1,18 @@
+###################################################################
+[ ca ]
+default_ca = CA_default # The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir = ./db/ca3/intermediate1 # Where everything is kept
+certs = $dir # Where the issued certs are kept
+crl_dir = $dir # Where the issued crl are kept
+database = $dir/index.txt # database index file.
+
+certificate = $dir/ca.pem # The CA certificate
+crlnumber = $dir/crlnumber # the current crl number
+ # must be commented out to leave a V1 CRL
+crl = $dir/crl.pem # The current CRL
+private_key = $dir/ca_key.pem # The private key
+default_md = default # use public key default MD
diff --git a/cpp/test/IceSSL/certs/cai3.crl.pem b/cpp/test/IceSSL/certs/cai3.crl.pem
new file mode 100644
index 00000000000..d3629369f0c
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cai3.crl.pem
@@ -0,0 +1,14 @@
+-----BEGIN X509 CRL-----
+MIICLjCCARYCAQEwDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNVBAMMHFplcm9DIFRl
+c3QgSW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbRcNMjEwOTE2
+MTYzMjMzWhcNMjMxMjIwMTYzMjMzWjA2MBkCCESoxZtzE8VuFw0yMTA5MTYxNjMy
+MzNaMBkCCFKuYXN2qRPYFw0yMTA5MTYxNjMyMzNaoA4wDDAKBgNVHRQEAwIBADAN
+BgkqhkiG9w0BAQsFAAOCAQEADmxcIAS0P13nGAXuSvEA7ZR+2975M1bP0FrJbeEW
+o0dTpA5sv6qB+BYFtYneGYBskjd0FxlTJaU355YUSwSKumEs9W9pPsNuUUD2BTwU
+Iue0K0BDfkzqoLVfuFJBWtcgQPJdQYis6gSPAh4Yc3NtMpbl5mDO47ES+FZLa3v3
+IPTPfETJBG9aVlDRwr85zCXI13Xf1po4APVKqJhu92MU2nCT0RnfRMYORiOfJKB6
+lCUe0/IkEU3MlMK7tJVdbww10UFPy/z0MkD9S5XRompuT7aUS7gNRVV8KzOd1tXh
+0xqhC9KO+1kCTLmycISjk1jL3JagmIvPuJvcZk2NdvqHjQ==
+-----END X509 CRL-----
diff --git a/cpp/test/IceSSL/certs/cai3.der b/cpp/test/IceSSL/certs/cai3.der
new file mode 100644
index 00000000000..0d57beced66
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cai3.der
Binary files differ
diff --git a/cpp/test/IceSSL/certs/cai3.pem b/cpp/test/IceSSL/certs/cai3.pem
new file mode 100644
index 00000000000..d5f1fcf6a32
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cai3.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/cai4.cnf b/cpp/test/IceSSL/certs/cai4.cnf
new file mode 100644
index 00000000000..5007c52fe7c
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cai4.cnf
@@ -0,0 +1,18 @@
+###################################################################
+[ ca ]
+default_ca = CA_default # The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir = ./db/ca4/intermediate1 # Where everything is kept
+certs = $dir # Where the issued certs are kept
+crl_dir = $dir # Where the issued crl are kept
+database = $dir/index.txt # database index file.
+
+certificate = $dir/ca.pem # The CA certificate
+crlnumber = $dir/crlnumber # the current crl number
+ # must be commented out to leave a V1 CRL
+crl = $dir/crl.pem # The current CRL
+private_key = $dir/ca_key.pem # The private key
+default_md = default # use public key default MD
diff --git a/cpp/test/IceSSL/certs/cai4.crl.pem b/cpp/test/IceSSL/certs/cai4.crl.pem
new file mode 100644
index 00000000000..15f1c5d5c64
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cai4.crl.pem
@@ -0,0 +1,14 @@
+-----BEGIN X509 CRL-----
+MIICMDCCARgCAQEwDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNVBAMMHFplcm9DIFRl
+c3QgSW50ZXJtZWRpYXRlIENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbRcNMjEwOTE2
+MTYzMjMzWhcNMjMxMjIwMTYzMjMzWjA4MBoCCQCoBM030K4oJBcNMjEwOTE2MTYz
+MjMzWjAaAgkAtwvSCvluPKUXDTIxMDkxNjE2MzIzM1qgDjAMMAoGA1UdFAQDAgEA
+MA0GCSqGSIb3DQEBCwUAA4IBAQBVH8XYHjiuxSIOcU+YO7oEXs51MDLC9f7Jj5Lv
+cS8W05FKbCZxqA59fKveJplApIifUfnZVAFlYRQpytj4quj1m28sUJc2Rfqf3gKO
+MvlChT/4y5JAGt4gyDq2/iswfHH0oDDcRpPB7KW/4HKZcTWtu6nHqBgGSpezKyfI
+A7vDlvb0VQqHPXXf5CWOQ9u/oy6OucP1zJoG1/86XAvN7NiUNUP2Csa32dxp4ksz
+egZNyOAdw2f9e6VxjCQfq9+0HfWFztA57yO0D8ycDW4E/EGaOErFaEUz8KlDJ/x9
+udCgl6Ea8ZcVKkgG0LbGN6xOMJeoLk0InkIByos4tchbHR35
+-----END X509 CRL-----
diff --git a/cpp/test/IceSSL/certs/cai4.der b/cpp/test/IceSSL/certs/cai4.der
new file mode 100644
index 00000000000..9f5effd07d1
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cai4.der
Binary files differ
diff --git a/cpp/test/IceSSL/certs/cai4.pem b/cpp/test/IceSSL/certs/cai4.pem
new file mode 100644
index 00000000000..dcde1a9df19
--- /dev/null
+++ b/cpp/test/IceSSL/certs/cai4.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca1/ca.settings.json b/cpp/test/IceSSL/certs/db/ca1/ca.settings.json
new file mode 100644
index 00000000000..de830f971aa
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca1/ca.settings.json
@@ -0,0 +1 @@
+{"validity": 825, "keysize": 2048, "keyalg": "rsa", "sigalg": "sha256"}
diff --git a/cpp/test/IceSSL/certs/db/ca1/intermediate1/ca.settings.json b/cpp/test/IceSSL/certs/db/ca1/intermediate1/ca.settings.json
new file mode 100644
index 00000000000..94867ff10ef
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca1/intermediate1/ca.settings.json
@@ -0,0 +1 @@
+{"validity": 825, "keysize": 2048, "keyalg": 6, "sigalg": "sha256"}
diff --git a/cpp/test/IceSSL/certs/db/ca1/intermediate1/intermediate1/ca.settings.json b/cpp/test/IceSSL/certs/db/ca1/intermediate1/intermediate1/ca.settings.json
new file mode 100644
index 00000000000..94867ff10ef
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca1/intermediate1/intermediate1/ca.settings.json
@@ -0,0 +1 @@
+{"validity": 825, "keysize": 2048, "keyalg": 6, "sigalg": "sha256"}
diff --git a/cpp/test/IceSSL/certs/db/ca2/ca.settings.json b/cpp/test/IceSSL/certs/db/ca2/ca.settings.json
new file mode 100644
index 00000000000..de830f971aa
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca2/ca.settings.json
@@ -0,0 +1 @@
+{"validity": 825, "keysize": 2048, "keyalg": "rsa", "sigalg": "sha256"}
diff --git a/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3.pem b/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3.pem
new file mode 100644
index 00000000000..e9e35f714ce
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFFTCCA/2gAwIBAgIIGqm9W38JQLQwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMloXDTIzMTIyMDE2MzIzMlowgYUxDzANBgNVBAMMBkNsaWVudDEMMAoG
+A1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRl
+cjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEW
+DmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+lEKZfOWkZuDAYcJIRe/MYpDzPLYSAwZSkOdf/9zc4sLJPR3i5hhZteKM1Gdhxd2G
+acKLBJ9jxO3QJdd34thZ2Eshi4Bq+dO05Houn06LO/DICSi+Q1RJ7mM+Dj17p7Wc
+Ltn4+s0wkT18BiBDCDtXt7NI+9owZCoPz8yleCKC/nVPuaauRDHwewaz5wIAcIFQ
+DzwU8NZWFM/Pn98NsYWsRwwaifMXqRmi3zatz38Kh/egshpvwnMhkw6/CXPfGOEK
+ch4iVGIUASHwfF025ssqxGNPCPWmcA7uVu3lAnbV6eA4iiO3gSsog89+Em+5uQ7T
+VYOnR5X1/IDJGaBLM55FsQIDAQABo4IBfDCCAXgwHQYDVR0OBBYEFA+zXPc/Qeeh
+eXZOBNalAWvLz0S/MIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQrCd4Qj0N
+oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNVBAsMA0lj
+ZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNV
+BAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHpl
+cm9jLmNvbYIJAOGYOElEzDTWMAsGA1UdDwQEAwIF4DAzBgNVHR8ELDAqMCigJqAk
+hiJodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhMy5jcmwucGVtMBcGA1UdEQQQMA6H
+BH8AAAGCBmNsaWVudDAhBgNVHRIEGjAYhwR/AAABgRBpc3N1ZXJAemVyb2MuY29t
+MBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQCykMSwWywR
+Nucy4MlupFXnhRtBlBoz2838L6AdAQyK/mgww2uxPEOULc4xvNz6kWbg1zaN2rfP
+GTUDmQXmWKbZH19Nl+MB66JRoHLXi0y5+c8xP9kCWuhxqPmtrTOq61jJOUVN4HzV
+MWKyfHjm8PI36GWXlfJcnhGeVVt878hl1ZUfVZseU/L3bwQFgyUF8FUUPw9LGf/i
+MxJ80mVFKwMmeNpb6NtPaHOIH77jAvlYHt/KNU3i005zMXRQSt+N9hVlsceBCSEX
+ZTlQqJX6hvZHFjI5EvVX7QVlAEnS+S4JMIbbXtMGipWuNtp+w8M/BkNH5abghO/x
+P2bkRL3mU/Ba
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_key.pem b/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_key.pem
new file mode 100644
index 00000000000..866478c4524
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIxBQ9QDfmtekCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECD50irqjK9o1BIIEyBYvLniQ8ys3
+WD9ZO02lHS16bVLGlozjIIeYG62UsIWczNS22IcRBOhBa6/zo0c6anrQXZ0bJ0Sd
+wyZU8Pnx7Sw/3lYdbDNwg2TqRo5Mmr20STjhBwo933hzPLsZ+IJuRWIEiMxtTxv6
+z/P/XGf0F4tXPTspd1Rg6VOH7vQVGZhH4UirITjkpzRKo5H0F8s1Z3NNpdaQyKtm
+GyRaTsASMjMGSl/275JjO4sJ2r7LInqlJiutXMSQr+QpSe4d8GV85JTGI3RHxxNe
+wb3ruUgdXqF7o3HVdVrUy8ipT1jrHORC0tqbJ/22TODHtWarGbfAhthXGpV7Vl0i
+3FTm8fNaBUBMcAZo9uqEdZlNFUYi4r/vJ2+RPy/KqqdEv3xstnxZSNww0m98+Bww
+JTsKgC16AcQQ3c7pZzFxzKDbgG6/cF8roMKrnDtesfebyQPiKoddRrw3owrN0see
+tC6sY8d4vm+W83BH/aYm1Vf/aoTVTa0f0Yd9g5Y4iE7emMktRFY9FDbkOqRMpkik
+QF9slS0zkssPBRZRk8UzFgpvuIIp5gEQa/arDUZtI6MBlzPMyWo0iOX3WvmzVJAF
+JjVvx31MVspB17E3aVWAlHF2Ov/0DiB51qXfr8sOSZLsUYWRUsmO1rXD3bBywhmd
+dD43AFNm5sULTDUTz6K7obo6x5L/XvwOWnNyHxCLRJx/ySD3ysE7ZBIqMYxdtqOz
+rwQcSbKPsjsCK2nFtq0JG3HfZebMx+/kelUDbsPIdF0sjebGCIf7pzClbrWvLUzH
+4nwQw2IDD3xram4X38ZbeAAA+ru5F60UVIrJpty9GMSKFil9MVHup63a+YaXwzjM
+F2akC9oNvyQs3YX7MEAfGThfbwF9ud26q9anFhcWqgElJ+oW4mQ85H8yLySN3HAv
+Q4e0VMF1SqPFAI4gseNuDeDh43g6uvxHRqI03UVteH7jukeKavh4jmNl7JhoFEV7
+E9FmCjLy5XKjkqudiHxA9yBozvJ7Y+8ejOYkrdppM9WWMTKYJ1HwmudTN3/NDM+D
+YVJh7NNGD0c9f2aaX3UQhs+O4SMSxVpeaGhDkD/NeOtyQ5T65ihJg0EG80daip1W
+8eWzAHd43J17yOC/bBn4J8Sy8g+zQi0JuYMVfDJ8Q4DfxQJdee5w+nMSiVxBAI+c
+O/AYU682ZDfmiG2ML8URWN6luF9Wqxz30QVER/nj9u1iDq3XJ5liwa/qvP3+WAAH
+VATf2WWRgM/WxmDGlRVCGnzC2lOpGbOtJhx6Ty/RB3k65prXT4vaFSPA+HoeYRVH
+9ko/4DKwa7btfqOP77a0XuiVurG/4wj0E8TLTlpTx+2mowY3SWO6BHFaFmfQsHdT
+g1infTrZ3eZmMkLRZ7WoAGp2LfamAtejR7u1G3snfxs5iLk27Oq5NB5s0qPMIzlO
+GF3izPEWfUKEPIyANErvTc5OA2E5oMrg5MLtQhk5yU0Tb3rakxWAAKUYaBB9REkU
+wLMtsVQ93b0AXR76H5NeKJc0eCou4Gwb+F7vpfY1ReMz8FGu+kaZbDlm2Vu/iT7y
+uwVF9Wia1+hrlpH2+/YRpcXqbW7nrRCHGSt0FWSDWIXnGAc7aRCz1693TTKoUYib
+xkIpZECWTGwTQY/DsMG63w==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_revoked.pem b/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_revoked.pem
new file mode 100644
index 00000000000..de6b964d21a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_revoked.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFIjCCBAqgAwIBAgIJAKAoXFyhnxKnMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGRMRswGQYDVQQDDBJDbGllbnQgY2Ez
+IHJldm9rZWQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAO
+BgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0w
+GwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBANaxq17XaT7O/EKkO0+eqX4/88ONLtw+JKj50R+oUFOlz+zp
+G5xblNviJtuRK3yGdTKs0niUqfELEG8BQkUH8tdOMa3vy/uE8ZeF00A69Ibh+A3e
+dd/1RLhU0qwBBYEv9ULp0e5Eb4nYH08JHBgsmX1JnXGsMs58qucxM/sZ5tmPA4Y5
+bb6/BQhQHmb2BN4TIzBlig+jqv7yL6Xwg2jthf+W9fq1YexC47TGdAv9Wyza9w/j
+7A5VbbEA5hH9TTqojoc9q79rPvZZGTnozASRDgWqW/pO2uT1LrRVCDaEeJuJ2haW
+uIy6e/GM0cj28UhdjwbgccXSpqcPtXR9CUFKx8cCAwEAAaOCAXwwggF4MB0GA1Ud
+DgQWBBR1ETpFd2k9ytvwkaxU36+D/riDQTCBwwYDVR0jBIG7MIG4gBSeyMtKvfMz
+iahOoc870KwneEI9DaGBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVzdCBDQSAz
+MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdK
+dXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3
+DQEJARYOaW5mb0B6ZXJvYy5jb22CCQDhmDhJRMw01jALBgNVHQ8EBAMCBeAwMwYD
+VR0fBCwwKjAooCagJIYiaHR0cDovLzEyNy4wLjAuMToyMDAwMS9jYTMuY3JsLnBl
+bTAXBgNVHREEEDAOhwR/AAABggZjbGllbnQwIQYDVR0SBBowGIcEfwAAAYEQaXNz
+dWVyQHplcm9jLmNvbTATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsF
+AAOCAQEASfYjRkHSx96/vPRNb521SLcF8NF7MjtNWLTMz7rSlhpKyXYTfe84tIn+
+AYquDTTxuYCN1I0wQRFvDyN2Al2R63craAjDTmmzG78s5JG6QCx1WRyRsE/XjHpD
+U9OwiC7hBp1EdarXPaRstutTG+DYULzvoQ69EaSJh9enjdfYihqNw6XpkYhQGvlr
+p59rBLbrx7dmmUbAKbWlzfj91MURJbGALXstCP126a09qZdWlR1RiB+KGv2iKr2x
+Az9/6AiUyYIIM5OttrmF/ebhbrE7/lGlTzJqtR3E4Tc25c+5MBeWtT/G83qDIzE9
+2OmR/GcVOL+mPvZ+pdza/4FsIxJing==
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_revoked_key.pem b/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_revoked_key.pem
new file mode 100644
index 00000000000..eb136e4eafe
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/c_rsa_ca3_revoked_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIAQNELCf0rOoCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECKdFzBwnEBsnBIIEyFsgkB2ooKVp
+UOtsfpwgVM89ic/61hNqDMBSXmaIkxAl9PUjCnudcmeyJ8xZDzsAWIVQfMn45ztT
+oP2OaVWJp638huOHd1wv7oZ7OAphWEVaMd/HLxenY8irNthmcXIvSm9Zti23E4lk
+zOQTcKB5deWj4urDTrdim5gSZXHs1/eGKh3dEBIrpebAVzvAJvuKwx7oIxYjxg5x
+ZDVASOGaeJm/PIPKKrVgnitfW40StfuU8ZqlzNR4WoPGN5D7r1nF6MluZNFVn4GS
+qGpAtjpanWg8LexnHU4VmbCGN8jCaGZkvZWoBzHtusKtqni+8LGhWt9e6h0bb0kp
+rnfPtLGwSR7YYj8oOiqA5fj360NviAfDMHNTp1bw02xka8MmOjcVjRewmhtwPMzF
++3j42j+FrnXlCj/o8WxkVF7V9BuyuK7TKD2tX2e4G6te/EEH8ikt/VFydceMZwVe
+zgmXHocY1WjVTIc8WQG24mEOVxUgv6C5aGz/wLDopjH6Htgox+sAyaWzUvOW0B2U
+XpT+NKS6WBrRBcGzZBPjXoJGwKEZbJpw3RyTCPeKFsEL3Z2Pex3fMeOnipeqbfoK
+My/uPakdXV775x3TAbWW2QEy1UNzc4eQW8PzUkVhvCMfG4g76lSCIohjKNlDe8PO
+IyJzEjSaybm5CEbUUM9EnbnID3B23HD/Xv7iturMjIcu1I6I02E30bKVdYPWQgsi
+UUB1N02KIIVFE2pDP76/FTVWlqX7DDsAkdzIUJftfebTVjJpiVctq1yEPxtVi8pc
+PdtxHAC+sYyMYZmi61CRFs+enyqD10vhwhUjKk4S9QqEyN9LOH3QrqebrwDywLPW
+1Aln2IPpQilQGqXNFmrriIOjKgNgcqRPqjzQoCP4W0QA4eT8MB9DxnZwhAENUhgj
+h7AQdGc+WH3yluCvs29Z4KOxfsVlx5ewJwMtz+bfgFNAOlJEIw5HnuWNyV4JKqsY
+0sqvNvdBXesyqAYuMXxrxIq7gPEx8BB04k0Qw3SDw8U6/7Ie9ZM0lsmb1+6OJaxf
+Afcpd7ULyso2d0P2Y7lg3Kr8zF7WRLY/jW0f3Cx6QhC1liq4Z9cQNXJy5mBQ6Vve
+Nf0wliXMWPmnAvUQ9KCNftQXGdIhpNDB1nSrOJZ7iEMKxvfQ5/eTAJJYIhTv7hsf
+jvwFII301c1oaAMYKX5wmZSRaa3OFriCvgVAb50JNlaZVKSumx4fImzRIKutgyYO
+Pqzxo6u+vEtlmkjsKh71EoNiee1XRqQ70VLYWLO7MpIVqckjsWTrehJlGJS0KNol
+bX5b91GW5B7pX0VjHEFtWjGHKAoaYI6ShWRqx6CUNLOjLVSrPjTz8qRraEAbiH17
+CeucCaABXHx1tgTRC49LDhf2MTiH5mgH37cBsf60pyBM0LAmu+W87GQV4Mt54pDV
+CKVs7xPJerK4z5EBokx9YB3xANaEBpTnA9yz83tvW9cI53mAs0HEO0xtbqhWmQZr
+Xgnl2ByPrteT5jdZHdjxLhQ1xFcHW3jDeWz5ToKPklI9IPR1D5zr4P2DZQ/IuR7x
+bgB5wZVupcgQx6W/xLNTdwsBOyioosOSKlbBAGOL+HMmVrcgX0/PVR0iMF2usj1b
+Pw+vLsOMp5+rsWtGtLBhrA==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/ca.pem b/cpp/test/IceSSL/certs/db/ca3/ca.pem
new file mode 100644
index 00000000000..5075a1e6c53
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/ca.pem
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIIEADCCAuigAwIBAgIJAOGYOElEzDTWMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAOFPAXV9VFU6FVrFIlm8PPX+dA6rrOu8RljQBT/JYVsohTEDN9mY
+9Lz4iiZf9wSvAPvuHXrvtKcYl558/9KgzqIse19aKs+77qno0LPyHf5JRxQud/+P
+imPK3WnmCHwZHi8yHKl1h9GP+vPn2MkAm6le5t37oTtKbnhmAA7f4IdY4Csk3te4
+KcgeNeFAlaIB4mNifz7Vm/SCeR2oest8yW9r7Wb3bcHRXEKL5tc1WNb21BmLEg3V
+PnPh778RxF0vodUrQUciM4+kXDrvuIHP+k+/u7xg+Kj10Cy0KJKRhk1N1+6EVVqz
+j1RBw8sDtLKyROOgK7U+3UjifsG0dG9eSj8CAwEAAaNfMF0wDAYDVR0TBAUwAwEB
+/zAdBgNVHQ4EFgQUnsjLSr3zM4moTqHPO9CsJ3hCPQ0wCwYDVR0PBAQDAgGGMCEG
+A1UdEQQaMBiHBH8AAAGBEGlzc3VlckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQAD
+ggEBAHhnDnxvq4i5ypGxIh89g9G2PiFUJ5YmoVldQ1QQkq1R1skzG7ROeKlHh/cC
+rs8R9pFSnNFTQC3TGecV0qk73alzGjav59czP4R2I4OZhABv/zvImmmQnaZBAk9g
+5JwYZ+Kzbwy8hxl76L0rHK4z9w/zpGEM+vrH4gZRGQdCPZ+5XzgeAOkaC+rPOkcw
+RtwPAvUS62fLZi+T+n7PLtoRwlzLPONX6RVPhxYwMg3Di7N4MM06isgaI91a7BUa
+iB/Uf/3ygmHd1rrbiNh3DCGKSVepwH1UTCu1Rjy58EpdIp9G/OGintjDc8XajQS4
+bhvlbfthknBKY96MwibqxDRme9A=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/ca.settings.json b/cpp/test/IceSSL/certs/db/ca3/ca.settings.json
new file mode 100644
index 00000000000..3d8a78d87b0
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/ca.settings.json
@@ -0,0 +1 @@
+{"validity": 825, "keysize": 2048, "keyalg": "rsa", "sigalg": "sha256", "crlDistributionPoints": "http://127.0.0.1:20001/ca3.crl.pem"}
diff --git a/cpp/test/IceSSL/certs/db/ca3/ca_key.pem b/cpp/test/IceSSL/certs/db/ca3/ca_key.pem
new file mode 100644
index 00000000000..b1d37a79efa
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/ca_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIKkDBSMy+n8sCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECAR3uLLI7tdrBIIEyGDCyS80xpPH
+wtcR04l/6LOeGKs0EF4TaXJp9uhBJbgWhDTHB6wf52kk/5qguYgBDil2uJHscvQO
+cNxsUBXFrJT+TRv2lsx+KHPRE1WLHMwxJfKju7lvKjf44E7mVcvZdB3w+CG/zT+D
+XewUdeW9CX0txZU1B7TlcMEVdTNvGiTusZKPOHIPxt8vk8xivif4OrCAl6UHTdUz
+K0T2R+EQwxPtnQ5NWwci5e3eyGCWbhKlfV3stvqeHgpo7BkW6MXO9IoN+2lE8uco
+ZM7Ncmt0NUDP9Hy52og9tcwi69EyVllfujkV5rcjDBChbJ7iQ7zRSVAxZTofunfN
+s13UD7gdj4QRV7Hz0WLKEbV0Qbrk1m2Sfu0RMZkklWORk3eW3uWO+vufeq7Dxt+p
+3PXJeqOP23izmToq2AcP37l5Z4QjxWMTWEGmCgpmPvVXFlH5MLDvHMj+O5ysJGy6
+dcWWTwhfGh2/pDEi7xb21N2jiDM5hU+Egl9oArWJep9/98rB/GFw+daJo6iojGM8
+3DdWFVNiR4i+FzExd/ZYvVsqelGi2Fe1m+vwt/YLhIWFDd2ct1pWhBkT5VLUv2PA
+JgDRi1Yoz0Wqwg3J/qkKxaJ3r4yVWQ2C4eSmCc9wDs9/H7eGt6rztF2am68UAPWR
+uiyXVxbVkcQkuV4XsrnCqrv7/jQzFch1sCfkauuhQPfJxxiNHruxJGVIpTACYkYw
+Qo8j3uV1e8DKirXjokXUagBFeaf+FJTYdFyaQ1GFhIbUbJT6EgIfsXdwKuCQDa71
+iTp3v4Ed488y0gw5oaa3DN9SkUKaDIjC1y+IutI+uvEh+i09n+a8QA/AQo9wTng5
++JHkCQUP6d4COkgo9/pSiCnvLF26q6EPCz6Y9qKyO59w76tbxx1EE1oJ8mOxpOZk
+xQVxqYYReC+ZrmMRsP/thfU/W1YxDVZlrULD1fpl+QSS359rYEbhaLqbfif/kV0/
+/ri7tsxRqx1eA1ch+z3CdiUBOW84TpF76O4utQPsUAyjc+OE32HrovdFC2HAyjPt
+9obqmKyAhjjbYI3Y8bQT9r9uiFkvIePQ45aibHMdqDGDZ48ovLJizreKBnbuEkAc
++8fthFuY6qGkuJQ6bGdMARlNqhEu/JY3V2qFJaKbER1gihcIY0sfJFYCmObhSwfQ
+8Q38zL2VY2KKdqyLJ67vufOLJ9shhR3YDbtLW863ok1hJxmFiHRj2uOhVTrxUSgj
+C9l+n+hc/ElO1zco72wDWsDWpCwdnWBgkupbMAGYycVQEASpnVlh6eQBDUHeQapE
+Z3tK53nf1jKpi5BCXHQL3BooYoBj+VqX/4pEASmZBdbf5QtZxuLIS6/CsgFC2l68
+cRGa+Zo5u/pqhAnDnavgBNCLrlN7Axe+HN4ljfo3W+xmxjrSL/gO05s3ooYHDhwn
+wum2izzyOwdR8cOWoHvpwsiIb8wr/0u7vtZm7GKwy/CPb3eukP0DABo7dweARRYl
+xNeokB2VhODgK7ytZ2qjEzUa4qiSaLTjVeVmZ3aT1voWTDsh43YS9oCEc56+u/z7
+yzw3SNYZw9kjQ9CuLCK+vOhfkeqtH5HYnYi/JWuWUA10I/ERrHwcyv68YJzlP0Om
+dEuBmgG28PAIBIsjGzoS+w==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/crlnumber b/cpp/test/IceSSL/certs/db/ca3/crlnumber
new file mode 100644
index 00000000000..8a0f05e166a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/crlnumber
@@ -0,0 +1 @@
+01
diff --git a/cpp/test/IceSSL/certs/db/ca3/crlnumber.old b/cpp/test/IceSSL/certs/db/ca3/crlnumber.old
new file mode 100644
index 00000000000..4daddb72ffc
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/crlnumber.old
@@ -0,0 +1 @@
+00
diff --git a/cpp/test/IceSSL/certs/db/ca3/index.txt b/cpp/test/IceSSL/certs/db/ca3/index.txt
new file mode 100644
index 00000000000..48795a6fe40
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/index.txt
@@ -0,0 +1,3 @@
+R 231220163232Z 210916163233Z 57A21DA2EFB4FA42 unknown /CN=Server ca3 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
+R 231220163232Z 210916163233Z A0285C5CA19F12A7 unknown /CN=Client ca3 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
+R 231220163230Z 210916163233Z 2E0B7C904FE14631 unknown /CN=ZeroC Test Intermediate CA 3/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
diff --git a/cpp/test/IceSSL/certs/db/ca3/index.txt.attr b/cpp/test/IceSSL/certs/db/ca3/index.txt.attr
new file mode 100644
index 00000000000..8f7e63a3475
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/index.txt.attr
@@ -0,0 +1 @@
+unique_subject = yes
diff --git a/cpp/test/IceSSL/certs/db/ca3/index.txt.attr.old b/cpp/test/IceSSL/certs/db/ca3/index.txt.attr.old
new file mode 100644
index 00000000000..8f7e63a3475
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/index.txt.attr.old
@@ -0,0 +1 @@
+unique_subject = yes
diff --git a/cpp/test/IceSSL/certs/db/ca3/index.txt.old b/cpp/test/IceSSL/certs/db/ca3/index.txt.old
new file mode 100644
index 00000000000..b4b620559a4
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/index.txt.old
@@ -0,0 +1,2 @@
+R 231220163232Z 210916163233Z 57A21DA2EFB4FA42 unknown /CN=Server ca3 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
+R 231220163232Z 210916163233Z A0285C5CA19F12A7 unknown /CN=Client ca3 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3.pem
new file mode 100644
index 00000000000..f890e690de0
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFBTCCA+2gAwIBAgIJAMClO+U8oigEMA0GCSqGSIb3DQEBCwUAMIGbMSUwIwYD
+VQQDDBxaZXJvQyBUZXN0IEludGVybWVkaWF0ZSBDQSAzMQwwCgYDVQQLDANJY2Ux
+FDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQI
+DAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJv
+Yy5jb20wHhcNMjEwOTE2MTYzMjMyWhcNMjMxMjIwMTYzMjMyWjCBijEUMBIGA1UE
+AwwLQ2xpZW50IGNhaTMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIElu
+Yy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYT
+AlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAN7aXld87loa/vkOw7s9Ke1W0F7F/KB3YYn4/Dbu
+TclNKNfmXYL0nyliWQXfU6tYG2NBP4WXyXbb+ywCW9TLunPlGeWTMCIIRrYyeX1c
+5vcx4BoDseY1jnfyGA6XL9edH6FGxgmtICCnd8Tv1KD3GXUh4yn48sD3kIUidVJ6
+nRH8jX7L+q79rHYmNRXY9DllN4HGj6TyBQsqycZxnwp2ngUoNoIDbe04yHSf18+w
+vUxULBgKnRAzRkvEe53RkCOUzrnMPxhiRCS42R2oIP3XfCS4TZN3+VQ2MJZUNSTY
+Q2+SJrQLSydzB2kwWspS0m82We9lp7rZO/CpskVNLB+d0aECAwEAAaOCAVkwggFV
+MB0GA1UdDgQWBBQ2IWakQdHX/QY/3/kxUmCt5BhBdTCBwgYDVR0jBIG6MIG3gBTZ
+qY5XtJJu2J/VKCugKJ9CAZ7yQKGBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVz
+dCBDQSAzMQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYD
+VQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsG
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCC4LfJBP4UYxMAsGA1UdDwQEAwIF
+4DA0BgNVHR8ELTArMCmgJ6AlhiNodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhaTMu
+Y3JsLnBlbTAXBgNVHREEEDAOhwR/AAABggZjbGllbnQwEwYDVR0lBAwwCgYIKwYB
+BQUHAwIwDQYJKoZIhvcNAQELBQADggEBAH04j5GMR6iUMjDyDXcxQ5/PrgEumjWR
+1yccas3CJgtCjV7P1e+ifNjXyhrKZyY88ivWcoveeus/TWZv8i8VuXmL2vuaImZU
+ScfTGRMAuweiSyFaFOWpk97BURF7sCQTlTtO7dZQII6bxACIZKvtFP/UBES7Ok0B
+hfSlMpZs4jxTutlMexHJD/MH3edwTa8DOG0oRpz658PgQJS6oSU2So/LRYbzOE11
+sSRU0Omkj66SIUPV0leh3euQ0jWreSLmjqiQnXSzALVIJ00i1DNuacZFmCTtQVLe
+ueZTaOC1wOYo6u/mII5ap7Y6polJWDmsnzfa2K8YVoovXqMihJeVyrA=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_key.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_key.pem
new file mode 100644
index 00000000000..40a86839cc6
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI/SXKuuy33BsCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECBvS8aeIYjWRBIIEyFpJU3hZQyfm
+R86ui4pzdeLaeHcMlninQT+ktUZDTIsWPMkZAQAypn8sqWfbHySCgF8kez4RK2lh
+H3GG36oXA6D+43ScWRIPSkf23hdsH7LXJE3+rNLt17xNWR8kyE5eQ5Rj4N59UO2z
+4vrV8YT4sg5iLUVQ1HmalztPWhGICiO/uAHdcn3ipa7jUH8/7NwAERNFS28IDrtP
+Z0bCJin2O9lAJXPWQB/ZRzrms/jY9WBPRECZro04QPiSFJ8D1oCBJj5f1OyHvU4+
+1EpaSY7uCvEE/ok/mQd4KHnahpCrqiKcETDWkVscFtzjZ8YV1Z3MPBc762TGp3YQ
+wnn4GaS703oBXdVw92REuFICqiPqeou9Kv9luI8xSVLI/YqEpqDfqNYNny4b63GN
+cA20axtiWCGI6oibXmXac+WYAlLbiFHL9FrH0PZzUVe6MPwPNwkP1EK2/0z1D7mi
+4u3dConPUOwpIXjSg3vbKz5e8racAnIXWOEekGexsn0VBkOt2LFVBR7Hrh+clA7u
+/UcQ2Suwm32LrtoOR5fMohc9Ct9EFEVZ36yDEf1iR2xH+VA2aTH8B6JVKxgVoDyw
+xRGh0Rhbb/zc/ouxRrGFGClb31j1RG/BRS4o5Y8NGbC2MUXZfrlbpmbzvVtL60fO
+rLuwONHW+Mcv7j6ZnMhDsXK7rYVBARciGAEHT+AyUwmHsx6GshUe/YAVNxYuWEm5
+XRcQtNO9mVNvgofmEIiqqH0zjQuI/lMOSadjEg7iUq7oOSP0Ir9uOz4MxgspIk/j
+hV3IwtVceNVgRAIf7XoyY5JHBcYXld0lb/xeFD03GliqeL7XayL+fQaDxD7xWLzQ
+yWTsGNL/OhTp4c2AyDrjzddRN4XmiEPPaXdCQISQkwMdbHQKHWfU5jfEcdIoj4U+
+42+Q0q1vx1VGQy4hKoeF0D2z2gGyaV2SV6gjVgRfez9C6Ctqdfkruu6hSeH9cViM
+1wjOGQaNCROLXDphkDVLHxDYrx0D8ZRINhGg3rY9/kxNwPFaPbf4Ok/au2PcS5Q5
+WApDSo4arIawhOlP4c/pb70IKo2WtZpX/+k+GqfgQU0ElJFsa+hL2yE3vHwJd4d6
+ja3HVmwlFpXxXzNBCc6sA9kyLE81hM6ygIi8dabCz9xYSFAw33Z3z8kOiNDnZiAB
+ZYUCz/gqfB8amxaxxytU/uUXv5aGeJOEXnnNd5Zx/M4AIHXttJhfBlb85MNRKzlj
+o73mrsx1VmEc3a4DsB9OhsZ51prBE/ZJTo8aS8ja26a+OJv2MbFDkNH4ZuhrSlEm
++94SwmqCYJixj+y8AW9W+msjIDPZPKcd7nSJAIkBpUyK1OmIchmDYbLzg7I+Ie7J
+DSwENMAhFxP/tQwo6vaI8e/Bnd0T0xqlscmAVI3QU4f2YSAZDlZhmZxsicDQfNGL
+PGn6qjDkK4EIi9rtFuNc1uRuoIhipSKO5OGH+wPaswA26YxQp+YVlirQ6kYLyt17
+4nY90Xnse44s05DOGP7pMkENUnMpDamV/HEZ1J65Ua72DvZijjvG08wR1/CQHMz5
+GfUjXCdo16F4ngZFzR9sNfapyiVcsEr75h2xiooEeK0hOWGa/oiU4qXo4LC05IMT
+yExU/Q7/yYRYbQc5Hpo/OA==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_revoked.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_revoked.pem
new file mode 100644
index 00000000000..f3c521da6a7
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_revoked.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFDDCCA/SgAwIBAgIIRKjFm3MTxW4wDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNV
+BAMMHFplcm9DIFRlc3QgSW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEU
+MBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgM
+B0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9j
+LmNvbTAeFw0yMTA5MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGSMRwwGgYDVQQD
+DBNDbGllbnQgY2FpMyByZXZva2VkMQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1pl
+cm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQsw
+CQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/VakNnxmJUtpuzBS0QDQrr4mRXajR
+TPfWzPU2jy+HoxxlGNc0RUO4xbFSSU4mobVMbmaS4HLC1/Ca6dcTYtl0HQqOCv2e
+OnN03r8bIdciXpBPnjK1vnKz0V8ljOK16UQs/Mb5kMKGIlFWBUlF26/YNLUPb8++
+111xHbNagxC1EnOb7m9ZVy8aO/IoljSGHRewsZpmxLsoVKIseqeUuiPDRPkKtkcl
+cBFoEA0AYuNK9SVPTaKy9Ke/IoHr0Y+iJotMEfkCQEw6mCALHIaEhs/iOTQOvKrM
+NwhnYSqBERBnrl7vXEuW0eYuhYrU7sWqSg/XMZ8sropHsfb+xus6DziBAgMBAAGj
+ggFZMIIBVTAdBgNVHQ4EFgQU39cc5usSDwzOwlFeY/8i7ShcoukwgcIGA1UdIwSB
+ujCBt4AU2amOV7SSbtif1SgroCifQgGe8kChgZSkgZEwgY4xGDAWBgNVBAMMD1pl
+cm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5j
+LjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMC
+VVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggguC3yQT+FGMTALBgNV
+HQ8EBAMCBeAwNAYDVR0fBC0wKzApoCegJYYjaHR0cDovLzEyNy4wLjAuMToyMDAw
+MS9jYWkzLmNybC5wZW0wFwYDVR0RBBAwDocEfwAAAYIGY2xpZW50MBMGA1UdJQQM
+MAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQButQ2CYqcI5ZB+r8tp6etL
+6lFwn9PPJd8DBI58xx1nDYnhmldY4+4tK+sM98M15mt7KRmds8yG7Yonw1rjMpYW
+OfObQsG3NWmEBYF2NZJ5nLMGfGqc1D4A3wvENkcBfGC71WRvnIylHh+bQbNdSpJD
+ig+oNCfrXUltVxcZa/0NqwNVAhJWzeyBYZofl9CJZusaFGnt2NXE1Ur0fnkEtz5m
+iw4Bw2k5uiPGgoqIlfQWsfN1BJy16Dnp8PoI4fPl83EjfMpQutN/t1WK7X1jwpu+
+CQycGkW2wFuA9ZRKbVY7Nft0QdnYsMkg1mbbVxAL5KOcSmkBt/W+WcbF6EaNvrcY
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_revoked_key.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_revoked_key.pem
new file mode 100644
index 00000000000..b03a1afe964
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/c_rsa_cai3_revoked_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIzmsPjJOboPECAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECMnvufiRciRDBIIEyFx4QuA9SnUG
+n4LCQe2u8Nee9zOnLxJkWHNQoyG1yuJT9fFg2Q+sR7gD6NDBgK8lo+jABh9XQ5cB
+nwzv/8bNluE6p7ebmt7YaZMncPImovABco4LFErIyzrasU1nl/f6jfFe4lgR9Qki
+cr6Aub30vc9Of3b6/skZukndxYNoIu+u/dtKrqmPYt1C7+F+Oa266A9tFrGHvWTv
+P9FTErz3mQzt4p+YVSxFGsNTQ5IcxiTxJZPJwgePBfnI1HrRT13mT3zhBbxTQgi+
+noQe6Mpnf2YFoRS5vfHCv5jkXuQGdNqF6MJAdOmqY7iFdrfQZ//M1EKltnxGZDL6
+WMdmHRdLwBozgiFx/2VlwzTkjfcTrqEUf3AvfU7aqL17w7A0/4bA7riJpfophP9J
+gQZFqNPIzeni9V3M+oixKsmcVp/I1bygphn7YBMp69nCd3FYWATa035VdNRhCXQj
+/W4BhoP9CfHbxD4H00XOmkDQj4RR5uHGzzu9fkb2DACYUi5TA0CnC+Qo4104MsXv
++CtqKCXfol1C8QfZrxOsM4mYiIvK1OvnIXDHaM5HuCmrTuUvBLHULlagr2GJT6wp
+2K6RM9KMGk8U4qqXXha7GgoDwe6zfsIM3k6Y8m72mbPplH+ZD2+ukEZafL3x7PeO
+SKchS3RLW5+X2iGCRnoxdbQS9Yo9I1vp+XEXVJadTyiS39uoxHS7F15GGryKXWLk
+eC2JeDq1X9o7LyDWm1JcUCCFxIfEd2Z8NkRLGxPe/evl84Htmb8BYKys9S9zpaHb
+YqePwplikpwTwU3KNJz32lHih+mPsXjXI3JfEiKmXkvkoj/9jBQpcz8jqUUFy6MI
+639hSLSv1XM1Fy9lQLEdDS7CisUTkGJJ9y4JO+BoCLWIX4Dp4WLFpyC0qx4i3sV4
+Ho8KTgC42BMOCYyb89djFugXhVbXakkjpvZ57T9hLwo92QBp6VOgFD74jbCluZaf
++XYp/iprcbL/knqrb38jDNvJJ59xhFSzDKfm2Brnq/x+os/tX/wM8S5ElfHMrcrs
+lFdI225i5GyRNVqPTLz3j6Ml+IwUDJHoc7s05tuEWkAaJNw8xX7/C8CQO5Lg4s/P
+AO/w0Nqa1D96i8QILXsmfcPEIn2XmWSos/j7L/Tpo6DZ7kwnghOqJl558ibhwsnP
+zKys8shLVX8VZ2fmyYA9c5Eb16jg/MSejUB4giisSFQ1a5LSGJO9HCLEky9Tunrt
+rfWTJFKeLyva0KLqu7s3RJIzJQ6PH5XJWM0W1qmJX9UJyD0RZn1ujvC17l3G6+eq
+yhWddDpQ2WN0pxRPDprniVxvD1DJsdNgynBE/qBpZdf/IOmtj51WjTNMUrdPC17S
++jecWC1WiQ69aROWYaO8RIWiDWj1ifeEbgjNRIW395dDmqU1/PKla43ktIS1GhwO
+XmkLOpHAhlgcfuNOb1d4+RdddnLsAfIg+bdJV1deKrNl8wJ5g+cYxYC8dktX1f1k
+YjkCRSd98kkvaDrj8P/KBEWhUyS7Si8tWhA5IUZ+a+o9+ZAKInx1GyiUJUP1XE0c
+lnAfgYqgkJFPTJsWLBIaRJ/niLiicfjdoLCjy7JNh1cMNZetnjTd+kkev9OeutTh
+0caitpCxTcPtFtD7RKU69g==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/ca.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/ca.pem
new file mode 100644
index 00000000000..d5f1fcf6a32
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/ca.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/ca.settings.json b/cpp/test/IceSSL/certs/db/ca3/intermediate1/ca.settings.json
new file mode 100644
index 00000000000..17f2f6d08f3
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/ca.settings.json
@@ -0,0 +1 @@
+{"validity": 825, "keysize": 2048, "keyalg": 6, "sigalg": "sha256", "crlDistributionPoints": "http://127.0.0.1:20001/cai3.crl.pem"}
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/ca_key.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/ca_key.pem
new file mode 100644
index 00000000000..39663b0b6d2
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/ca_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIKgW3nxPNjWoCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECL9TD+V73GOBBIIEyOC1dfmJjiOy
+UVMrgr+4rEmqSvKngoBL9HMBoS07JjIMIXBWUfjSO1N7I66rHmHYCvPgCp5utvSl
+/LZfOMmkt4qtGCIVyqSRKYJxoEDnvn8n5aAJJd4rvOuVvNip2Z9NZ1A8sa3W/rPR
+25L7T2ESdghCW+2xdPakVx4T/6alDAp8FIrv128gMkoF+2Xl5g+W6B+NNakX0CM9
+fNZLGRl8Qu3Kk3NlL+AQR+svw+4X2JQ2YMVOPAev5LUFJbdvZfpqSnH6aTM6kfNi
+2yqjuCn6xJg3m/1Q6BZzk1e5oDXbwvuuCWnnDeqtNnZ2uzTIGxn4VtVeN6axKm5o
+39kqcPatG2vHguFc/5bCBHQmB7IpAuCHNnwJiOgirep1bUxFRKzGNyCUpugQTZ8v
+FChJJAjdgHJlKO+0lh6saGzP94cMH8yQ7LkP7sBifsd3CcmaLCXcz2cN2tg9Tafs
+PRS4VXW2lz6g7WvPe7B4H/fnvx48sXfXOTH6TLit0jS6+ViHAcPAar12HNQKy2CM
+7WmyJBX69M0YvqEpr+QTGvRLFcdKtd7slLFV7bzxHoeVr2pRsI6Yji3WDFDSqCdk
+VdjMo812qNTA6jjZmkP7SE5SFxxDQ+UbjEXF4JZdz+7fx5NUmFRQcYTkt2AicmEg
+BmSWxy5CDaMy97A5e2nU+Tc8JAA8DLkb76DpKiF975aSvwkWcZUuLCGzhLj1l6BQ
+fqG0zuWlgInmdyPcTYNN1lXZC5PUHqu0BmEvKcKipnuyEP7pLrbWM9bxXsCwEMDV
+73SOZPLOdAz9iCPTgoDolrRC/4KY4TsXkBOauCsIS/bRwK9xjhJ+j9uxPN8bXxWe
+wH3lPcjNEtadnT2Q9i3PZdBFRgSL5a9dDkMCfGIwoOV/X/URmDLPXWQMLS42xtne
+vCTPCeXnoAIZZt2VGTgOfvviapxf9/kPBvPBnWZ+rKXFLeulUt8Zr8RKEKOEbGFD
+3TTguup7tqe9mjMcyIKMbRrL/axOT+xEuN9gwO/ucyoluPI9uEAZBigZE02oyuME
++2yoWkOvdsxSOXrYGGomOy4o6Fq2qd/f9r2Q79NHZr5uP2gabxnLz8htP6Jy/1X1
+u/U/2CHCc5j74+YwCH1pQglgFZbVeJpIfFiSLf7+9W9QwQqRQYpdf5In1vDv8stu
+hP9CpqjpGAXxAPrZE52rM/5kaVkPQtouxuNNOn3ZZB4n7zNxLqO/bRBi+l0OVjp5
+49LRA1+dBixbtSdVl9KcDMyHksSr86N0qpWKJOBYVbvF7+ypy14CIggj2/10tZ7U
+OeO368KEK/Lln4FFUApuirWzLrmlzYKGi5GMcacSyqZI8hqZq0PRT9Mp55KwIT6k
+5qc0LoDeOHrCFeNQ+A1Tb/0Eq9iEiyO7U8chGGDd4rqxY+8UV3v8cSsSB+gBQG+6
+bz6q19Bimq+2zt1Zc6b0Ei3eg7A7n+Z5Qv+YyKwjpgekCbRtfcKornUeDERrX0Po
+28mWVGqzmDOzHzkqrPRXKn4DaIKviH+7ldnzch1S/9mn5D69rrWNq7aUAhjlaD7d
+x28qgmFUnPfBnPUbkUVfdSijCwZx1jfaSW0zmTgCmCZyu1LW414ic8cb6YSWFcqy
+Rzl6DVEb4P22oHEngzWyKA==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/crlnumber b/cpp/test/IceSSL/certs/db/ca3/intermediate1/crlnumber
new file mode 100644
index 00000000000..8a0f05e166a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/crlnumber
@@ -0,0 +1 @@
+01
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/crlnumber.old b/cpp/test/IceSSL/certs/db/ca3/intermediate1/crlnumber.old
new file mode 100644
index 00000000000..4daddb72ffc
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/crlnumber.old
@@ -0,0 +1 @@
+00
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt b/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt
new file mode 100644
index 00000000000..890fd2747b4
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt
@@ -0,0 +1,2 @@
+R 231220163232Z 210916163233Z 52AE617376A913D8 unknown /CN=Server cai3 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
+R 231220163232Z 210916163233Z 44A8C59B7313C56E unknown /CN=Client cai3 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.attr b/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.attr
new file mode 100644
index 00000000000..8f7e63a3475
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.attr
@@ -0,0 +1 @@
+unique_subject = yes
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.attr.old b/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.attr.old
new file mode 100644
index 00000000000..8f7e63a3475
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.attr.old
@@ -0,0 +1 @@
+unique_subject = yes
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.old b/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.old
new file mode 100644
index 00000000000..351a41c91a1
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/index.txt.old
@@ -0,0 +1 @@
+R 231220163232Z 210916163233Z 52AE617376A913D8 unknown /CN=Server cai3 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3.pem
new file mode 100644
index 00000000000..f7c1b0a9906
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFBDCCA+ygAwIBAgIIPbqRm8UBpR4wDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNV
+BAMMHFplcm9DIFRlc3QgSW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEU
+MBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgM
+B0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9j
+LmNvbTAeFw0yMTA5MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGKMRQwEgYDVQQD
+DAtTZXJ2ZXIgY2FpMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5j
+LjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMC
+VVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAq7Za8rg/zbdXjUZfy6+eTxcKGRf8Vx6RxTdoQ5UY
+KsSAd6GkdqbpF44jZ7M/oyWgBTtAt32YmhrVgmNfLPaXaabGhO5NlvE65j6BEQJd
+v1p1dw2CQmj79JrZQ0WKrrFqmjS4wVmzDR/c6KvgR3hLkoJ/t55JX57/SWmJC9JR
+gozzQm9Skl0Z9kL9Sop68+xbeKHbZEk1Q/sQINYkJ0Rh2P2Xcv9S+0UKuxA6Ktvg
+GQYh1unV0UxD82scopgbwy0yVspLySzsjz/OFs+CCjwktW2R5EFiP4d1GoQyKemr
+Y7XS2kKt2Hz8yspYEUZB7HvcoXEHXaGcp/4BFSQ7X8/35QIDAQABo4IBWTCCAVUw
+HQYDVR0OBBYEFHHsPtwtb8iiYoaMrX5tAmSFb3TwMIHCBgNVHSMEgbowgbeAFNmp
+jle0km7Yn9UoK6Aon0IBnvJAoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbYIILgt8kE/hRjEwCwYDVR0PBAQDAgXg
+MDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly8xMjcuMC4wLjE6MjAwMDEvY2FpMy5j
+cmwucGVtMBcGA1UdEQQQMA6HBH8AAAGCBnNlcnZlcjATBgNVHSUEDDAKBggrBgEF
+BQcDATANBgkqhkiG9w0BAQsFAAOCAQEAfkhoJzHDCF8NBUYSZX/3wEM0w6R9Tegq
+b6gw1/neYHbGUCOAt9eWhFGAl7xOYwE8GAWZ0R1Y4WG4gxkqnjnq5vi8qNUYYImr
+abnjAdfNrCih3ArBU+xrzHkKd+eYuqMLLkQhh9h9xrZqMQsucrH96RcfSYBOAiIW
+ju6w0CmJlabK/0jO7V7ZR/hZ+Nj7819PWu/XDN1EnY6oe5hHAUBCoT6ieDgz+4lp
+PSVz4I3Ql4OJVFjBBVg9A/pP3tTICFdgJcmo4jn6s+7LIbaFDR0mHneN1ZPs1CUJ
+FPzNtA4qV8Mjv0AxzqBZVL3ypQTL/Zzr9GFOCT7OZOHQtXNq5+/mZA==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_key.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_key.pem
new file mode 100644
index 00000000000..a45718f1a79
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIq3RBISDM31sCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECKhL20StUckmBIIEyE0ObgjPWp7d
+J2Lnu29ijRx8OE65BmRuKO/5ffvH0HJ4GU/8cJ7ie2TwNC3T7qTaj/tldhMNJWjx
+TEtABI7avqwbaZlyAyFQZ5E/qUZ9kmLkgwdBvvtJbr8J/pV5vLxYtwgOkFlarZMo
+B3zziXeIIGyqy4306wAGYEYys3+79dwdWMtr1UCO3iata8RH/cukx8LtjEo+Lr5i
+eqxhbRsmULAvp+HBMimQdoEGblEMm3Ag8Vba1KfchTYbZnOAjwdDNoOiJtsSFUvk
+z3gvU2XS5kNl/PKkmk/DXBvgWRzRVvAdY4Y4JuJsnraGDZYuPhUcoJ9hutIpIJ/4
+BMS1vrJRELHDSaw6E2LSC3h4Bdavk9GZN1nl2VhoK9zLBgdbvHLWgX0lsl32+kxj
+xcPGJMzay+PTvLD7ZFa6odVmjRP5JBJqOPJkmwVcnDFNNCxvBvS7hdTPvar6/ZTC
+K354Q5WNoLO5aTL65iw6ZsAp/HKVkarPUCORUruvdOr+Jz9QcHVqdYrfYgs+FkXm
+cS6u33sle7Q8LT9X8MJU80OzcUGAv+rHJ5PFIWAEcu+gJ8frdinq915bymKiMN1u
+YdB19rFWrGNariJShGN1NUUiM9x5gNSclcBSzpAQlkvMB1JRVP+uDS2ZNrVcpjQu
+Qv6KjgC/roq5zr3T5ywGYBxFj1btkz+Q+jkXbeMQT3Qbhb8jqjjWgZqLEj5o4mzc
+vdIXVHiYaNBAsGzy8/xsQ/jrd8FHhbWBe7S2fR3FrrQGZp3+3I8XeWzsPXebhOO1
+k2iJbBpRz1huEG6G0nADAZLPm3ohhGDb7/1VRPONG9ReO7YOM5boFcHqpVBYMYrB
+4g0id2NjVldVq2norHKMQNoAOiN0OJDJpDZwugbVBC2yy8RsaBn8OZFSwaX8GK/T
+Ee0ZjEbScvSiFh9apo841wOpyeRap5YTLsw3BjAwVJsACI/XDuLLylpVygg3/Tzt
+roOw3DaW2qtbM6GbxenN80pswTxswcgpbEyQIDVdyOsZE729LTluZknM5oooPyx7
++BZKhg1oxhoNq21eTDR7lUwr/gcYQs4baMsr0jG/EtzO8tJxWsfvIHQ6G6H3cyMS
+dbH6c7zEN91Sm9XVg8XMsw5eZ7qOsMxD54fQOG8p8sEpvy5ogolYtlRHyHqYGBbF
+zfPcs9HuguObf/loDKNfxSncHMX8JkMVWOmR1G/yViZyfZzts6TujTMqCw57OonZ
+3IJw/XjcGGTay5nu+pGoYPJsUesP6Dg/+gS8JRxGYxXu7sGv5YN9vJslMT8/3nd8
+BjB1DJGVG9bElFjx7mXQJGBuU4GI51BzYWzEgLLMbZTvL0GeeEuZP8P/csi4k7gM
+4OwqNAgN3LcV9cC7GV2PjsbEyudlVupcX9u8TIj2wa3bfb0n/GDJzSbwO0FiBxGv
+MJJCoyuvch9sqSe7FhO3Rb7H7dXtWcJ20uLjDRsQeY6fM9MwlmN8s3/W5zzyLkCA
+528LkQf+Xc1vk8gW28z+7HA1sJmwobOq+cLhOFMzvi3OKQFwr8CnsPyN7CVjas+S
+XNnmXvCsoZZjUPUg6dsinYZ9mWDx1arBUA7Sp/wBXHFbJFJT51bqXeM4BjT6XgiS
+CGN2ulYvV+WjPE8oDiMSvQ==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_revoked.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_revoked.pem
new file mode 100644
index 00000000000..cadae49e17e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_revoked.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFDDCCA/SgAwIBAgIIUq5hc3apE9gwDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNV
+BAMMHFplcm9DIFRlc3QgSW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEU
+MBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgM
+B0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9j
+LmNvbTAeFw0yMTA5MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGSMRwwGgYDVQQD
+DBNTZXJ2ZXIgY2FpMyByZXZva2VkMQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1pl
+cm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQsw
+CQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIYXWIGMmbgMJ2zTuHMtbEEKBGpbnk
+uXmwPCzQkUsnT2aFznuW7RrmXbzYEXIR1cz/o3VxxZYuciMbicxp0PfmpxEFWV0h
+7u/GSoWqQtBUfYy3ksHd0zBYKVs6bSSdOLDrCZn1XLUlq3FwBilkswET0wdIzJEH
+wlcmDnvp8UDKqaiQLydJmlgKl/cE1Qka4dOlnxXWQPo4SdT3XwJq97gXO1I/eyi6
+A+5417a9MvsbDKWS3wX2WBkYWr6eymkTuJcXdg5GboENO8nRtcZp3AawIcy6/pRu
+tnaFsEdBnZpsYz0QS9Ay/8enFMtMOx+BkbYC+LoSV0CjmUtstlcTE3DvAgMBAAGj
+ggFZMIIBVTAdBgNVHQ4EFgQUCveNWzqlA4WoblxS1vHuePUhW/UwgcIGA1UdIwSB
+ujCBt4AU2amOV7SSbtif1SgroCifQgGe8kChgZSkgZEwgY4xGDAWBgNVBAMMD1pl
+cm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5j
+LjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMC
+VVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggguC3yQT+FGMTALBgNV
+HQ8EBAMCBeAwNAYDVR0fBC0wKzApoCegJYYjaHR0cDovLzEyNy4wLjAuMToyMDAw
+MS9jYWkzLmNybC5wZW0wFwYDVR0RBBAwDocEfwAAAYIGc2VydmVyMBMGA1UdJQQM
+MAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQBo8hv2ePQen3oYVoyH9mda
+BhqGouFzaaHlIz1JcBnF+eBFieboBFh68g3QC8jQi7A6Rbx9i31zHg/v/2A043WB
+F7NVcFVf4j06g8YWN6Nb2ROhR6WxWSu+3OaWCSjjn9yjqPDoPDWjSPmoKfHUVFQu
+Ym3RWl59e9dEPcve/H1jZfLeo5QpSFc8fLnUvvTJLkuuWWVH5vtDmuy824fIM4fr
+s2C0gNAOYKMI/s8SZSKpfjrqrQk55pP72hHS02E1yc09dxanla2cP0xxBiB/u//N
+Uj2hu1nLlTmZ6j+BR1A0RfpPKmog38DF3qyyI2ZZooIf6bRICvCBJwbfqz8DabvE
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_revoked_key.pem b/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_revoked_key.pem
new file mode 100644
index 00000000000..f373624f8f3
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/intermediate1/s_rsa_cai3_revoked_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIFHK4JzgKnmICAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECD927u2FDA4RBIIEyG80OotoUV/J
+YaFV3nBBIfMOUg0wl1WxU9arW+W+wes3Tqu+s9YjMFcyH8zmTOrbh1dRbACDDcWb
+D8QHgr0NvKYjtM5AVkTb7csDrXjthZIaKY7EWKLqO38VFOK6q+KbVklhn31cZmJf
+UaBMS9S38EQEdNRmOSf/BuElfXQTB8uTHlfm026Vs0efF7KWuHkQiC/R6KS4Oky/
+y5IL2GKDR+57c5oaug3lJ0nKNbiJfjmIFfZoN6hiqfW+U+NA99tIOykEpQPfNJj8
+qSzAv/u5yE5ucTD8N3Yks0wXLSvc9ILkcKp2UTV+5CpORrbN5MP8+B7V4QDkIKRh
+1MOvytFlbYyQskPhleiJDxlcaqjU1/SbDBAFjSUxZDBJi3735hbnO2+bhCEOCGz9
+qdrSAURmKsbew9h2Qy5I1r2cG2MDiLl9AVIIPFRYYICtH66ZKvSXgtVXPTAZCYFO
+UXKPmgtKHpExHQFNuhg8TJ2V6mRlZ9HcdACDOsjA6vJ0zOn7E7zfF78nWVvqGa24
+/nir8MEOzmj/0NxhUV87aXmq+ku2VPwpKuaBevOz6CYa7LczqQKf3lC/s76IWfes
+nG9Wxept9O+akopvtYI7DEuGMNCVrCvpUxAS0D0c/7Wi8PPPoSstbTCoEgNNUaTO
+zvMuA0BGcsRytA1GUs0QIN8iFbFvIDW+VqG+XOhKrR2BPBMFXIh/kDF4+4JkN/IY
+ujsOXWvi1tKQNqUOsyo1VPssJYhVdT8Szdj/Y3wicDzOUEIJf21OuPr8IwgYjDMV
+RsWzVX1i9mzv9+hbEgwgOr/4PXJtJCk7b4EzMRylg8yiSad60cdG7+FYBKK21qa6
+wDnaWvSoSANpSNh1g5eoHJYlt1aqKnONSOfN0NLn3Cch0E3X47zBJ8ot61lvuQdg
+c+gBN2iRNiJl0mHetQqTT6UvMeZ4OzVdyJpDhf/5dtxGbW1TYKauvCLRuvU31f3Y
+PBwHPXFDN1l7vDAPIjE5LxzfZQSWobjnXtAN5+0OjReRzAMLqgOKOUWokSOjquAz
+wFy8SIHojGbIfyeh2Xh3FsycCHR23UVQNJ2eJzEqJ5iP2m8qRSBD7JpgboE8PkPz
+CxdTodnDR8N9QYE2lJiwNRrtNXn16wHu6MCgzxW26HkOCeTzuTMUga5Dh+f8HqLP
+Q45TNKFslF6dX0bJ+diGEaBFAtJpPWzMqLv0bjqcIbqmzfvCysoKuxN0QTWCSA0u
+7x3j8HCACMndPvJY1BAHQQXgxfaEpHHrzFTbDJWKJTlJV88jaJthzMC08ZD5LaDV
+5NdDu/zlaMssnudKGR0s91cyBHLmlOsIWWmOg4lUqbt5y4q2fdJtl/z8nRJ3cMLb
+09aPPkWKfENw+6cWhevnr+Q7DtCzoCorLG5XPBVgmresCXsksBqafltSuLPyzyNk
+Ix0NXdRpYjwkxmxqzsPoD/L67mxTYVrQ2+Fcdn9xRy+BUooDb8y6eLFevv2W/cz3
+uNFlG5HykvBgK1m1pWUX+vasbD1LVs8Iup3zCZltUQBnYMZCc4QqD/KoP+IE9i3w
+VFzuHqvuNo8HI/x5VTqRs9zP4K4qcxYBrlvpkvlZj0EPkKS946L/+NG5uXCnkoii
+/2m3TkuIXEjCRV29r5eGYw==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3.pem b/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3.pem
new file mode 100644
index 00000000000..29770144830
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFFTCCA/2gAwIBAgIIEABmG5rTM9YwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMloXDTIzMTIyMDE2MzIzMlowgYUxDzANBgNVBAMMBlNlcnZlcjEMMAoG
+A1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRl
+cjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEW
+DmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+2HZXgiVSqgtdImhBonahVAED3pSxUSVV02UIdQ0U+xgOes8VWNDixHAkKUFoAANM
+AdaN2VkEO0pIYFBvNDxKibnmvoJ744txg8cy0Zlcdo35CCii4HDetECWBwKU+eoM
+VR0rrQzPlICvUbd0IrzDkZsVHW+byPmURMTlGs+Mycy5MoPnbH4lDJYwXHL7q35S
+GQD+X1knqltdj2eP0GHdQRv6Fq/VwO65mibvKn82MrxyiLpE6siIjqr32N3WZd0n
+ViT9LtrJYxbmIjf4Gdkr0le5gEf+b7lZqWBfv0imK2ILqJeJGhqyEot1DpFIgwMU
+jV13bvAKxsZUELibFkBysQIDAQABo4IBfDCCAXgwHQYDVR0OBBYEFB4JyMyG5Xzt
+lchyfBewWbJavpMBMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQrCd4Qj0N
+oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNVBAsMA0lj
+ZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNV
+BAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHpl
+cm9jLmNvbYIJAOGYOElEzDTWMAsGA1UdDwQEAwIF4DAzBgNVHR8ELDAqMCigJqAk
+hiJodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhMy5jcmwucGVtMBcGA1UdEQQQMA6H
+BH8AAAGCBnNlcnZlcjAhBgNVHRIEGjAYhwR/AAABgRBpc3N1ZXJAemVyb2MuY29t
+MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQAZJXf+vN3L
+EO5fATi4n8r6u4u/NAH6KVW57Y6I0UrOx75Hy4SPdm/3lbMOAo286py5VVypGSfg
+QEy3NHkN+ophanBoODapBvtcWVOZE8D6OyCTZxrqHWbl++C7x7EecmRNTwapPBuF
+do+fUiclwzg/+LyjlxxCU0uDn0FfJzq/Bi+y/tTzxBrk84d3vopBW9ZmhAhZn1WH
+zdBh4f5axcmRgBfcCCILOjb2BjxhBaZUzzrNvUKs1/v5wEd4kuLZyxIsawIf+dLV
+L5spgIVNr+ItagGibzetgXSq6v3i3Q5zxCxWqERuCLElhE1NmQAyoxjgZ0GuerXy
+yEauD7Avxpdg
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_key.pem b/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_key.pem
new file mode 100644
index 00000000000..c029e5024ae
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIsOGEAp9tgWACAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECHNhq/1JAjouBIIEyLsvD0zE4KOD
+XaNUfwhmfjeYHHj3AYsIQ/kTHAZEo73f3Pyyx4Ann01vHmGzrnssPSqP4mflfCgz
+A28HHTSU3PFZdLuIMKiAEuMxFChCbpcWjlFyBrCwy/nMEzEfcSVhJHIENhDn6Jrr
+uFDUtzRCY04olRM+5mgTfGegC1CPpcAdUjt7QQuaPiDJJxXbspAj+lMIQc9ZSvtm
+hFfxY1JfoIk7DeZ+KBcRotKQ+NbOAZ1zGzXV3qS5rQQTXyFPrdeY3ZWZD7i+YU9q
+u+QNilOY6687Sj/88/IZApnWJ19ir6Rif0rBDyiec6G09k4EtmHh3EtSNQ+hxMR9
+Ik78AN0yZaqzZHAB2+RcDK/Jjn/EZDc3QQRdZdXOgEWmtExoB4PlrxEV6WbccL6X
+qKfPu5UQ/I5Qf9mJe5BpSmi8EOCqb7Z+zzwlgfN9W8GBiJ/b1sqaGyWrlDGcKQvq
+yfnfaFoYP2i/Fwbsr7pVikcwkRbu0zjmJqaRYY2Dty0XvYjMnBQEQ5jW7t/U4EVL
+Ld9AHSLg2yOfZ32ogPabxmogv8Wk8pQ14j843MPzFQEl5gKfJWmP34XfPrOdizH0
+ykXBDyjgP2oTYa06U4rOgscLmJ+I6UjHn+mbpHjHhvRN9zu4XfFrN6iErkKfmyWM
+yT+iqtVbCl1Vnh/lxskTnwxb6VK4yRkU1XBUMsXhdoNro79MsaNyr0s5FYGCeYgi
+xFxpBJEfNlMuWXkzDLz0CQnFVIUihFySNDAZ+S8gn7Qb0eGU3cBephGnTi9CEtGS
+nmTue2PUwLT7XxIMn38mTBEK1COFeI3gd7u3OSUSqY8XE/mT02lx5is/sdsqJuru
+L68/QkG6qq2hRNWMFlCHbe3d/UPZS5YMvFmJocNj6c/Y+fYgrJI3K0cIGqGzjrZv
+lWF8WKg4jbyw6A89zylBqNgTPDklX1n7jmEhh5eTTUY9PhG9QCg9Omxb5SN8veqr
+JOxr7mUQUTG5TQNq4/TPjDuN29r0hBdr9UgjyxlvyHM5Ddl5+zojpe9a+LqXygPB
+eILcNfoPAXtukPfTU0ZSuSHSjPpPG95rkzRiJQ+di1M3pfD/Mxzj8hXzJJquAS72
+6Vlm+7xK7xMHgQsqdsZPghRUa/cthovlLe2rKhAFnmHaIl+mgLw8y5li78QalJO1
+26AuXlK/3isYNQ5cQPnJqgnfPGCHjKHsfOJU5kOK70GANcGy+G920MF266yHRyYU
+IGPEjmEcknhxOOxgfhtfkU4cViAM9nyYZ2uAyYHFRlV9DiFBeN8/rc6BR2pTfcr4
+wxK8Opdd4NKlSXtIeXJA10pGHi/DHRESUdfC0l2C9jgtTQOwtco1+o97MK79ugQh
+OucpkzHt+Otcv63M1m7HXAlONcQST1Bq02u078b6tcs5GkO1HgyMxSHOkzxYu1nG
+RPc6NBI+LeZ3SMJMFj0SxGx5T6ucFl/W0vafGVp3iisJwaEmYLT8LOHqpR4t28yg
+Y/S1bt3C5KsoMlryCWNuNUGpRi55NHYyoVPCXswK4xGZmYWtOO+Y7nKNTCDamA4M
+RrnTrBYOx2lZW7HGJibQishYI2lnk2qRH1e+2a5+isuWcZP85SRWrV1m+630GMwJ
+45wAFdh15CjNmIrV1Lb2uw==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_revoked.pem b/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_revoked.pem
new file mode 100644
index 00000000000..11fb50b167e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_revoked.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFITCCBAmgAwIBAgIIV6Idou+0+kIwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMloXDTIzMTIyMDE2MzIzMlowgZExGzAZBgNVBAMMElNlcnZlciBjYTMg
+cmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4G
+A1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAb
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEA3h9Vaqrg5hE6q4lXFX2Gw6GIcp1Ja+aJg+A0yJ45+W0JILi1
+OJCpBRN9y5KrzgR40Lao9Wr4CN6JaCRjJdoT6/ZFNAeDiqz20xw09PqBuPtriP3t
+OloOMwqsj4h0mV001ac7/wDatH7ST4FaUrgI9psan+oKQgD1OW1uVX2l7B/9SonZ
+m20at19xjqxLB8msoXPis5D9ybsqMeedY86Ieb3nGkpU50It1/4S90IARVtGVDMY
+yLLR2JOPl4zDMLZplj0f0kknNKgTLO2mCQ9Qccr+rjWLp8IWIvZlDDKlt1Q79E1f
+Gxr4hkvu3DhK9IAPZJJQB5LelwmV4DqQBGYrHQIDAQABo4IBfDCCAXgwHQYDVR0O
+BBYEFEQjdvAUYyBNQ5Hr2cr5ddQ/a6YwMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJ
+qE6hzzvQrCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMx
+DDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1
+cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcN
+AQkBFg5pbmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMAsGA1UdDwQEAwIF4DAzBgNV
+HR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhMy5jcmwucGVt
+MBcGA1UdEQQQMA6HBH8AAAGCBnNlcnZlcjAhBgNVHRIEGjAYhwR/AAABgRBpc3N1
+ZXJAemVyb2MuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA
+A4IBAQB1OZuplteRLwV2PMhCCrrw8974C6vvit4fYl41JwcoA1ht4GNeRi4J608T
+CD2nAFNfhr8U67f0FvwvaxD1Pe2PrYIJ7yT13SiNvVOMhr9VCDl/k1CfMcffxZtv
+WT1LW1sKTdxvu4Yt9ykDNEOS0m2xhbTC7U079qrPrEtCX0nOdsCfFd0mdUXOSqTV
+sgiUzGJO+IcEfMGm0ZYeysms4NJGTfdF72Y1Ec3PERKb+D0dkII8yFJoVevZYmdH
+LsFDKfjCDHAMe630RZkvSok9cO/ezBtXUkEiMYLiiKPbs2JHuhZ9Y5JlBR6LRB1Y
+gU3gLEIK4DyHbekUlnw/0FQAlQGN
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_revoked_key.pem b/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_revoked_key.pem
new file mode 100644
index 00000000000..af7a57eb28b
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca3/s_rsa_ca3_revoked_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIP5IUhar8Ij0CAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECFW+dV+3/bHABIIEyOtantDlOOTN
+I7iIjAbAUjYbMFHbdil8f05Rs4dQuE+3IdnR79zLsxHihAXNQjKNS6ZHqcXtMgLf
+KUcScJb5KtVAaD0aFNCr3gByVQj9FB9RHGMateW6qWck+IFPXuMklstfOBBl8R6U
+pqC+nj6q9592Uw5wWwGKtDcA2DzlmUSqDKqqzEzmrtISUJhU9kqQkxdcyloL2eBd
+KSm1eMVIghakSSEWbrqBIsltTeG6B1dOzkvuKiMZMfqamNSvuCOlTbVOuq09/9y5
+pCM+RXUW/99IAlBHVpHK9d8EGGBpkeeZ2o6drkFcm+JrdTIgdIH5r9AGN/Wn8+JF
+DSt7g6vO8jGYWdKnVErSAZX1v4KYutYDsoU0xL18mddWkgpu0MgfUx6dxYnX/41N
+4GuUPvQPhP4YHusZtQKpAfKQUcT40ybXw4qWUMqo3LSQ8RJSTtTJkhWRW7lovZZY
+jVUh/9YqH58sp/e9MQtCgoMptX3GJUDDnZWmxGCR+ex3iTSIqnn0x/y1jR3KgLV/
+quyZ7y65tN/uHQM6+w2yW+9AINxLNG9krz2czvrcNHBmZKI1HgsVEkrfdeSqwQR1
+hEmMmfmZwy/s72c6h4amnt6yT/vJE06I7AK8zK1mxpdq33rgrTIg2OvD1dIP23jS
+wWCQAMRrzfcvrGppQQCtoMHuKLL1uAA5OcQqu05nXKny0+HK3mN5S9aY4+zYjzfb
+VrOb4alaBxJf4XTNOIJFAlJzk7Oqld8tK8Dqy00E0lDh26OaLO/VvYcFIrAJ6P2t
+a2zmSB92wj/F0DyCEp6OqFPPCKaNqu38Y/AhzhIFKfYiuBC7rm8dy932m2pCeXus
+j4Pt1oh/iYr4uijGAfMmS278LKnAIyAFPKNfJQxAU/5cGHYOwttJCe/SHBQ+iwlp
+W3wd3i7i2kRajCErwCLGf9g/kUj6yPYGpJqCgELmjvz5aeqqccecW4JwPrRcAMIc
+fGxU7dk0nf2ddmnpKdaA34v9E2kIaUR/RnJUg6TORrNONCV+YhXVGriuZYX70pJx
+nutpr5lOyU3rsJWi5DjLamHxdAKqy9voqOhGwOSM7RPM7sgveLTQXwKkEo3FSwB8
+XGE3B4WQNMCSgg86L2h6Yb1Ut6ksF7aV55j2n/nwv7i5RttU6qgo2OYVy93Xh6+7
+nWIG+cW750fYflhRRBWNIWzaDrqlxUmLci068V6gBy95HwBzVx/5XNTgbl2E6HNR
+uHYg5vqphsKs4cfAKqOmi6X7/lZjQcCt8n7Gl9oUxr7f8VIX0cSPr/Rr7BImBdRk
+VD95H6C+lcsoQ8Hgjh7+mqWadWkRkCWnUcUFqtHRocDnJHh5ztJ+m3D6WDnnHOXd
+J1f4JgJjUbKkHWjuYiRk5rty0FxfiRJtZx//4XX5WBLQnBRY/OPyBv3tazpBhzfM
+6+p8XrILapRa7QSJivXrlNxr9yUSkMbddjiWwAo/RRDUvLtMNF/W75rfm/3q60ir
+7NhuuLw5nc52di6goG2sZLPf+GOq1xvLF1H8QGqSZ1QzH12qzNIBCeyUj/Y+3Cx/
+nFaTL6rqeRiKb8/Ud3fE5v5loGnYK1+g5v6GuyiYxYMgOkG8jEkniEe8hWvzOCBp
++9o3/jI0a1hu7NpWkJdNYw==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4.pem b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4.pem
new file mode 100644
index 00000000000..bb7f1888fcb
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4.pem
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFSTCCBDGgAwIBAgIJAOexJKE6WRWuMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGJMRMwEQYDVQQDDApDbGllbnQgY2E0
+MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdK
+dXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3
+DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQCv/YpTtjjzMEtxQGR3XStEngq7rWJcT4FdvSpJMFPhe1VWRycBYUnfReZ0
+NpULgOvWnufaXaFA9V3TeRtWQP39lXIr1yx0bLjK7NHOWDZ6cRkvI0nfMW7aejOc
+wC5UlE9BLiymhkKIu9iYonoNba2GTy+4Kpj9byopKroYrq2lF0/aLw+Vr+227Nd1
++0ujKIjwWE+/ujzVCumQYHhQWb8tQapNhS6ggXnrnvSBuQE56VAM7mmUYV2IAtiB
+hmaMm0SdwJ3jsoOAwosb/88YpdJThjTU1+zzFFk3NyNxAV1cu+TT3tbNWGvckMDW
+Zjjoq+U2BwnJyH0xTW5SBCf94V4ZAgMBAAGjggGrMIIBpzAdBgNVHQ4EFgQULgKR
+88du2yB9DwE9V1BlnLR0eR4wgcMGA1UdIwSBuzCBuIAU/it+ysGyPKGv41bKHJBf
+IpNzzLuhgZSkgZEwgY4xGDAWBgNVBAMMD1plcm9DIFRlc3QgQ0EgNDEMMAoGA1UE
+CwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQ
+MA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmlu
+Zm9AemVyb2MuY29tggkAgSvhMIVd41wwCwYDVR0PBAQDAgXgMGIGCCsGAQUFBwEB
+BFYwVDAiBggrBgEFBQcwAYYWaHR0cDovLzEyNy4wLjAuMToyMDAwMjAuBggrBgEF
+BQcwAoYiaHR0cDovLzEyNy4wLjAuMToyMDAwMS9jYWNlcnQ0LmRlcjAXBgNVHREE
+EDAOhwR/AAABggZjbGllbnQwIQYDVR0SBBowGIcEfwAAAYEQaXNzdWVyQHplcm9j
+LmNvbTATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEAEjSd
+E3TMx6c7dHBQ6+2hSeE4WvwOjClomYCSk/RPZi/Uw6uFgJO6mh/WgdaXm4HHHU4k
+GZ6hQxSephZgZJZ2Wram5Gpne6DaXG2XvQLwYtL0RgWCx01lFnaUSExNEOqzjGAN
+ZQ6WE0FUF3eqkQJKLXHuvJBJ19iABADE+jNGlO2b9XlyaJUYLffHeW8ESVZd0Npb
+FNsWpquHWW2nZr9OFYuoka8rA8aWMmN974d4hOD8JKU3nSTMJ767oz29n2DIO+3y
+YWOh49JsZdSMgzmy/xmLVY2SGvtNIwvzTTsJO6KZNkuFcvwYWiP05IWM4S365MP5
+RsBWAQukVHG4KkN+TA==
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_key.pem b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_key.pem
new file mode 100644
index 00000000000..df6b5571e74
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIQjciC+dKkzkCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECAAepDreP5RtBIIEyCXGuw2mdR0S
+1lmkXagAASpjnJchGyZ+b4v7UN2DGwWt2ApEDN+aFrvhk6NI3Gh1J3wmdzQQ1T0q
+v5kg/bSmCw1FqNmiKorI+xp1j+yKDOIwOrxu3F2dGKQgIjXkVQZQCptnZrjdMAju
+DoK7ht1UADVT7MSruuFZgSn0q5hujERyt03vLajlO+WUYzgs3whXkZjxvlskn1n+
+UpespVJ2aBVXAT1ZzJ65RZ7kIryeGwFo3KpefwxLWtEn+OkC6+9mClPQLZ3DfXuE
+LLC2B4T2cZceQyzwrQc4VF726xFXLwXn/MJzSFzAuekjTPQbavcqns5JuJ/JBdQH
+KRZTOXzw2jFC72ZqFQTfktjcVwxahkOZnarbehN6XbngOidRhCHmpU3m5RH70s+o
+9yXEA0WZ7NaWL+zNbs7iBqGVPWvW7Zr0EEXr6lqAeVHgFDl0e6iL3TTRNROc88Xu
+o0LkFnuwxk6fVVWY8Nxhw568OhRbg92EKVGxvdZBiVq3iXEG1GcdCP/9opCJL8gR
+YJgWkeq+WYegZC1BlgtLvSv9M91Ae6wmQHMaubAmni3sk5piVTJe2O6DE/+Y7X9G
+gpYVmQtt80uEuo7JIzvFxrZNS6x3Va/wcB45tOgjwt+8Ay/BmBZYW6uiRLx34h1T
+bF0YwKhKrn7X7QupBVdVL9GIadjxd0NAd1m0w7ZHI8xa5GqJckcsaWUuZXMesfvX
+yvfoGnEVzbJlrk82nsE4Dh1HYJzpdbbflBRJnCpocvvKk0wZ5og7gIAvZYdNnVvb
++KMmpgYT/FCRqx05jb6tqXNnWhddO6zqqj5VRFg6T4TfRAZpFCFrsUsgzwCnLOKT
+rVVNeCVWZciD940Omy12qFcLXpPPGFqrDp2+LeXQ9cF+I+wMIbjDcyU/L5hMYj7U
+LMh456O25SoS9e4PRxgJi3kODp/TcHQuANitCOIsvmIOc8KZS4lxADiXrys/toYf
+LN4cL6tHKwvKSnhKqjPt/PlU7CmNAFNurApZY3QsCDCrRVp5ckUNNPuDw7FDIaVF
+ZdnltounkCgncEFQscbqFsRokILIGN7XaVhqnYJhzBqrKZG3BmoTQXYViRSUOOdB
+NY+XKqriBmLqRWExuirpopHZwsEQnImkZo7VS6HJRieGYa1v6+JydYS/dC5AIzyT
+WBFOobSvR8u2BKvtRspeu47b7tHH2wYYtcKH9nl+4/8D2nzDfvfW59+jYiCEtU3K
+M2+L8KPCQC4U5h+ssgnvqR0RNApOx8BHxz0c3EkLYpJuvSu3Px9EspAqoOKa0Rtg
+afwon0j7GtJ7HEo1IjCmzg7JtkliAv1wXgTsWi7ZuyVnZgyxmfPHVos8GfeAug06
+lsCANjJIXe8jDa1c3dIQLFaHUH7JlchtWV7eoK5EejG1lxrdG8qkc77rA7BsAmg5
+poHYnmPB+ZjpNRu7pcHU6SqPDAx5iHAF/V27oWoqoGykUFPFbvFDf79MN9S7w9Gz
+8uUeHeWcea282RQXLIy/m5RymZbGCMzlM128Cei7RP44pociCwuDE99hVIwYMOlU
+bAOl1Ms8qi6LDFOXh+adN57VniN8KKoB/aAHcoztuzobU6bD7Y5dEs7MHyvr5zBd
+3F5F1XGFZwWAKdvkl43xeQ==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_revoked.pem b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_revoked.pem
new file mode 100644
index 00000000000..1273ab0ae52
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_revoked.pem
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFUDCCBDigAwIBAgIIBrDobNhhmFkwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgNDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzM1oXDTIzMTIyMDE2MzIzM1owgZExGzAZBgNVBAMMEkNsaWVudCBjYTQg
+cmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4G
+A1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAb
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAvr76BEVM04zALUqevQOATPa1ypqKfd04abophtLQpJuWrWqE
+dbRp/BIiE6hkaLA9VBgehT7heUGfFs+5uglYZGDAwqwxC9wviNQ01Oyn7qHEHbq+
+s0J+Z75JvUi29fJVklbDJBintX1D0QkqxMOVcDgJeAxRbVQfXLL2I0s/DKSX1Coi
+MhSRiopJ9ZpbJZEUX6ujAhQ6Js6vj5Zd29kYeKvtajD5fa+WjJzMuRBG4SCZtjIt
+HFHW7Ae2aW9pYg6IgGHZtYGKum5rCwLE0vf4Qtj+GeQZ0Qfjs2drMfcqNdtfv1WG
+GCHlU5BIq8p/ZYDtVaTzmMEvA3ONmD6Tda+tlwIDAQABo4IBqzCCAacwHQYDVR0O
+BBYEFJ5k5mhHw0O8jz6m1K8m55EUoRBuMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyh
+r+NWyhyQXyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQx
+DDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1
+cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcN
+AQkBFg5pbmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMAsGA1UdDwQEAwIF4DBiBggr
+BgEFBQcBAQRWMFQwIgYIKwYBBQUHMAGGFmh0dHA6Ly8xMjcuMC4wLjE6MjAwMDIw
+LgYIKwYBBQUHMAKGImh0dHA6Ly8xMjcuMC4wLjE6MjAwMDEvY2FjZXJ0NC5kZXIw
+FwYDVR0RBBAwDocEfwAAAYIGY2xpZW50MCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQAD
+ggEBAJl/yqTMrLHBXRRV9Ml6aL0fs4hA75urptFZPUby/viSJCGMEge858FuLs+4
+Wbw1KL1tLojr1p1nAfnUof5rBvIf/o21948UMkghuI2TGXaHS7aqEq8cf+VDm4Ds
+uIVeU7J9nBy6x0VtN5Bzaq825FTGUKGlewt5yxOS9MEIU0hkXGpkW5JxfH5UJR/6
+vCuLmeYkBvcrGgKsr8tM5ebeW+HZWjleZYjVgOtKTdrYU/Cl9LLGdA0kF7IpGdQT
+/zdoHK8ChetPdjLXFWkEhSMIdSm0dN/JxjdEZhowHevNUgdgeTv3cpfTffdpJ4pn
+DBcGlsbhFRqHDgz7POzM5waQsq0=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_revoked_key.pem b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_revoked_key.pem
new file mode 100644
index 00000000000..10ae49fd32d
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_revoked_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI3QS6IBFNbUICAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECMZL5ChdJc1uBIIEyNSaQAKFFQ4z
+x82Y0ObFuYLzX97JvKO6ty6IjL8F6yBXFNdD6kGu8S0rRmOnAwjEwD3OG+zOFtAO
+DTld+oCNoE81TDCp7ULSfFMMUBC4qeYrIiDl7qXGZLMTR340wkr+kiJWnDwKIspp
+aUqKVEwjRKMmHXvLlwjjDx4UtfHjYNCyW8slXarcJSrB0idw7hx0qS8NX8swSQDT
+PwaC5a+lnIKqxtxFz9BwzoH+UqXye+0AlL4vbT4N/dz+EKR5DZ0AyQ2TDjkbuyO1
+yJyO1YTnCnZO/vjDt/xCqsNG8mZKqwXIJeqpOUacBTdZsvlRRPJoP1Y0q6WTR9sM
+qvz3o76Sy0jhC0hXDxR7+rc4YU4fMt3es5JUM9KChmo+Dc6n67wrNjjkYBlzAU+j
+L6QPaU+3rACe14njOf1yPDY/572HjjVTTB+JbC6Hn19TZQwOlYQFU/5R0CTH+ief
+JJQeuiAHIeGcikrMEITML+oYAuB6efJYsAjprplHcWH3wJmnxyZcmyLEzW5NIFqS
+cauP1GsNca26iPV/vT/X5bQ0Bi4bO9gXMtnO/sPMQJZNxShEgUZH70gXG+q3lm+Z
+y4f+EWkBlYRbA7CAFerxCWIUvP56lqdFSXdeTAQcAQJVlIGmaLV2p4XwPttdCdZ/
++4kRcjeg5UP8topmBcGjsdx4Bl7ovbHznN9STB7CgE991YGuxwVh4qNqbZgo8gK/
+prS3ZSIsntWeH3MwoupecWkhmf3T6WcIvUqeYcZh2iThWZIrzUkOlDGFhu4LwDxp
+j1O3LYUa3rJbScIqSs6ra9dByP14CoVWtvcLotWwd3dvndNcaXMJlRtTg9HeIGK3
+HBlphV1fDF8dKXLU+pa+0Od3JtRtto1zJx6k2YubU7FDmh1EyQagVWNCVafCl6kb
+JeA77EQ7jiBiUk69jt6voL5guo4tFhDviBZyfmfGjUMbz96vyGd97y/HFgXWNI7j
+u/RIgMZ3zR5Z6FnGXgFnsORqmM6yW+behHCL74NPxr1q8ZFBCISfWDLQKcr7kF4O
+REuPyuEzciaUjrkn9Jmv+rEDcoBNKLkNO3K/2nJYevyIi26rcz+K9v3G2+htpmLR
+c/A24uj62hvTP4+70PDEc5RRtXOofEGVS4QoZ5Tr/u4oUwy5qniQGKbJ9OJry33F
+mZ+Djb/oNZs2UkbEckHwpr3hcpqPDrN2dx5UDqLnWv1R2OyoAyHFcxdSw3lWnLDX
+CKHj68cI02i9XKheJmCS2P6M5JbeZQsdgZDziw5Xveyiat192PVS0T4vdFVKXAlB
+MUoB+5gruPpOQphc4eVBTqo7OsIsbTS2Kap1WqMt+0kAadBwkBo5hQgrecTYc7dh
+MkzkDa4M28l2ea90N20Z4H49utJmqILOQk1fvSYRdWZYW0/GYMbumz5Kz8bJ9ECz
+eVdbDciFEvelasV/KNyu6Gn2cbsNhZ/2HD1g9L3m2FplJsDgcYabZGsJDKyjxIb8
+JD1fcMRQg6t4BOa5U2iryuIdAJZF17+OI7vfmplN8IpGDLj/QlriuLCkpw+rIzIi
+Iqi7tH4255p9d3ODiy9NJr78ndcJ7s0EsttsLwRH7OUgk4aiCbF44WMRjSELgfe6
+Y3573WdBYbW9F2PIUNJgiQ==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_unknown.pem b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_unknown.pem
new file mode 100644
index 00000000000..062775b7cbc
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_unknown.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFLTCCBBWgAwIBAgIJAMDCPUtC26l2MA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTcxMTI0NTFaFw0yMzEyMjExMTI0NTFaMIGRMRswGQYDVQQDDBJDbGllbnQgY2E0
+IHVua25vd24xDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAO
+BgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0w
+GwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBANQmv02k24yYnh2+5Zx7oLKnjrQleD10T+IL0c9TT/4dXAws
+C6oKsQYlwZK4CIVbZBjSat6YUh/fOIYba9zp41WXDBFDcAPfzTZ2z1Y1rmcpfH/l
+1K8o0hqFzQ4AhTaDIkO4A1XL3avS1gs215FgXSrm+GBtRSRQMKHTHHOa1BQkwMQw
+RdBP9Y3WIbaOM4PW7HIqwzVyj3bhuBvRbTW3iutPPcL6DHXvJFYVuYxo/L7DOb46
+S34/Ozvm3YFnLlG8WRVHRZm8uf/5278nxdCACYG6m1a4thmzB6d3wimIYcEflGLI
+yXeWXcNO9wTItWwX7BhE8PFEIkM0QEuOlKz5bnUCAwEAAaOCAYcwggGDMB0GA1Ud
+DgQWBBRJSsprWBlHVvTZmKaSMFEARWy6jTCBwwYDVR0jBIG7MIG4gBT+K37KwbI8
+oa/jVsockF8ik3PMu6GBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVzdCBDQSA0
+MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdK
+dXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3
+DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCBK+EwhV3jXDALBgNVHQ8EBAMCBeAwPgYI
+KwYBBQUHAQEEMjAwMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4xOjIwMDAx
+L2NhY2VydDQuZGVyMBcGA1UdEQQQMA6HBH8AAAGCBmNsaWVudDAhBgNVHRIEGjAY
+hwR/AAABgRBpc3N1ZXJAemVyb2MuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0G
+CSqGSIb3DQEBCwUAA4IBAQAPnJgWnRJKOCBBui5I58ks7vwszG+iaWEF8a5+Zzk0
+PMulqxYX/QC01omIvGeUXWFM+BJ6Sw9MBGDePtlqzt0EP0knqH7FWhta53nmiLlz
+YwoGtfMAfID341M/v4fq2eaDks3Va3xfOYyLgURSBqioD+9ahrNDpofWbXM9ikT8
+ZBHDSjszWqIjLAmCExLqu/bEaMYCPLMO6R1jM5M1Ixiocsb5ZPTq7RyjVANTkFly
+Cw2Do08VK/CZfhRdntyU2PUxXaUDUZUsXldOQ+yxDtXPq/79+ImdSrJ4DZ6xIUPa
+TlgFu3vGj3PmwsHzUfclKizAZtZkZPEL+lMEpiF2YZaV
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_unknown_key.pem b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_unknown_key.pem
new file mode 100644
index 00000000000..f32445875f2
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/c_rsa_ca4_unknown_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIyCPZ/HCxop8CAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECOTbgzEC/TXnBIIEyJyIKV7U17PU
+ZLb1T+DgCizhz+pn82oEgpuFSDvK15iknCBihYQ+QT554lC/8howMJiCQtPGxpNZ
+wBrBdA2DpCTLtASagpT719wZ75GT0GBlIvsyUtcJYiPrIptuBFkQ4IjPQia2daQ9
+gWWkBWWl9HAus0M5nVokEaAclppeNvX4Y+ezRH0HfQw4F4d+Pi/ahjESWufHu3HG
+uRkYUgom8FvMVHb2MDO1Z0onOWBnt6USq2FR/LRcmu50eS+k3AvlIu5VRjeLhrT6
+Lspxhg5NhtBzhGMPV/hL0Da1fJoGc6kMWqRGvLfNlOzB2x+3WtWv1uybue279fS9
+ISHNXlyXiVlJpdDNnEUG0BFZYfCu2NNwcDobjM6kKkDIH1Z9oZ+ZOaMMRtpdX+k8
+JhdG0gNWWVWRhPwC5xI06bdBYLQcP4m8nlBVnaRDoNSOML+BHoJRCDz34UuKEg+X
+N34bFhSogbflOi+3edtcbjmRe1ydVu/99UV5xHMA7OkUKomPM2t4A/mgxl7/iMbI
+odgV9IRhAtny++kk9fWalf6sNo8Xf7aIV9WLk5yT+9DNHbogT01/WbjOTVmH9a0S
+oNvYtvKEecLD1+R1XeZbxQ/hrwcyqNimcHUskxDffMnTHt0a8BmwVyE6CwHx+0cm
+O3RfuYIkqKGZHy9o52umReVpC3kvKPzdzIw/0efLg9ud7h3OJabg7hIc9FuRY++9
+fgWHYGzX3+/F3NdDcesR08O3NlvYGatAk08fTGX5DZxkuWiHwsVFMTBv69qyg82q
+az4tJKMI+tlCdNGa2/w/edsu39qR5batAYs+IkINTPxONFlzD2djpZm0P76Q0vKH
+ghw17YJ6NrKzVAh+Oq24Df2wPgLWqVxVa7AzTaY7yJbfHOGO+3eEtFCogm2HFfzN
+ef79HRdp36QYFGadQaXlfYn4ge7cUlne7zhJn3Dcy7pHERx+YVM7VzNDCzQAJrMm
+463B+J8xEiSI4IZ6du4Sb2Lw4JXzfhq7SxdjodwAJk9msYbJb8KI1fqt3yeB0kKx
+SoPyLFeudnKjT0Ho4wjOorDWoimOXljfBpE3ubfnaaDreMNuaM7UsvvlWT1cRcmC
+/FzAkQJ4dZg/5psgu1CfhHZcZM9NDdVhP10evUhhVjr7BMdhZsxW+x4Nv9B/9Egg
+Wsd/1Fh5w/orIxvkhq/MFf4KCZ1/gGgYYBdhZ+pgvNKCr4kHJdJ1jDu/NOuBNjs4
+JQIGsBcC+XISSG0xyJMfrwKw9A9PlySI/LHvyTzhQMK4h6Tk5ojHxSECgIPqgacT
+qM8ulaMoS1AG8ogWsXdd7iXmoWxrElZ+6yJ2zltJudIwACC29IaNp94lZ3C2SPUt
+iHGIrOGXuqR7CZpMTSq8gBHiCjIa6wzuygyI3gfGBc+SjuMTxEaMAmabpjoDxJFs
+m32MuIPi/2fdJndM61PTaj+ZlV31FtPtl61bIBB1coww7k/bTgatAbOQto+r2PVH
+w08jB27xN2MGhavknpn8UaYWFkaGBKVlMaSRiWSYDoayD2Sbh2NOSMNRQ5TBpkaR
+jsnqQOixFSbslAEKjUTNhjOyPBV9x0up3/BSObSR16kxCWTiZblppx1UeYDwSyub
+NlFYIJ9BluwQWXgS7pQxBg==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/ca.pem b/cpp/test/IceSSL/certs/db/ca4/ca.pem
new file mode 100644
index 00000000000..96f069257b6
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/ca.pem
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIIEADCCAuigAwIBAgIJAIEr4TCFXeNcMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAME+gjpbcHfR85ROm4hsT94XBQQgCcT7ZOqG1HvzDRyZYs5jCxpY
+9BeKLd0JjacuXpp/uiFiy3F2MSkEp1KyviV10+uqv3myGd+phCRtRFpDRX2y7ocn
++WUTWi0koqfs2KLqzqBhgfSLHeLHECKOH3u1NUGZSjfR7+hEu04Ru65non7SyQ3U
+Csa1psXsWMKlo1YfdPTzGJ5IQ2cJXHQFylpgLk8yrVDImMHPymsajXFsq34jpkpu
+QDZeKHCaKEgl20S3xrmALCHpXNdkjqtc2gNoVI+C//oZpk9ms2EOlsKwzxB8/d9W
+eunK4h0IB3H2mZ6QWAm0SSyAVSAdaNBDxxECAwEAAaNfMF0wDAYDVR0TBAUwAwEB
+/zAdBgNVHQ4EFgQU/it+ysGyPKGv41bKHJBfIpNzzLswCwYDVR0PBAQDAgGGMCEG
+A1UdEQQaMBiHBH8AAAGBEGlzc3VlckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQAD
+ggEBALq8P+lJ+nvK7LegSDKT5WamOzO4YThObANCsP/zLQRsIbHjWGDkGT57ndwc
+1Wp0GkhoTWOraocAnEHTSFnMC6j+xABspMxz6ob5T5mIFLmyiTf2psVlmsPDmbR8
+RIOMkW0WFBQKO+zFSE8Mwwnw+QKGL7Xj396ZxGC9SfNiOrW0UBJUBsML3Ck/hM/H
++GVqFN15/WK/LOzCzTWVUlrFFAKtii9r9PUgJfX+XySULcFwvu+rPsgxxMGn2CNa
+iuAAumzTVRJTVM7VSGEImz0VM2F32jKhsjQwbNI2KqlYCTZlklecHT6Fk1Dd8SQi
+pBJgYgVfzEcgm5pNMFakDUzOcw8=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/ca.settings.json b/cpp/test/IceSSL/certs/db/ca4/ca.settings.json
new file mode 100644
index 00000000000..695493121dc
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/ca.settings.json
@@ -0,0 +1 @@
+{"validity": 825, "keysize": 2048, "keyalg": "rsa", "sigalg": "sha256", "ocspResponder": "http://127.0.0.1:20002", "caIssuers": "http://127.0.0.1:20001/cacert4.der"}
diff --git a/cpp/test/IceSSL/certs/db/ca4/ca_key.pem b/cpp/test/IceSSL/certs/db/ca4/ca_key.pem
new file mode 100644
index 00000000000..b6804980a36
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/ca_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIYo4vzb5d2tYCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECKbx/sHxLxS1BIIEyGDkOn99ZiuC
+ynbCEzPWWxP6sLb3/HPnFMVpwJvMKg7v8/hTu/dJ79XnUDYzk0LC6qzg21nCEBSH
+F0kbrg79L1IRsq2DGcJxlqPkq7j+aRiUhZXdV9xe1dRhDGGZTjARkQ4ycTt5dzf1
+Krd8/chJrGvx/zTWNpU78glFIiVd6qY7tkmCDyyQMLkkxh7kOQUZi3BSkyOU1Fl4
+hxcNW3xyrvDoC6qk5awXqLTcobaiUPzKu3cTxndySzrZW99Uen4ZySbfOlPtf8YP
+2mnD7Op2KiZNaZ/ogobB91yEkxpIL2KRlZuiX64yDe027l1ODNUcXjXZYslBS9V0
+Q62BUKEUGuWAGKnr+QXx27QsZAI2X4Uek2zvlM14ha9/CRQGwHtQXPntFJO0bDqJ
+Sjn1P1+Owus04Gh7/a/oIXCXKKyJNY8olfJZwRG7dKUwghY5WjX1JyoqsQNzv8bw
+O9Ql94fMqM3SZUxXEhaAPlZWa4kj/ZOBkbZ9PccLXZKYaOktmK/HBY5C//JoopkQ
++2rh+yi90rEPo3m3ChIXadmZQsL7ELUEL0H5xobpNKdFGyb5qQXO/bKagaAtjL9B
+2mVEeff6TgfywqqvHjl+9NznyN8o5ImF0l7hkyeMhvE9TQ1FgKF1o4fKCnfSwqvH
+EAlxGWYmNUrmVHwX5BmqDvniTWOskCaAC998kpRV0SkDO/fZUkPexracA7vSD0rY
+upyYbvvs8AJaTa/mZWXWu1obbs90G0Io8Q1ZG/9emqGsgKfxgMZiNncrv94hpJZb
+1SKjmdkUtl+GBCXQQU62Ilcoq/r1jFRqwzE9WA4FqkgmA2Uqf3T0CzAhdc1ETMSw
+kvyZa1G379K45DnBIi6i9L0NNGCecQcnbwuqUafiu8d6NU01268QJDcdE1Q49WJo
+nrD6PsJ8Fh2dt857/WvUO7axCSsjIzpUugSO9XMUEPvqaI+uRH/rTkYiR+uy5v64
+ohKlw2N//q1dqC6AuyAnqYId4e+lONAAxElpD4Dr/HWo8A03FZW7i5NVn+CKxqti
+oys4HZPQ+8bw4trQCp2MriJxioHDPgwnoMaSLOivczVhirteDK4ps2vjE0b92Ogo
+Wnhd+oU00PnnbeRsWW8FGY8n3OmNOHVwaWgIQlqH18uwjAcBDXV6rkzm+5EhyYl0
+wbdGKEI6ulFqxCZqOx2IHPdWnogryCATfb3yQXxFHkFpn4aq4TTAweDwNXIy3H7I
+42oq8kxFcuBxYMCVYTveoJsWgFgrVOgCqS/exRs4/ZGrPfEQ+b9hyi/XpPY8wFTn
+xo6AeJX+x/sRGRiLZoZHqWOWDFHYAj13JF8rIxjeVOrdDX7Cu3VYyuylYcnHVBac
+FZ1LvJLiDLqKx0/uSvkSFF4WHeTFfAXyKjHUwecaRihs67O25yztNTuKpuJlt7FG
+rnHBW4IfSBZNaK0T8rCSJXxlIhV7Xe5GPusGLzrIxS19eLy61PtWL0nsiEqHBzzw
+ZT3r6rauzGX+K6L5a8bKdf1c4RY6Yx4+9rHStF6F7Iv2tuOkf+foIfPFcgC9WXse
+bpkJnJn75y/k1Aenv6kjSVXdHCqERS/jxxEeIEgRqWA0XG1NiyCO1r3IERq8dWhm
+2ps0SCX3ycbptqHuHKo9hg==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/crlnumber b/cpp/test/IceSSL/certs/db/ca4/crlnumber
new file mode 100644
index 00000000000..8a0f05e166a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/crlnumber
@@ -0,0 +1 @@
+01
diff --git a/cpp/test/IceSSL/certs/db/ca4/crlnumber.old b/cpp/test/IceSSL/certs/db/ca4/crlnumber.old
new file mode 100644
index 00000000000..4daddb72ffc
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/crlnumber.old
@@ -0,0 +1 @@
+00
diff --git a/cpp/test/IceSSL/certs/db/ca4/index.txt b/cpp/test/IceSSL/certs/db/ca4/index.txt
new file mode 100644
index 00000000000..77faf783e67
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/index.txt
@@ -0,0 +1,3 @@
+R 231220163233Z 210916163233Z 528FCD564D74B882 unknown /CN=Server ca4 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
+R 231220163233Z 210916163233Z 06B0E86CD8619859 unknown /CN=Client ca4 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
+R 231220163230Z 210916163233Z ABBF8C8EDFFB78E8 unknown /CN=ZeroC Test Intermediate CA 4/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
diff --git a/cpp/test/IceSSL/certs/db/ca4/index.txt.attr b/cpp/test/IceSSL/certs/db/ca4/index.txt.attr
new file mode 100644
index 00000000000..8f7e63a3475
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/index.txt.attr
@@ -0,0 +1 @@
+unique_subject = yes
diff --git a/cpp/test/IceSSL/certs/db/ca4/index.txt.attr.old b/cpp/test/IceSSL/certs/db/ca4/index.txt.attr.old
new file mode 100644
index 00000000000..8f7e63a3475
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/index.txt.attr.old
@@ -0,0 +1 @@
+unique_subject = yes
diff --git a/cpp/test/IceSSL/certs/db/ca4/index.txt.old b/cpp/test/IceSSL/certs/db/ca4/index.txt.old
new file mode 100644
index 00000000000..e5fed01d59a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/index.txt.old
@@ -0,0 +1,2 @@
+R 231220163233Z 210916163233Z 528FCD564D74B882 unknown /CN=Server ca4 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
+R 231220163233Z 210916163233Z 06B0E86CD8619859 unknown /CN=Client ca4 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4.pem
new file mode 100644
index 00000000000..4ba6f5721c1
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFMTCCBBmgAwIBAgIJAPAkFq7yZ86WMA0GCSqGSIb3DQEBCwUAMIGbMSUwIwYD
+VQQDDBxaZXJvQyBUZXN0IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2Ux
+FDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQI
+DAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJv
+Yy5jb20wHhcNMjEwOTE2MTYzMjMzWhcNMjMxMjIwMTYzMjMzWjCBijEUMBIGA1UE
+AwwLQ2xpZW50IGNhaTQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIElu
+Yy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYT
+AlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALBvOpGLmbmLh0chMjnhrvy/uTUch16QkbHDN8ve
+C1Cmeeb+Og7WYcDUI63fJ4/ydWz7Vy8I6c821Y0lnETUdA9EhPrv030dRazGoF0S
+A9/kx3x+ou9gZ3PPU7XhP58/CVgAoVWLokuk23Qu8OQSshrCoUj91k57tXur+CpB
+VJlFiHTHT6oqy9pTWV9oIbjD3+HzCf+83qIYRQ1eaB66C3pjKDjkNDWEpok+/Y6r
+bTTC08uP5KcnRM7Ih+zsLOFlv9nxN2HxquOfdIzsRcTz/9lIjwOPpP9PoVaQ8juH
+1z1gXD56tPP96pLjRAor6p+hZ8CqlI+hMzwzSx16/dHUV/8CAwEAAaOCAYUwggGB
+MB0GA1UdDgQWBBR3H42uoPC77DsNnj+oeJZtzk9QAjCBwwYDVR0jBIG7MIG4gBTJ
+IksqWuICC9mJkR0dfKlkjZFVMKGBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVz
+dCBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYD
+VQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsG
+CSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCrv4yO3/t46DALBgNVHQ8EBAMC
+BeAwXwYIKwYBBQUHAQEEUzBRMCIGCCsGAQUFBzABhhZodHRwOi8vMTI3LjAuMC4x
+OjIwMDAyMCsGCCsGAQUFBzAChh9odHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhaTQu
+ZGVyMBcGA1UdEQQQMA6HBH8AAAGCBmNsaWVudDATBgNVHSUEDDAKBggrBgEFBQcD
+AjANBgkqhkiG9w0BAQsFAAOCAQEAaBWWiVlhL1lOL5s2QkaYNzSb4eKqmoJ7iF8N
+gssJUCgMxNlOG9yyF7z2MGjdFuK61VjH79xOAkwi7G1NiFcQPC32XjOmNP6CtsOA
+3wmA+SEeldi6BZceCyELWsFweEswYbMupo+V3vAPSWoNcOMyfXOf590jMQIEq4Mu
+W81MMTgstduYaYcH5EKxqEThQoZmY23olABw5JkSSq1lk1vsxHJo9wLwFQgReU8R
+5Jex6pA6dEPFi1Sgx5rliM708+38/6JZVbtSSgyPM99F7/NylWZY982ME1yOWYBG
+Pt1T7SyOVkg6u57rdPAXoybP3GpqI7/2nuwf7igSwAx01ZvRKQ==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_key.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_key.pem
new file mode 100644
index 00000000000..0d477dc2f23
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIDbeDRHNOYc4CAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECJ5GkxMZSq29BIIEyBq/dHmZR18w
+J/aZ8uxUT/Ygy1NRbkr20ItvCYASlHLAzb+cIwvbG4azjx6lf7GMujnqqFuntgSl
+4DC0dMC5af0VBahvncnaDddbrrPGLKz0z9TSBEvtJEAav4c4wV2yLUB2ejocLXJP
+fKHY18cgQh7bbjzyFtxowUDrO8TF3ZGDqMI6NNL85synlLUNLLtuCwkevG6MX7Nx
+gb+x9vRiF+SckvSN++K0qSDQ93qvfWMiu7bEavxH0fwuHMnQABfzc/rySBjdeXN7
+/9bOqFaSbZoCdRdVONTRLGPHrZr07EXZU/zQ77/DOVxTF/Nu6DfgsZuL0yBREpBY
+MPFRRhEPqeCrpU2UOUZQBvQT+q1+FXbATHX36QO+bCyggijM3yO9yU5Yrrg6euaA
+lRBxrBrWyIIxImI/IksCCVHqZQmTy8cwr4VInzIRCb1aLxMqaiSD6rz5BGWlr48q
+3iWSVHq9dvPJ6fD66hUzeOteEHKHdmDxxRzEe0qfm1mN+PArKDuUi1OF5MKWfCek
+I2XhRQgG2OlJ/PCiOTJg/SXyjYvp878fyUSfLSjM7oqQs2k+Pb1dr8VLuLhuUeg/
+B8JEEQ4UWPDcTa0YiYtMSLGak2sx2WPWr40gobfHZKPLQwfOiZKf31pCGr/wV7ss
+L6+6X5Mq9PFtjjnCseKjW08f6mIDUo+4m7jz0l3K9wvfT6L4RPRhUE0PhEoipagR
+xOci0zSAFuYIsGtrvCqcJegtnx3Nfd/D3uPS+hU+FmdQZQTbpQ8o/Wjx6Eulqsw5
+nMF1RMGs5pzAT+y45G6NpbuHAPrgEx2v4jAjgtWwYYc82DgzVJIMHerLWV8Kxs+J
+c7/td+sh59dLUKBTnoV1Egp3cQFYIxYcXdGOLnym88AFx+JCMSs5k0doBQ9dPw68
+yXS9c78ebXbYYq/CEVuHv/yMPeKZw/QLmdnWODy2nIzZ1GQeK2XoBNiuX+zyQBga
+DqR5FpVotvYbdLst6eqExCohcdbftaperrMnpIrE84Yq6U7/cutIL36tleXQBWzD
+VqCR/4IcJ05WqpIeReVqSjpNGYAvpzIbvjJyKGixRDKCxtOIWFFTe1VaNloz8ufL
++iHTEaryIG4RdKqv1JanP19oebanmKN+CnZi9pXHZL8pP1sbwVwvCRx6iaUSNRK9
+SqBxIVXNo+UxzL1qaFwrAWKsqZGmTAl939kf49j+pfvLsfnUrIOud9sYnnzTjoyx
+yJ6sDuHmIMDJ8YvLlXeoROO0QyBZC/OlNlIAaZ3Ho9RSJUeKGQ81cUfBr9ydLfw4
+1Gi1ndAEW9161UJiz/Gf0+cI2gL/UrVsHeUAZLmHOxI8yfvkjPN1kz5bM9EYB4WB
+bsqeNvro8DfO8hZv+T3qDfqt47rqck57DlQqxYtCXzrnUE7g36BJyToiskPZ0ep2
+q71XXUr5VE7DnyxTlQUDufegQg4Pcd9hGjt999AqO1sZreahtnCj68NuH758B8br
+O1uODGcrFZEBuGcoVrQo5CPS4HqtCfEqVwnVRC591ox62RTkHZIh9nuTRIKJ+/H1
+uaCXiYm8AOato/krsmaab2bqIEc+G2vVCXpGAD4vOAKv2pRDf6BFWjWW5YyBB82q
+/V07lcgAbKWsj3U/nhUVOg==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_revoked.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_revoked.pem
new file mode 100644
index 00000000000..51e153c5c32
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_revoked.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFOTCCBCGgAwIBAgIJALcL0gr5bjylMA0GCSqGSIb3DQEBCwUAMIGbMSUwIwYD
+VQQDDBxaZXJvQyBUZXN0IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2Ux
+FDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQI
+DAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJv
+Yy5jb20wHhcNMjEwOTE2MTYzMjMzWhcNMjMxMjIwMTYzMjMzWjCBkjEcMBoGA1UE
+AwwTQ2xpZW50IGNhaTQgcmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAta
+ZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTEL
+MAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzhLGPDLg+yMGXJQBQzOQIAsvuIKS
+z4fdj8nFCOyuJMmlhDbD5i5swX9xf5c1kyTKl1v8I/KJnyveDB7ZOqgKHCXAj0O7
+1N0L1CS6nxHQ7U0uFE90XmwhXCz4qnku1NGiNwblAQ0Ed8Hf9jNQtUZGik6uyA4q
+7snQ43XeKDKJRIM9fgRvp7lAfKkp5QWkgbpjBQ4LoGh4AlClfTjqC60VbJ2/cS3r
+Uai2GkQvK8QG8xpMYY1gGPQms5iSvzTCEb60Tv32lhCKIJGcRZ85h28zG2ZHyvcy
+P2wfx/Bs2UTNQDPcW3GXKJCoCQ42oQiecu2kWPeHDIdtO/zO9tMtMOHiqQIDAQAB
+o4IBhTCCAYEwHQYDVR0OBBYEFA4SviIz+iusmzaH67Z4tDjqmjuyMIHDBgNVHSME
+gbswgbiAFMkiSypa4gIL2YmRHR18qWSNkVUwoYGUpIGRMIGOMRgwFgYDVQQDDA9a
+ZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIElu
+Yy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYT
+AlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbYIJAKu/jI7f+3joMAsG
+A1UdDwQEAwIF4DBfBggrBgEFBQcBAQRTMFEwIgYIKwYBBQUHMAGGFmh0dHA6Ly8x
+MjcuMC4wLjE6MjAwMDIwKwYIKwYBBQUHMAKGH2h0dHA6Ly8xMjcuMC4wLjE6MjAw
+MDEvY2FpNC5kZXIwFwYDVR0RBBAwDocEfwAAAYIGY2xpZW50MBMGA1UdJQQMMAoG
+CCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQAclFls4KzNEcBY9dxk3ICqLGqI
+5hKrg7DRskqyD50goDzzC221YNmNCBhLql8eGOfMIpWus/KsJSttZk3lJnt0pxqK
+WTcDJYW9VyyuXBIleAjiNrm9WynVTar0h/QnPjRO39ZYUsCQhUAnR1ZY5yTNX8zu
+N4LsdvOzHr4Vj2Km2E2xmloo23yDIoOVGytlJyH6Ywv3Z/Mebx7WQvtCu0unJOic
+0ukynb79qHSnxh8y/DK2KXrM+N7U/crpeebE4PaM6EhzE06uEDKsUsdYodgPU0bX
+jybrYa+WSG6Vcy2f0Kp4atRd5VmSCjrIuNYy0CO2uQKkpQzjWqFpVMpmS4ZU
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_revoked_key.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_revoked_key.pem
new file mode 100644
index 00000000000..969b69cfe5e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/c_rsa_cai4_revoked_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIp5oIzWsgeh4CAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECKQqykLnC2SRBIIEyNdDFQsCEPbn
+Az1z3Y1W6pmKkjf6ulGgYLRmqyA4CAdAo1F9P52i/qOoC6aZCcSXgZRr20x1a08i
+ohKQ4D+YcxrHmW8sKyBr7Q3842MGk0DEYOY0ljBtNERLyvGLWbVrOLGqb4Sd+UYa
+CSPFNwgzpZoYqUpViut9JYNJTsCoyB6Wrcdz/2U6Fbicvo793+JUWXUKCTe6h0R/
+3+7pPVtqd2cwhgy3GA/20Yf/n2JczwBnUVqRm3Lq75jooTrxODAMkIL9ciIyBEbJ
+rWilEsTg1sj+8Vjyje+2fRAoqoaLVrgmjb3m1P9dPc5vUJKIAFIHBJ0Lj0xYljrr
+n4GvAD7o2hH2+0TjglX1vzlKelN6jgTMWfkf52L7K7GRvyWBaA5ZaC8v1gWXHyEA
+Qkcq62qMG8VOisiMS7Fj32rhsHV4Aat2w/SaP80QEqsyKb+klpe1OG+oTgZ73FTU
+xqWKhPBN9vilfGkHkvV0GqxtbT1IFQQzPjElTprk844h3cW5wC7FEK8xePVgz2U0
+rb9sHDIuTcPud0lDLa0vbToLmAkMCz6qULnfCejUmWv1biegg0FErs+yqaepYJYl
+LBnbk2m40PYSOxTTk3HuJRk+fWSxIKN8pZmURZDmRc7LUytKgYkKwtBEt28/+pD+
+MD0M89S+9nUtv65bheF4sP0tVk8RmUTiJrQPl0fcjppj6TafaaIP1pED5QwfiqyQ
+lsJGOfgrhNgsLE3WjXvvWmGGIRb533vfZM7LU5hzjvSgV9BUxxY/iE5oh2HS/X6O
+GMSoAhEv7QnvTCi1eD2wQ0EC8n0hUfa9IQE93JsC0ZBbW9xDV4V0GyrwREMrpL6w
+3iXURAeKTINpzr6vJ3lCluJWJmcyOyeKX4/SQlSpHdEjiFoCoiAdIGYHIrQSxzSH
+fGPXIBHguSiC4BDdyOASHglT4DLhaG8VbJvB/nntkqRScVFvdsJ79vKzLsJLP6T1
+WfZsR1cZHJBPSu/85Yu2Wf29FHiO4f7ITpmR6k6iSUubNrAi7EW8GqXbmJn5OKzT
+2VRp4uwq8IJpkZUwt/TYAIhG/WlsUTJ6Qewsq1ueUz0ShnN0ksl6ifPXEacOlQJ1
+D4JTXp6hQdnzCMZRSu0BTB0JzZtNaUweVuIzJ3DNvDtB9PYf5BuCR2HIkm0Q+F5j
+ABT+vh0dAlv2ugjhXZx5jv3GGcB2TsSEX3D7vy1CvPqw3RLPwoo+sl/aYvdPy900
+ZcZcI5i3KKV7DGNwGIP0uWxtbPxKTBN843ytuvn+HHkqN3Aj7d3C6XE32xzC23+a
+j/hpzXnf0DWJ6+f8+28au9U+EZgkpRQM+bNofZpIr+ks/oIajJE1uicRnWQ1TnWC
+6WmDx6GxVJ5mbAQyH1qX+C/Fw9v7XRZNK+7PgX3d8fPaHgbZS2ZZ9ouAvkaildFJ
+ii4Z1U1zb3cozrRSCSkE7Ic14E+NDZ/gugbc3A1VwSKSkTuTT6EmHNdLvbanr2XG
+zkIFXTGmTIElo/9N1E1oFAb+zXXtnN1gaIck/NJ45m1HskU+evm/InYzxWVRQu1A
+ipXDwS2j54yiUTqUOuGXw/dcAvtTNhW6PvM2AZJn6FxHvTlXpvdhgSF2ARELcKC3
+Erkx+2n/CLnFlKDZYPz3cw==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/ca.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/ca.pem
new file mode 100644
index 00000000000..dcde1a9df19
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/ca.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/ca.settings.json b/cpp/test/IceSSL/certs/db/ca4/intermediate1/ca.settings.json
new file mode 100644
index 00000000000..71c5b7ed0b0
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/ca.settings.json
@@ -0,0 +1 @@
+{"validity": 825, "keysize": 2048, "keyalg": 6, "sigalg": "sha256", "ocspResponder": "http://127.0.0.1:20002", "caIssuers": "http://127.0.0.1:20001/cai4.der"}
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/ca_key.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/ca_key.pem
new file mode 100644
index 00000000000..2a72da27cda
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/ca_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI6P8uudSvpA0CAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECIGa7x0efGtwBIIEyKYIYa9Q7hFR
+LJczhrBP5HuKNPL7EHnCfroKh9Xw1lTSjP+ABy5BG/n6sg8n9ky9xUaLfZLW0UTx
+W9/+STDxMgkGL4TJQQge4AtLm3u0x6l+X4mENGtoFiZaJUzNrDiirzVXSX4r3/n+
+IEwEQqeZbsLXhgD8itdCPSG8T3MD9O9qkZH1VV4Jg8fGAIgrjIz9lNOQkLihTcyc
+ZtemvavBnuxl3G7zRu7/DX90SSDufeXPESte5NhHy356zPU0+1i08xghyk1cwwun
+5Yc7eQT0o9kKpeVdOjl8jHJVropFFj/s1naYA0jcVq+/7/rovJ3wrbcS3fk0MEt2
+elVrp73THlyBqIwM82mKBm2IxdMzyXhCjqS+Svl7bXRcC9V4V/Y2Vfcb9hBuh54v
+UcV5Ls7aFbLvG1P47WzgSNx3VaxDdi240/nh1BvXpY9Fjl1ipuCYCoiniFG5bncO
+/WMIE25grsYlBEtfQsqb3mdswfTPsV7dN8LW8AVhXlU6O8UOlr2/S9z4/jVtHzik
+jXP3MaXSpJzw+G0bB1g9wYli0vaKMrXPqr3t8rgF1z1fX53Gkx6NHNoMLtcONt6x
+PqjeeJYdlxfGp9LYgGyMBZhrqsh5AnTIxK3705AOxKNTZNK4PCaoQVUUjHC/MuxZ
+gXMZ2p6fhEQc5c2p2GyR74t+dfaE5aQShEKrwJ6Bjg+BSrqNdMPfxQMgWq2K/Efb
+0pS+AlCMm5WLie3QgTbK91joQGKCZJxhSzeMB30av5W3eB5UYZ3cri0s30v4xwew
+fMfkdhv0aga9cXr67cOaVKl8vrXU5aXBrsNTQV8RM9cCiD70cFZJbgcGRK8l0rE1
+lMIkbSzrChg9JU2E9P5+9o1oliTGWyhq8T+Kdq0nJbkaAD73BjxsCwlsQPwhKYRq
+x93DgbWog/erPBH/+Ex3PmZcuGof8sD6/VUZkf/a+uCbGw+8dpZdhGRMHzqURzCR
+c9k2qbpcIhYclHNISB7jWefpg1EKZ+8X4BDJb8auv+m//KQ6CSJA+Y0InsfsZ/j3
+itUvPAfJrew6syWtcnYF2/jsIaspEkEekAaJ3wZPBuO3BlwJ0f+aSTVUzTmMv9HD
+mHVuaRt6HXxCSIUWh1OOajkdg1MP0QoFbA7D3nMrQlsO9HqY9LDNmlQ+X6C+kTaX
+mqAoEgwHziZrZAF26aynl6zMOmN7Oeb4ynlbxgLsPTff73iU0qXGbWPhEfRYR0Lq
+Tx5Lxe2HUi1r3rKRcUgNdvIeDb8EwBMWixcwYpovuuLl9412ldmnB0UlRmkE/klE
+dqQJQpriayleykP2plJnUjYwwkr1qB64fHNSnMSiLLUI5p65J9zAIZbRR4Vdn/Wv
+dV0NQ92gqGK7oth8BiQ4gYihZR2hzQs9rOp/cXNJxpJ0RkC9hdQeqy/9TLMhIYNc
+cmoZDbxVNz6A5I+0H/5S5+3FudI2c6iONynwOexAa88E2tX9seFTtqSxoH0Q6UHr
+6UddTuSWV6lroD3t0U0rUF5JPcNbvULcf3S1bnwKWyQT+7U1c1oNpSKcwWvINFAu
+awnrprHFYA0D/prSav0pX1xrZs62bd7C+SK7uQBcnVpcUDVwsVsAN1YckFh1Bz2B
+Lb/e4GdYKRn80Vuw4JIlMQ==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/crlnumber b/cpp/test/IceSSL/certs/db/ca4/intermediate1/crlnumber
new file mode 100644
index 00000000000..8a0f05e166a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/crlnumber
@@ -0,0 +1 @@
+01
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/crlnumber.old b/cpp/test/IceSSL/certs/db/ca4/intermediate1/crlnumber.old
new file mode 100644
index 00000000000..4daddb72ffc
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/crlnumber.old
@@ -0,0 +1 @@
+00
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt b/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt
new file mode 100644
index 00000000000..38d3658b8d4
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt
@@ -0,0 +1,2 @@
+R 231220163233Z 210916163233Z A804CD37D0AE2824 unknown /CN=Server cai4 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
+R 231220163233Z 210916163233Z B70BD20AF96E3CA5 unknown /CN=Client cai4 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.attr b/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.attr
new file mode 100644
index 00000000000..8f7e63a3475
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.attr
@@ -0,0 +1 @@
+unique_subject = yes
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.attr.old b/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.attr.old
new file mode 100644
index 00000000000..8f7e63a3475
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.attr.old
@@ -0,0 +1 @@
+unique_subject = yes
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.old b/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.old
new file mode 100644
index 00000000000..08a36b974c6
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/index.txt.old
@@ -0,0 +1 @@
+R 231220163233Z 210916163233Z A804CD37D0AE2824 unknown /CN=Server cai4 revoked/OU=Ice/O=ZeroC, Inc./L=Jupiter/ST=Florida/C=US/emailAddress=info@zeroc.com
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4.pem
new file mode 100644
index 00000000000..3d6020eda63
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFMDCCBBigAwIBAgIIC7pQV4n42HcwDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNV
+BAMMHFplcm9DIFRlc3QgSW50ZXJtZWRpYXRlIENBIDQxDDAKBgNVBAsMA0ljZTEU
+MBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgM
+B0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9j
+LmNvbTAeFw0yMTA5MTYxNjMyMzNaFw0yMzEyMjAxNjMyMzNaMIGKMRQwEgYDVQQD
+DAtTZXJ2ZXIgY2FpNDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5j
+LjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMC
+VVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAwurReI4Jd3wPH1J7x8r7y52OVb7JFQDS4iQujibC
+ppe0WCdzcOvImXyJO74ELfup9ilPY21ehU6rqcTHQ8Sz4XgEjRafXa2StIK79Db+
+vENAKCsJlqgFfrJvpyfQplolJ0kmfjU5bIkXg2EYIrSp6RzbM62jLROwnI1cIUI6
+0TL2cKEjUswAAgyGBcVsa73njyvLkMXQ8pJNyoB9uChIwQ9aWN3v1SR/RmRyhQiG
+IV6ROmslm8dNdjE/37xUzJ0iH3q7VnIQUFIjMBDSYKW52ulsdLNG7ZuT2HfWG5Rx
+stylgbZFwRUcZKmhzjXF8SBdZo880wwSDtcrrtwYC6tffQIDAQABo4IBhTCCAYEw
+HQYDVR0OBBYEFO8khRdjyZIlh7CKToSw9O20KCgwMIHDBgNVHSMEgbswgbiAFMki
+Sypa4gIL2YmRHR18qWSNkVUwoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbYIJAKu/jI7f+3joMAsGA1UdDwQEAwIF
+4DBfBggrBgEFBQcBAQRTMFEwIgYIKwYBBQUHMAGGFmh0dHA6Ly8xMjcuMC4wLjE6
+MjAwMDIwKwYIKwYBBQUHMAKGH2h0dHA6Ly8xMjcuMC4wLjE6MjAwMDEvY2FpNC5k
+ZXIwFwYDVR0RBBAwDocEfwAAAYIGc2VydmVyMBMGA1UdJQQMMAoGCCsGAQUFBwMB
+MA0GCSqGSIb3DQEBCwUAA4IBAQCX7i7On08sLRD0CmmmaaylNRvIOk+GC4PrGdkF
+YwOAtsLdTq3IUcmNddJVwP3JY5n2U/EivypzjDHQ+UbK8O5/wY7AXmt5Z7/elvPm
+IC5rGHE5/mK9vr9JwP3T7wM6P6uP46b9m+uJP/C6V521zudpBV8nWhpeQ0Mgs+Eu
+3Iw7wVh0lzfIIGhjJOHIkaKf1t3JbijpzE0jdK66PzizqxZMkxinSvDtCLj+Pfdv
+C9w7VeQHv8t0kjgzL2L14gQ8COf2EfG4lwNLn+jSkM/rDxd/rNZpwmsnRrIP98hS
+A2jx7Jczg7Bhd/tVFZe1k7bAoLnJfhez5PIfr+0WHEjYbflD
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_key.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_key.pem
new file mode 100644
index 00000000000..49a2c588a69
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIVvW3qbOa38ACAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECDvWgcehMgaUBIIEyEmf7gTDindd
+NebqUmZ+qTMXeiVNJnhQf10aH8m99AKc2dhzKvGSLAAT1epp0/xNRltPFXiEPtFF
+2TTU2IYEHvsuAiBFevH5AmuIZvPOjAw+v6AbwghgLTuwip/LeAxXw1JLoXd+zQZG
+uPn5p9kUZwSNmK80w96piu/LYc5WMzjin49otqhtXWlBiPf6qSKU0MMMqZ1Obimf
+gE5GKMzr1h0m51rPBUuISgbFD/MAtCSadcnEB7u+4Uet7+jwCqXvsndfzqyHQoJ6
+BSeZNn7E6sX6dUKbMbGN6ZV6xPtK+bOC7WzPViTUBDDmw+U3dvz/wf3r/gMZBKH9
+ra3r/O5c/t0ixYSJLOy5kMgLq8D2cL9AgQdSlBk7YQbehAsC3D+/3R7JmVXTVF/j
+z2i/OllhqCLbyqfw5EGjb2RWnlW17NlS1W9kfidIa6K/OvE5CJvM9W5+crsLIB5g
+ef0DUN83TVjfGoX9GWZcSzc2mybcEozsXq0cGv5Mw25PfRbhNDWomCb9q8k/0D6L
+p0at2FwSRlpe3R+ibkgArDdF+hr8TwK8w+EAM/GRyuWol7QmnZPgyB0Fm6KNnjwZ
+mgExG22r81XkU/B7TWL54lZppHKZBybukNfHbLXR3/qAnSybRPzR6eDhcfMRYOen
+JAWUwjgxIBRswGygm98EUY3BWbWS/UD/Oond1pONCEcJHnCQrd8WgSoZjoJDsJ2+
+/aRLyDG688uwxKPmuf/f4iwO6ZIPiDcjrYsXM0Y0kwtPtPb6zJDTgigrDtN19fgJ
+kF5CKCiZF5pGEjCQhvS5FhZuS8JblKDHUtC3tErVjZUXQfmWIPsYYK+a8G6ai+YQ
+Tj3NzDGY/2YE/ALf6J/I1hlZZaxflMzfDGmvAzeNfmbdJuV+o8KtjTK/zhfBmuO3
+CeLmkOFeU/jNL88ppUrLC5H8fg2Ik0/AZpGpK6IHtuckftvGuiY1gdEXmjFxdlIe
+9w3+12K5beNw63anzCSKRH7LpCFzG2yNAZzJqx0RkUvLixBKQzg8aJs9L9uNmhFj
+us0zKJ30AgT5bn/dbni6ghSV3NAVpVnGML9WhaOFkA/LqtPCUhoo6y+T/wTQQDhY
+8ERraAl8Vnj0K8UwqYe8UGX/ldRSnJCJhxxhi+OcH1j3soyg5wqM5aI5tFNTUUv2
+O+4kfh70Ni5lot6KGOgsCX4jvEOOytv8FiQGCRVA7UIQBB8egx7Vb6XaVIlbiWkU
+juIjQKK/bQerGn1+lC1qTsAfVmeyl3CtqEgBkZ8jEblqW9rd2BTq4I2fi8XwSZWe
+ZJngb6HV8++aOX7Ivy2fv3QiKQVeXeHsjXMxbtos7I/uwUF+TXrGP23tbRwB5PMw
+odszE+NPqrxKVtSDqJdwguNuusNcXs2rAuIIBhb1R9CD+0I/F3VMKoMWkwjmlS2v
+s2cmHlCWSoRzABwhro8B7eJEXYEwJeNH77h1J7RnXCUzAbqGs9hkedCNXInjUqe9
+/rryU/BBoqlqJWSMwqYbHdI0rKBSGeKt8DEBXwemd6trKgd5M5K+wxGwioP3E70Y
+oxaePUpWC0XdNhMVWFVY6OWytR2wxSFd2T+l8LUYE7jTakzUOau5OjtHIa46pjbS
+eB50SPqDzhWwqTnYP2ro0g==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_revoked.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_revoked.pem
new file mode 100644
index 00000000000..fefc75e47d6
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_revoked.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFOTCCBCGgAwIBAgIJAKgEzTfQrigkMA0GCSqGSIb3DQEBCwUAMIGbMSUwIwYD
+VQQDDBxaZXJvQyBUZXN0IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2Ux
+FDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQI
+DAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJv
+Yy5jb20wHhcNMjEwOTE2MTYzMjMzWhcNMjMxMjIwMTYzMjMzWjCBkjEcMBoGA1UE
+AwwTU2VydmVyIGNhaTQgcmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAta
+ZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTEL
+MAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt+O2Jay80qTDfZi3l2kbCkrTficv
+hqi9wQa4Zm7ohGWEj2ka7rSSpdeWiCP/Wc3trJAmHAIoZPyxUAneVK2SXhYX1/oL
+fsJKIHgiO1b0t86ALZ4fBOL9SRcXvsmQTwi6vrO6aH2noXjamc0qCABrnKsLpizm
++js/vlxfPamNiNpppYhCf1e0RkvqeC83zucL4VsiHORigsOt3j/7DB+uhBmaDoNN
+OTE9OdUOrinG9EG2CzJqD6lLqfP/4PHOw77Z9h+cKEy0w+de3YpHt8qQLtus7j00
+FxV7B4YuOl2hdR/W+1P5NCXJKO+tx4mW88ik9H6358FW4svPUiyvYNjJUwIDAQAB
+o4IBhTCCAYEwHQYDVR0OBBYEFPwBVZO+Lmvq/Y3umAou7kx6IBZGMIHDBgNVHSME
+gbswgbiAFMkiSypa4gIL2YmRHR18qWSNkVUwoYGUpIGRMIGOMRgwFgYDVQQDDA9a
+ZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIElu
+Yy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYT
+AlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbYIJAKu/jI7f+3joMAsG
+A1UdDwQEAwIF4DBfBggrBgEFBQcBAQRTMFEwIgYIKwYBBQUHMAGGFmh0dHA6Ly8x
+MjcuMC4wLjE6MjAwMDIwKwYIKwYBBQUHMAKGH2h0dHA6Ly8xMjcuMC4wLjE6MjAw
+MDEvY2FpNC5kZXIwFwYDVR0RBBAwDocEfwAAAYIGc2VydmVyMBMGA1UdJQQMMAoG
+CCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQA4PJ45zQ/2m32B7wyVSzqhdwzi
+e5RFpBUMFioK7+HhA7UUccVGZCr+SIvBlF3bsHauyJGWvsC+h1pigTDUVKoWlY5A
+lEuBAbYwGF/PCvMRNNPsdP9bJ7EKUgV0Q4vF5ElguHpX9c4dt2/owhDeM0SJyc31
+5xux42pRR81nYnSPcPqx3/AXXzHwsn8fPeFi9RiP40OXOMBmBl+w6ZySGKed77b4
+rEgQSeHhGKzUJRZ4Myxg5DkCmIvpB+kAzEIJal9B/60HtYlGvnnA0fbH2Nc44uvu
+OXvAvcUHSA7ewZZv7Xt39H5u1aDuL0pjtDwK5Me9wKHtIsyglrbWJvZ1ff/C
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_revoked_key.pem b/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_revoked_key.pem
new file mode 100644
index 00000000000..72fd28da803
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/intermediate1/s_rsa_cai4_revoked_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI5V5ZVJ2XiawCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECArXKmZv4YjDBIIEyAzIcRbgM1v8
+ahWTzve72A4opmIjPFeLGWSo26bX6sAbVnJgE3h9JcdzsvmU1yRCGyhMYJ0BIsyM
+/iDRXKaeQfRDKTUrDP/PlEgTVP2HAeBtC5HS1YVmkZT0EXPy4WbSFcbV0kxaaFAm
+1joyzNnxkZSecpgvVwEfR/dfYk1psPPRAN6X6Ltw/HGTgR8bXCgw56l37NJFJZPt
+V3EygQjeFWxP8dEXh/HHbOoAcEYjtsWkd7kROw9L72xYyXLoyJD1GUWyZor+bn/4
+WDoA8DotPbTmmz2f34nccaeE3u0h78WT03FbSg8VgtvHpJUTvsSTvT/zvQ8/t09O
+pi7ovhtRXgDMpa1n10+7n6+ulw5Rap9cOEogJYiQAA7yorGPHP0v7RGBTtij/nZz
+S7+ZblPfIyLSkK/gRKxc30IlcV+T8EMXYuAqIlOt9F0EyhOlz6RodQibmfEdIM6P
+5U6FMX4eoxDDWR9v9DFHwCKWdo7W9yp8083QAF4akZVV/7VbSFTG59G+CYZ42CNJ
+10HJDJ4uMunMf0eMYv3LXY0GcsCAT9cbgtq8erq8SL5P7Aw9/RIdAuOTlu4NpF49
+9sz0/XcirBHIAXAmKJ3uXWFVEn0MIMkcjb49FBLrTwzvl4san9ktVkqiCPegDgPC
+8FmkWPkGwRP7+mo7qi4lFFv7wmSe51AVW1sH/0umjKksiu/AqV2QH1ZhJ07oyRYE
+VIeRS81Fgn6AizNC7Qn6s6JWnInGzNxDaSuI734JAS7Uj5IjMKoaNT3JT1VwaBDY
+7e/OugP7TRA156Nxht+Z60wlD33/KS/WzXzjST29RJCK/SWd+Nzkm0uF55TX73Oi
+u9PjT61FEUupgdqjAq5AAjWmgyUR1l1mLCYjsgkXQcNWRNrDn1RdKBFQ3qd/EWXo
+1f8VW+iAntr/6agbbErmJBYEMPiI0Nx7cj3ylB+vqFC8UN22uKDhoApxw12Yw4q8
+BKa8Kmw0tzid4y9nCAkbMqAoEpHM2g+6+1MTAPe554tKf1AIzJDh9OVDJ+3zNB4Q
+ZZ2/deYZCwiIlzIwOP07fCNjPN3j31WnHj9yKbuKfCAqsH1Tecva82e+XjCaXxY2
+D3AkXWPSV5EfJFPXU7SmOavEs/bUElrnB+D5oWu6QQrFKR8EVmY/Wl4+QkLhaUxb
+asbWIrebKM4WuJdIbL1oZOCHnYs9A19E5464NKF5eMp+K2DXVopv081DEOHYbXHs
+qrisRlsH0g4BUb2pzTy9ipFeb2i5O9SyznWcl10QT9O7tN9oDhJPD8yTfhkz/aVY
+ckWBv1rEtkejdNlRK+1G/uGAz5lWkEWE7WZ8EYry52L3UK/dRyyIXAKb1VrsrEF1
+vBOuK7APLWDyv/MeB0qQTft/31nObIvfkrpaLhYnY4aXWB1vWGVxkTB9VzJrZGDv
+t5z4zNO2xue62OPpDBLR+Ptbkzyl+ETvUHYQqkk8Q5+nj4MDkKps9n7Eqg4nBcus
+uxRbT2oAjEKIUtFHXaR/VswixRigqeGiXk02Sm7CuWtxpv7sDDWSG1H7rOiqnTl4
+HZTRwwWJ786djVIY08HZR7BP9+9RjKBJFCQy27MwPKTqrVcUr0MhpjOqwxAQeI0N
+AzvlERuvYi0LGLT6Isig8g==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4.pem b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4.pem
new file mode 100644
index 00000000000..240c5a6ee04
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4.pem
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFSDCCBDCgAwIBAgIId8nvsPlcQgcwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgNDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMloXDTIzMTIyMDE2MzIzMlowgYkxEzARBgNVBAMMClNlcnZlciBjYTQx
+DDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1
+cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcN
+AQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAJ5NQmQjh7VhfgmT/65DNDyMQgvvv75S8Ro++O766nOWImY6J0YQpbQ0EEWn
+W1GX+Cs1X2zlvPcg2QOU8/I6pNuYoVRq2nV7Ajgz7mE9ae+xwdpp/aAhpLj6Pr0h
+LfhGAahVihJx7obbCidwVOkKUvixAUjJUUATsKLfCGYkQApBoo/ghhFWs3YHKUm5
+zsPmWn+ubJMsL1o5GrPq9oNqzbWL7iPLmszAVfdmVzqU/i75mNUKeYE5Vq3DAMZU
+WQ1n8SziKFV9dZ6v6UE/sBRsLeAnnl5FYK+AHZlThyzU6D33SjKeEDlW5e0rpLvW
+ezidMSqmnctk5YKJgLvrzdeNAiUCAwEAAaOCAaswggGnMB0GA1UdDgQWBBSJmG0/
+aAbM8+csKZp6eCTGwl8Z9jCBwwYDVR0jBIG7MIG4gBT+K37KwbI8oa/jVsockF8i
+k3PMu6GBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVzdCBDQSA0MQwwCgYDVQQL
+DANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAw
+DgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5m
+b0B6ZXJvYy5jb22CCQCBK+EwhV3jXDALBgNVHQ8EBAMCBeAwYgYIKwYBBQUHAQEE
+VjBUMCIGCCsGAQUFBzABhhZodHRwOi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUF
+BzAChiJodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhY2VydDQuZGVyMBcGA1UdEQQQ
+MA6HBH8AAAGCBnNlcnZlcjAhBgNVHRIEGjAYhwR/AAABgRBpc3N1ZXJAemVyb2Mu
+Y29tMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQAlY20H
+0QqmjUddVTHxseUKGjkdgGrkzEBTVZgkX0Mc+/scws+HEmto6KuiBUc2+SuY2oCR
+IibO/mO3nObxuHvmfmtcGkpqdX9Q2itGIsphR/R2WkTPyeKV2qg7tRpytbTSzzaZ
+HPB3qk4cb5jULuEZDNV7qmTCO1Wevu5MPR6m99lIjaw88A8PweVt5BDj7C4LGipV
+h5W9pAv1meUcZMnXhmNTcQnvCArydJon9/KIyGbHDm2Z8fN3psNgwun1QumASN1Q
+nsoNk72KFPiMlKmuBdZ5nMMPucVVs1j5I1dgVDpohV54zZ/VnwYN+a7xUlM1SaVx
+deGwtS4k5Ac1ANCA
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_key.pem b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_key.pem
new file mode 100644
index 00000000000..5137f5123d3
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIXOaApjh3qhICAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECAIA4sxP1G8tBIIEyAitLVmuyOIe
+svoJhMVDpNptMTCiZ4nhy3ZE57HBzp2DX2YXJFNT3/DyBn4taqv+Mq82xfVxorjc
+tNSo87K0SMDubogtSyHBmmpLgakJUAuiDvos9gXyUBJjNfdc7pUvAaqPxgQHuByH
+ceKA3XcxE3CmSruwPJeNzSb4U0zlD+/fHtle/HUK0Ug01R8e4jSg30QrCOo/IsEu
+UZu0YdE/DPGs2vJ+QUIJOazXbAt+cR7MOzozUCez76FjVdt76im2u4Qcbws7/i49
+MmZ//W0XLJyMT+o/Xu27N/5sM7peVob4tyK/dgycT/scUJvIkWsM0uyfWC89DCy9
+/8rf1GUnayaZkwVxDHcoJscasE3wubsGDuksQFTLI2Y2kjqZZNvrjNkkB7BQ14D7
+M0jamFctIW1X1hYFS+NTdQiWpetHTeunNoBAPpkODmHyRzmjRqYof3gpf1tGtopV
+VMpbeC3Cbjpo53fToWEkinOYp5o3ZNrcVrlxI8HHjtve1DiA6mVCoBhg7QT7Apis
+eqz1WYCKEqx7KKcbGh0ffbgQKuX4DJZjxbf3b7WFAgKf9mOxc3jZh6aKKH7YTX9G
+v6krb0jOAL5JwVOhN/OeTJ03uxOU2xc8I7DbePTmC8LEchy7zwzIhzc0XKM3Jnvr
+2GHHvaXcGYgn2rYG+mPNfhMGKVX1Yyrvnz+zBS9slZdFe/XLj2wtGORa7DdQwYIp
+yULduYOfsYdlONMPwjKG+vb/r9XcxgJenVbZ1EXzfsKGA11rZaSI1sJidHeBMzzK
+GDid0kFs6eQLX9wfupBjZcq9tj5L7CIIrdijFZt4WCklxwSjImBpneLm1WGKIJ0H
+vWtlfZIWiwvyJacnM8yrjTY4oy9Va2/g5QEGfVAtt8zkGWQbIJJynZl2juCCCwD2
+hAR1wmehUk5nfMC452RzC/t1rQHRMBwJktmpwhMWRBHhhBqykCLiRPchoHJ8zlad
+V1Ig7a+jrnXUhVqiY1OuFZMaNLzBV4WlQuC8uWI0jflxFT4kaPKj7VX42jf6GWUd
+KWmq/720LkU9lL6dNJbL2FMjflKHKi5pZsGpEy7YkE1lcF+XzX7rN1M/3ZdM8/3q
+IJ8agYSudNLug5Pz/0iJ/1iQ1VUcPapE2jhaSBI3sZvOYiYq1OgXuO/tE0NugZHh
+2lWuJng+bijgmnEHlQ5/aL0/Y0YrIj4a7rngfAvz4/9apWcGYfQMkorYGq9D1sV+
+UMq8pyxndRTVuzbpJLToj+hI9xQp/f7DZH8vP5d8KzeHv6XuoNUHXqaIF5K8LEdZ
+bqTbNWvp1TnMnNWzAOGRq1qpdKF+/83OhvEuMG1UFbZMCgmpqlBEReaIdD9vIzJP
+FqGlMCUlA4CM4dJOJcy1qi+JudqOvBoJb4+t2IpgJRnqZ71gmafrXZkupO3gZiLD
+I8RM+v/1IyhbzJWn+gIqICuX7EERaMtG9B5uy8xqywTtbSmgpzk8B3HUmYPbe2Yn
+fYiHXWnKzrHHAcYaGYPHf7GgI/tntj3E7CdHgubznzIRTDDJJtUTXAvSV9/saLLq
+zX+wRc7PCKHPHLiKfm2Cf2ogAXU0lF1W9BFZX+xvEgWrkJXhk9Pq0QFHUFEzHrLJ
+nVXsxXcpxeqNmwhmcZHAMw==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_revoked.pem b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_revoked.pem
new file mode 100644
index 00000000000..b75254776a7
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_revoked.pem
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFUDCCBDigAwIBAgIIUo/NVk10uIIwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgNDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzM1oXDTIzMTIyMDE2MzIzM1owgZExGzAZBgNVBAMMElNlcnZlciBjYTQg
+cmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4G
+A1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAb
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAu0CiQLW72Ibhw1okNV5S0UIBOYZtePVRnupgGGGnv6NttSZf
+wuwHiqopXesA8ugjH/Q5FphzRC2Cl7zZ8IkWMfVyS0CtTiylVxkId3S66iiR+tD4
+vnET9CWGN7xDIabu2DaA3LWS2I5HjBg9AKvMJiKXkIa/ZaSUmNcey8w63uWzEO0V
+Ue9ArgvW/sOcjbpKjszcgP0PKuZ2oE6ayHXhWDPP3yAT79ngQBr8rZQx2MzPg4hr
+DTte8F2vec7+HF+v1F3AfcjNqekaADC9ylVFMIG3AT9QY+6m1+kKBhwQOS3ZIxgZ
+x6v0kw1csdqSZ0wgmdjNxQ+CGLXaQRDwqMb7FQIDAQABo4IBqzCCAacwHQYDVR0O
+BBYEFNINgbnp7RP2ww/bQOCoDL549pk8MIHDBgNVHSMEgbswgbiAFP4rfsrBsjyh
+r+NWyhyQXyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQx
+DDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1
+cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcN
+AQkBFg5pbmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMAsGA1UdDwQEAwIF4DBiBggr
+BgEFBQcBAQRWMFQwIgYIKwYBBQUHMAGGFmh0dHA6Ly8xMjcuMC4wLjE6MjAwMDIw
+LgYIKwYBBQUHMAKGImh0dHA6Ly8xMjcuMC4wLjE6MjAwMDEvY2FjZXJ0NC5kZXIw
+FwYDVR0RBBAwDocEfwAAAYIGc2VydmVyMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQAD
+ggEBAHyOhmnssCtKsRQUeBJzPpMi+ljEz1FQ+B4/YqMheytLmnNOxW38J/mVOLse
+E9JulNKP73fk6E98jLlW+H42l9rlowA+zsiQSdRtC7cPyShzcVHL1AdrgykP13gR
+OZZyHQEiFBVF63pVjVigIYbnt0KvU4IgMiYfwnPgLZg0T8YdLldEwTAPZ8fFHC9a
+kKGaO0oiLf5mWpg2HkD8loVJiy05qXjM7Kc0s0d5Wq/yNz1mbOrQYzx26lt2FHVc
+dGiWZHfo5WoiH5o0N43ysGB6nQMpTEU59IwR5iLDNXVczOa/2855/GAetXl+n6q7
+Z6Vj5MAe/CIvb8qk13h2SijLYn4=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_revoked_key.pem b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_revoked_key.pem
new file mode 100644
index 00000000000..f0905a2c1a2
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_revoked_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIkYcakpzB8lgCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECHH0ipwRYGZGBIIEyM10R/Xkidxs
+Yw/j6nQu3IBT68PTLzMJw4f5NC4g+ocfOHxTkvRvEjXaEzEvWpzq+JtnrSEojT6r
+fUA2dvutzBHrMpxpvGRGzOjbs49fgHmtTrdIGasih+yz8dy9LuNBZLz5HsnCpChJ
+IjPo48aUQPiXz+RGGb0UENPwMaff7E6ojwMYpV8IUbZLce1kTTT2vv4RMX7XzfQV
+fnuYgbakqYTkicVyLm2tkXisabjCZkBU236plsKUvr4nQLDrT10WuKsoNFifdZfv
+fFQ/Z3g2S5rEmEsv03n6s+sHKpP9Orx0s2wN9Xo8VWVTqlpanWG6lKfgqby3ufJY
+goa5/v9VTZwEs78w8hK+vU8QE0XSAPEHwZ+UQZ16sIUEgSti0kBbLd4qmlxAWm3F
+Ur8/8P2K2oYHS2XhB0RTVbsa63CZs/mkYTqe//ETUElE/7Z+hKy0bwfzatBlsasS
+D6i77ODUZ3gWYZtEAPRNSe7oa012P2MYdNsaP1LqOmZViutks7jQUMy5FNk8djtK
+tqun3IE8VokfBVuI1pvXqUteZToP8lj0F9EUBh3tJAI2hOMlLVQnLeld/wwC3H9V
+PBy16px8kKFaU6fN67UZcBeZiUpibo/FxLmaNIsNt2Ztp3SolrbeXT+tybsEQOBI
+BWZGKKAAH++JzH7x7Rkfn/fPW6s9SmqfHVOrYXXMn6qHN3gDM0W9a8nk4AnuD5QA
+Xn5C32zCdGJ+gbFMzuj+liy6Hc9KQbY4dlDDy4FyofwL12N/dZqq4Kpvp9ZZ9xag
+HGmjFEaAufnr1qTwTsXaa4uBSnxgcqHvLvEahDZNnX/imWE/IZNK59YGf9YC96UD
+fD5bVzR6NLEIZJDMgGWxf2Bw6RKex7p9233O0UGidn5l8iWZbJH/OyP+8tF4GbsX
+HFZ/PHTWlzvGgWmy5XOEY7lWx4s7b46ic/GntOKJx5TYEygGdgWhUOY+BYS0/8MX
+9kkm2qyTzxFVScYI3MYHB5xKVsq/VTsjOr2O0YxRucSDL3HPMEzbA848ec+P/TrO
+g87jjW/Bj8Dcs5yagLgILYEW/yjwalbJDmK1Z7YyViQ9X9dvrXe5w4Hlu08RiEe5
+Y6OTG1va+h9PPuBo2YlbUVpAaGUsbGoXr1ABt/PB2Uh62jNRw2B5YxRgtDrHg73S
+DfBsbCp89XAJYY9DAx5x5U8IGhOQQnTFunvLL2mj2HNLWLVc7NlIZk7L9gJEuwHa
+czAc5rsfQ8EwT6IJHD7FgIePWmdI/kULdWGoCzBumcEP0FXOvQTDL7Jvob2wky95
+Sd/eCVqIhMXIvzWb6TeWUQk+KEnUNtfrWxGO9fXS25iMgIQtx7TzIKap5/llQbfg
+U8H1U38w+aNP//Mj8Os1Rq2imLr4vWlOlR8h5Yz+nsS26LLKAdrh22H0w/8l3vWY
+OsH76b+yGo77U/OGLYfTp4QpeYjq/L6nI7TGHD58UG5zFDbJBgNwx26rotdd3Qd5
+uh1GQosT3zg4Gqn4ZOgQOrPxLwImScSq/XKics1Z0RtZbqT2QRcIwckRV9YU+7b6
+BA0toyh/NNYUZ4ILpDQ82on424gF8GQL7pf3mzXPPm4bncj+WAaqNCYKBOvYvNJe
+YUAfnTfj31qMPyym+OkyNw==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_unknown.pem b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_unknown.pem
new file mode 100644
index 00000000000..7eb08ec0c27
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_unknown.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFLTCCBBWgAwIBAgIJAJ8FWSNATPdZMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTcxMTI0NTFaFw0yMzEyMjExMTI0NTFaMIGRMRswGQYDVQQDDBJTZXJ2ZXIgY2E0
+IHVua25vd24xDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAO
+BgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0w
+GwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBALJxLpBQKRdlBlH6Kb5F53XF7PRDQZm4z/05JOzXf4ZJNYqt
+wuzgnEPO+M+aWQPpzQJTlPhcNoG+YLSAwvIyFeiG98g4RIvnmWT4G2wG89RJQOjP
+aa55I0jXYyShsFKBtlKW/3Oa2zCV3ZcncvJUuVwxvCHarcKxc1+SX6Skh1TyE7N6
+wwuerGPztgLi7kS6Valn1lsO3qzmVAioBSBejQgdsVMl6ChxF7MWgG2Ei7bBfMSa
+7sdnwUDXwuH0T4U0mP/IOWq9RNvFsdl1/n/MA8JECwJkdjVCXaVnm7wZGsSpe8B6
+Z5vSC+BpWWV81QyWFeYuAXNmqbcmNz4XAzGw/GcCAwEAAaOCAYcwggGDMB0GA1Ud
+DgQWBBTucWJMNPVL2JfMlfA+q+CRjg6AfjCBwwYDVR0jBIG7MIG4gBT+K37KwbI8
+oa/jVsockF8ik3PMu6GBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVzdCBDQSA0
+MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdK
+dXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3
+DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCBK+EwhV3jXDALBgNVHQ8EBAMCBeAwPgYI
+KwYBBQUHAQEEMjAwMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4xOjIwMDAx
+L2NhY2VydDQuZGVyMBcGA1UdEQQQMA6HBH8AAAGCBnNlcnZlcjAhBgNVHRIEGjAY
+hwR/AAABgRBpc3N1ZXJAemVyb2MuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0G
+CSqGSIb3DQEBCwUAA4IBAQAOPCApghGUbY+qnoqLROe9D/+gyBudCyo4EXEaoKkb
+RZjgJw61VkuuyM7SonvQuZD5mPqYEVHofg+pmFbk6hmDRrjd0B/qDiSdyj+YK8ls
+HjjbayvBIDDiN/qowmdfkcBMZUHMiVr4KH3TEuzDcVACmzzNf7PS7O3cD8AxI1qL
+zTufpZ7PLTUcaXOttRSIG2qqXo/6P/995M6zY+VTehtrp03fcN7vXynDuRra8w6d
+3xwEKEcTYM2N9GTiUu6g0OMr06BSYRBDWUKG3OnEstM1mZqoDvtXOCW+1Mgr+keA
+hVEDlSQJI2ie0pjgWRWpo+Cf7u3Rc8WXanQn1gkeAfNb
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_unknown_key.pem b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_unknown_key.pem
new file mode 100644
index 00000000000..ce29f7fd789
--- /dev/null
+++ b/cpp/test/IceSSL/certs/db/ca4/s_rsa_ca4_unknown_key.pem
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIqq5fXqgPv28CAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECI8ivIjb0Hl9BIIEyPyg3TCq5DBE
+uPiHvj7BH9yVBygZDUqDaiB0JgiJXvIH+a075iPkemE0zgS/O0A/W3Wz3S6338AB
+ePayM3gK/mCDBJ2bRtEDbudnajQu9ahJykWbeFhuHIJ/2erFcn4ydsM69f1cMa6d
+GkzHH+ZQEeS9TxkUr5L0z+cxfk3zIDeLO5X2D8rtpIfNr6dy4aS4StpXTVmD5lLe
+npiwUZwKw4vL0Ups8veoeH0NifOW0NKrse1PTvYmxgIWbW2DGdDbH77lxINrWPYG
++kV7gYhrcD7zWwqAWVcUWBiDXzxoCvt0rVzHPnGcNEg6sw8c69FI3zvDK8ouJOTh
+APMCL2WK9hFaUhTyeIBMzXhRypH/qE9zQLO6dnkwtRmMQ6P67yufbNptVUmgC8OI
+eOEBEJwcFNZ0DcM3EQ2IC47qWY+EofTjxzpP9zQRJTL9pvd5TUHvtaDwFLRzy7lz
+7vA3/slTHQajDkzVBPyg8anpKMCRBYU4PCB0zICBaaVFDh6LJC5Hy2pkiW03aH2m
+mF8PpdWpkkqMj7L9C4MFY0j/mLyCxValWZtwLscPcd7ZjGkbLd6nzABwKXL5jZMU
+hpkZ3KeugPwElBy8e6OX/vsCb65s9pBohIz1xLoc6D9CLWzl79FGkfSUJKcrkgLt
+ycdCnbk1pR01mm5qnwKSP03Fb1cbStivVAZqluiq5mtz/JzHsLLzLxunSZIiAnuy
+JhifYvPLg6UICjMpUnuXqrdgR/6qSQXXaIfg5Z1bbZRxes3BpHQRL5woF63sWydf
+kWPHEiI40SHedlYCQY1VdqmvMgT3NJKl3q8xpRP1qar/hCYCsi7KanplStA1UKZ1
+BBFvXoAB3ReUrcLXOsOeJCUTTZSEJOIg0ASHngmoFpnpMaBjpgoiR7FLLWQIRKTX
+uRlVxJkSUpEB+lfGDBjSfVuhCHOLbbGRZ69E1hAN/pUUD9lrcDjKAaI2J6xhl8CD
+IjayHM+jVGmGdAowVLp7h0R9lNZVJLL5hmuZw0SYcMYMrIrSme32R84CQwMZD7i5
+r/EtKAwprhQufLZp6naBfZJPeJ5U+L/28a0Jdm21l0axvpYPKeS0o7X/QWIKfh1L
+G1o7YyyaA4IKM2H6AFfvQlrjVWyj+mCOf4rPrmtSjSygKTx8To1Lz7rvHBsAdfge
++z+JIawm1kJjJFLu0PPv9TqAKVhsuvbebNAXYV4tT/AdPR8id2zXCrNSlfq9Z+yw
+CJSU4jOBOI0IX+rj7npq83NNGYK11+h/l7E5lKI5OcCQWGSWwFQMldHd7wAW3Coj
+PjY3EzzuzzWMOyyS+mlZEktGseQH9+O++635zX+X4w0ACjHTc4404hk788y7iQlf
+BzZUJttcuFzUg2H08gQDmXSQwjiYkBw/t0EZ+4lN4pP/IvzvqFszMbYKfGrVXija
+KTZrI0wVnQwwTq1xdbaZOs+93ElMw7TezZuOH0jBpg9MkjM0llfBJARSbV28Vb76
+FV17TnpqPrGkPJDiA87xNt096K8ckRBd2Mg4yLZh/JfVz7nl1E45YOLUtRX8W2zW
+x6T06YEOqZZmhGe7YBQSTvMP+Rl95fEBeQyAldM/qjtCKSfdCW4h6OZAZtDd/S2j
+YcBlzaTIqIUV4ByAKo7g6w==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/makecerts.py b/cpp/test/IceSSL/certs/makecerts.py
index 576dd9ae328..4cd6e3e3825 100755
--- a/cpp/test/IceSSL/certs/makecerts.py
+++ b/cpp/test/IceSSL/certs/makecerts.py
@@ -26,6 +26,12 @@ def usage():
print("--force Re-save all the files even if they already exists.")
sys.exit(1)
+def runCommands(commands):
+ for command in commands:
+ if os.system(command) != 0:
+ print("error running command `{0}'".format(command))
+ sys.exit(1)
+
#
# Check arguments
#
@@ -53,13 +59,17 @@ for (o, a) in opts:
home = os.path.join(os.path.dirname(os.path.abspath(__file__)), "db")
homeca1 = os.path.join(home, "ca1")
homeca2 = os.path.join(home, "ca2")
+homeca3 = os.path.join(home, "ca3")
+homeca4 = os.path.join(home, "ca4")
if not os.path.exists("db"):
os.mkdir(home)
os.mkdir(homeca1)
os.mkdir(homeca2)
+ os.mkdir(homeca3)
+ os.mkdir(homeca4)
if clean:
- for h in [homeca1, homeca2]:
+ for h in [homeca1, homeca2, homeca3]:
IceCertUtils.CertificateFactory(home=h).destroy(True)
#
@@ -69,19 +79,41 @@ if clean:
ca1 = IceCertUtils.CertificateFactory(home=homeca1, cn="ZeroC Test CA 1", ip="127.0.0.1", email="issuer@zeroc.com")
ca2 = IceCertUtils.CertificateFactory(home=homeca2, cn="ZeroC Test CA 2", ip="127.0.0.1", email="issuer@zeroc.com",
extendedKeyUsage="serverAuth")
+# CA3 include CRL distribution points
+ca3 = IceCertUtils.CertificateFactory(
+ home=homeca3,
+ cn="ZeroC Test CA 3",
+ ip="127.0.0.1",
+ email="issuer@zeroc.com",
+ crlDistributionPoints="http://127.0.0.1:20001/ca3.crl.pem")
+
+# CA4 include AIA extension
+ca4 = IceCertUtils.CertificateFactory(
+ home=homeca4,
+ cn="ZeroC Test CA 4",
+ ip="127.0.0.1",
+ email="issuer@zeroc.com",
+ ocspResponder="http://127.0.0.1:20002",
+ caIssuers="http://127.0.0.1:20001/cacert4.der")
+
dsaca = IceCertUtils.OpenSSLCertificateFactory(home=ca1.home, keyalg="dsa", keysize=2048)
#
# Export CA certificates
#
-if force or not os.path.exists("cacert1.pem"): ca1.getCA().save("cacert1.pem")
-if force or not os.path.exists("cacert2.pem"): ca2.getCA().save("cacert2.pem")
-if force or not os.path.exists("cacert1.der"): ca1.getCA().save("cacert1.der")
+for ca, name in [(ca1, "cacert1"), (ca2, "cacert2"), (ca3, "cacert3"), (ca4, "cacert4")]:
+ pem = "{}.pem".format(name)
+ if force or not os.path.exists(pem): ca.getCA().save(pem)
+ der = "{}.der".format(name)
+ if force or not os.path.exists(der): ca.getCA().save(der)
+
if force or not os.path.exists("cacerts.pem"):
pem = ""
with open("cacert1.pem", "r") as f: pem += f.read()
with open("cacert2.pem", "r") as f: pem += f.read()
- with open("cacerts.pem", "w") as f: f.write(pem);
+ with open("cacert3.pem", "r") as f: pem += f.read()
+ with open("cacert4.pem", "r") as f: pem += f.read()
+ with open("cacerts.pem", "w") as f: f.write(pem)
# Also export the ca2 self-signed certificate, it's used by the tests to test self-signed certificates
if force or not os.path.exists("cacert2_pub.pem"): ca2.getCA().save("cacert2_pub.pem")
@@ -92,10 +124,30 @@ if force or not os.path.exists("cacert2.p12"): ca2.getCA().save("cacert2.p12", a
cai1 = ca1.getIntermediateFactory("intermediate1")
if not cai1:
cai1 = ca1.createIntermediateFactory("intermediate1", cn = "ZeroC Test Intermediate CA 1")
+
cai2 = cai1.getIntermediateFactory("intermediate1")
if not cai2:
cai2 = cai1.createIntermediateFactory("intermediate1", cn = "ZeroC Test Intermediate CA 2")
+cai3 = ca3.getIntermediateFactory("intermediate1")
+if not cai3:
+ cai3 = ca3.createIntermediateFactory("intermediate1",
+ cn="ZeroC Test Intermediate CA 3",
+ crlDistributionPoints="http://127.0.0.1:20001/cai3.crl.pem")
+
+if force or not os.path.exists("cai3.pem"): cai3.getCA().save("cai3.pem")
+if force or not os.path.exists("cai3.der"): cai3.getCA().save("cai3.der")
+
+cai4 = ca4.getIntermediateFactory("intermediate1")
+if not cai4:
+ cai4 = ca4.createIntermediateFactory("intermediate1",
+ cn="ZeroC Test Intermediate CA 4",
+ ocspResponder="http://127.0.0.1:20002",
+ caIssuers="http://127.0.0.1:20001/cai4.der")
+
+if force or not os.path.exists("cai4.pem"): cai4.getCA().save("cai4.pem")
+if force or not os.path.exists("cai4.der"): cai4.getCA().save("cai4.der")
+
#
# Create certificates (CA, alias, { creation parameters passed to ca.create(...) })
#
@@ -124,6 +176,31 @@ certs = [
(cai1, "s_rsa_cai1", { "cn": "Server", "ip": "127.0.0.1", "dns": "server" }),
(cai2, "s_rsa_cai2", { "cn": "Server", "ip": "127.0.0.1", "dns": "server" }),
(cai2, "c_rsa_cai2", { "cn": "Client", "ip": "127.0.0.1", "dns": "client" }),
+
+ # Certificates with CRL distribution points
+ (ca3, "s_rsa_ca3", { "cn": "Server", "ip": "127.0.0.1", "dns": "server" }),
+ (ca3, "c_rsa_ca3", { "cn": "Client", "ip": "127.0.0.1", "dns": "client" }),
+ (ca3, "s_rsa_ca3_revoked", { "cn": "Server ca3 revoked", "ip": "127.0.0.1", "dns": "server" }),
+ (ca3, "c_rsa_ca3_revoked", { "cn": "Client ca3 revoked", "ip": "127.0.0.1", "dns": "client" }),
+
+ (cai3, "s_rsa_cai3", { "cn": "Server cai3", "ip": "127.0.0.1", "dns": "server" }),
+ (cai3, "c_rsa_cai3", { "cn": "Client cai3", "ip": "127.0.0.1", "dns": "client" }),
+ (cai3, "s_rsa_cai3_revoked", { "cn": "Server cai3 revoked", "ip": "127.0.0.1", "dns": "server" }),
+ (cai3, "c_rsa_cai3_revoked", { "cn": "Client cai3 revoked", "ip": "127.0.0.1", "dns": "client" }),
+
+ # Certificates with AIA extension
+ (ca4, "s_rsa_ca4", { "cn": "Server ca4", "ip": "127.0.0.1", "dns": "server" }),
+ (ca4, "c_rsa_ca4", { "cn": "Client ca4", "ip": "127.0.0.1", "dns": "client" }),
+ (ca4, "s_rsa_ca4_revoked", { "cn": "Server ca4 revoked", "ip": "127.0.0.1", "dns": "server" }),
+ (ca4, "c_rsa_ca4_revoked", { "cn": "Client ca4 revoked", "ip": "127.0.0.1", "dns": "client" }),
+ # The OCSP responder doesn't know about this certs
+ (ca4, "s_rsa_ca4_unknown", { "cn": "Server ca4 unknown", "ip": "127.0.0.1", "dns": "server" }),
+ (ca4, "c_rsa_ca4_unknown", { "cn": "Client ca4 unknown", "ip": "127.0.0.1", "dns": "client" }),
+
+ (cai4, "s_rsa_cai4", { "cn": "Server cai4", "ip": "127.0.0.1", "dns": "server" }),
+ (cai4, "c_rsa_cai4", { "cn": "Client cai4", "ip": "127.0.0.1", "dns": "client" }),
+ (cai4, "s_rsa_cai4_revoked", { "cn": "Server cai4 revoked", "ip": "127.0.0.1", "dns": "server" }),
+ (cai4, "c_rsa_cai4_revoked", { "cn": "Client cai4 revoked", "ip": "127.0.0.1", "dns": "client" }),
]
#
@@ -159,6 +236,28 @@ savecerts = [
(ca1, "s_rsa_ca1", "s_rsa_wroot_ca1", { "root": True }),
(ca1, "s_rsa_ca1", "s_rsa_pass_ca1", { "password": "server" }),
(ca1, "c_rsa_ca1", "c_rsa_pass_ca1", { "password": "client" }),
+
+ (ca3, "s_rsa_ca3", None, {} ),
+ (ca3, "c_rsa_ca3", None, {} ),
+ (ca3, "s_rsa_ca3_revoked", None, {} ),
+ (ca3, "c_rsa_ca3_revoked", None, {} ),
+
+ (cai3, "s_rsa_cai3", None, {} ),
+ (cai3, "c_rsa_cai3", None, {} ),
+ (cai3, "s_rsa_cai3_revoked", None, {} ),
+ (cai3, "c_rsa_cai3_revoked", None, {} ),
+
+ (ca4, "s_rsa_ca4", None, {} ),
+ (ca4, "c_rsa_ca4", None, {} ),
+ (ca4, "s_rsa_ca4_revoked", None, {} ),
+ (ca4, "c_rsa_ca4_revoked", None, {} ),
+ (ca4, "s_rsa_ca4_unknown", None, {} ),
+ (ca4, "c_rsa_ca4_unknown", None, {} ),
+
+ (cai4, "s_rsa_cai4", None, {} ),
+ (cai4, "c_rsa_cai4", None, {} ),
+ (cai4, "s_rsa_cai4_revoked", None, {} ),
+ (cai4, "c_rsa_cai4_revoked", None, {} ),
]
#
@@ -196,3 +295,53 @@ if not os.path.exists("cacert_custom.pem"):
if os.path.exists("cacert_custom.csr"):
os.remove("cacert_custom.csr")
+
+def revokeCertificates(ca, cadir, certs):
+ crlnumber = "{}/crlnumber".format(cadir)
+ crlindex = "{}/index.txt".format(cadir)
+
+ if os.path.exists(crlnumber):
+ os.unlink(crlnumber)
+
+ with open(crlnumber, "w") as f:
+ f.write("00")
+
+ if os.path.exists(crlindex):
+ os.unlink(crlindex)
+
+ with open(crlindex, "w") as f:
+ f.write("")
+
+ commands = []
+ for cert in certs:
+ commands.append("openssl ca -config {ca}.cnf -revoke {cadir}/{cert} -passin pass:password".format(
+ ca=ca,
+ cadir=cadir,
+ cert=cert))
+
+ commands.append(
+ "openssl ca -config {ca}.cnf -gencrl -out {ca}.crl.pem -crldays 825 -passin pass:password".format(ca=ca))
+ runCommands(commands)
+
+crlfile = "ca.crl.pem"
+if force or not os.path.exists(crlfile):
+ revokeCertificates("ca3", "db/ca3", ["s_rsa_ca3_revoked.pem",
+ "c_rsa_ca3_revoked.pem",
+ "intermediate1/ca.pem"])
+ revokeCertificates("cai3", "db/ca3/intermediate1", ["s_rsa_cai3_revoked.pem", "c_rsa_cai3_revoked.pem"])
+
+ revokeCertificates("ca4", "db/ca4", ["s_rsa_ca4_revoked.pem",
+ "c_rsa_ca4_revoked.pem",
+ "intermediate1/ca.pem"])
+ revokeCertificates("cai4", "db/ca4/intermediate1", ["s_rsa_cai4_revoked.pem", "c_rsa_cai4_revoked.pem"])
+
+
+ # Concatenate CRL files
+ if os.path.exists(crlfile):
+ os.unlink(crlfile)
+
+ with open(crlfile, "w") as outfile:
+ for ca in ["ca3", "cai3"]:
+ with open("{}.crl.pem".format(ca), "r") as infile:
+ outfile.write(infile.read())
+ outfile.write("\n")
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca3.p12 b/cpp/test/IceSSL/certs/s_rsa_ca3.p12
new file mode 100644
index 00000000000..1f7436010d2
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca3.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca3_priv.pem b/cpp/test/IceSSL/certs/s_rsa_ca3_priv.pem
new file mode 100644
index 00000000000..7f28500d541
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca3_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDYdleCJVKqC10i
+aEGidqFUAQPelLFRJVXTZQh1DRT7GA56zxVY0OLEcCQpQWgAA0wB1o3ZWQQ7Skhg
+UG80PEqJuea+gnvji3GDxzLRmVx2jfkIKKLgcN60QJYHApT56gxVHSutDM+UgK9R
+t3QivMORmxUdb5vI+ZRExOUaz4zJzLkyg+dsfiUMljBccvurflIZAP5fWSeqW12P
+Z4/QYd1BG/oWr9XA7rmaJu8qfzYyvHKIukTqyIiOqvfY3dZl3SdWJP0u2sljFuYi
+N/gZ2SvSV7mAR/5vuVmpYF+/SKYrYguol4kaGrISi3UOkUiDAxSNXXdu8ArGxlQQ
+uJsWQHKxAgMBAAECggEAdd0yVv5FnaukYcjM/E6GF7yZw8fJKTsgGYQo77tY0kRO
+FhbOM9dBst6xAfnITEF/UHzoLhHnWPVgpXkGpDW0DHw6JT/df4/9FlkP1csg6rjx
+gbzGu1kaGqIUTurb/ZywbGP+1TJlkSHk1KUEyqln/8+m1qlf9TXYwv1HFqsuqO4d
+CZxFkIPPVe46toOL41YZeSmPdTecdd7eWa57s8GNYHkAOKIcHVSbPE1IfduYcfcS
+05EkFRzsmxIR0gKx/Xz6rLa9Grg4lzuX+2XJMmUACDyE28i26pqi1xafo4MCdwDT
+CGqfYw/PBcJqJ8lIa1VcA9ev1ZRx3Y2KI28f1j34AQKBgQDr3O5rvA3Yic1gT1Xc
+sFiXpjrCnTfJzq4ZaKQbOLgKJZLK5B+qk5OlS3oUkIug+QyWoCaorZJEU+o2WOtc
+zIvGXMtnRUBXwO0YypAtUKo1Ur3alQ1q/h05BwdwwozO/qdShhTHScGNhM5A9mUY
+007znuwSaKZwlZkckdUhGL/4gQKBgQDq8WJTL99x5VXNtuG/QOuvkE1DUjl1dsJr
+oBbii3kexTPhxb17D/dk6BPqVwETJtK2E3ZZvhkQTDzvwaRSnV06mJBquPKb0d5H
+9zRJ0ddGAUAsz4pqjrtcAAGbmq8Dh98aB9y9kbYuJfONrjCPlRcRfeTf+6WKIxAM
+zAGE0CDiMQKBgQDB0gC+2X9LRRpXHXrCasuyevBogseYd9YLnTjWAcsC05OIVORM
+yQ8YUyjUA2AqfN5CXQLHtDKxIYAi/vkSfigSbqjbiUXxluF/cN3/zvy/6umG2Nt4
+469h8IvFtqn9Y7heET678bkzMUJIkfHL78E+Y4c9LXAwrk5u8swAcZU3gQKBgQCA
+V7anzNoaZPaXdxUhHjzh3klmwk8jLOoOUxjNTvWuannqFtRompNB60md1UOAC9BF
+qKIZajBU5+DN9JFolBBuxxL1Se02U9JCq/dDcD9SPbKqCAIMLcaJ/nLiZwC+RAYL
+OUpLwIKt+QtwVTyv4vkEFCrodJa8vGSzKOqXe/7KsQKBgHG3NlwMPNJ4Tc756lSB
+hGZOnYGC5ze41OOiBQ6PWooFi4AUmJjna7e1e/W5rRapheqU+Dw1c5hIDKiovIdB
+k1rOinT1Xjj/eEthzKWvzF2XlPy8l+teiLKrU0rcQ2PnambEDfTVHVNkWS2wQjJr
+QKwwTRvMkMK/QiG5PzQHciBA
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca3_pub.pem b/cpp/test/IceSSL/certs/s_rsa_ca3_pub.pem
new file mode 100644
index 00000000000..29770144830
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca3_pub.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFFTCCA/2gAwIBAgIIEABmG5rTM9YwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMloXDTIzMTIyMDE2MzIzMlowgYUxDzANBgNVBAMMBlNlcnZlcjEMMAoG
+A1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRl
+cjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEW
+DmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+2HZXgiVSqgtdImhBonahVAED3pSxUSVV02UIdQ0U+xgOes8VWNDixHAkKUFoAANM
+AdaN2VkEO0pIYFBvNDxKibnmvoJ744txg8cy0Zlcdo35CCii4HDetECWBwKU+eoM
+VR0rrQzPlICvUbd0IrzDkZsVHW+byPmURMTlGs+Mycy5MoPnbH4lDJYwXHL7q35S
+GQD+X1knqltdj2eP0GHdQRv6Fq/VwO65mibvKn82MrxyiLpE6siIjqr32N3WZd0n
+ViT9LtrJYxbmIjf4Gdkr0le5gEf+b7lZqWBfv0imK2ILqJeJGhqyEot1DpFIgwMU
+jV13bvAKxsZUELibFkBysQIDAQABo4IBfDCCAXgwHQYDVR0OBBYEFB4JyMyG5Xzt
+lchyfBewWbJavpMBMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQrCd4Qj0N
+oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNVBAsMA0lj
+ZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNV
+BAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHpl
+cm9jLmNvbYIJAOGYOElEzDTWMAsGA1UdDwQEAwIF4DAzBgNVHR8ELDAqMCigJqAk
+hiJodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhMy5jcmwucGVtMBcGA1UdEQQQMA6H
+BH8AAAGCBnNlcnZlcjAhBgNVHRIEGjAYhwR/AAABgRBpc3N1ZXJAemVyb2MuY29t
+MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQAZJXf+vN3L
+EO5fATi4n8r6u4u/NAH6KVW57Y6I0UrOx75Hy4SPdm/3lbMOAo286py5VVypGSfg
+QEy3NHkN+ophanBoODapBvtcWVOZE8D6OyCTZxrqHWbl++C7x7EecmRNTwapPBuF
+do+fUiclwzg/+LyjlxxCU0uDn0FfJzq/Bi+y/tTzxBrk84d3vopBW9ZmhAhZn1WH
+zdBh4f5axcmRgBfcCCILOjb2BjxhBaZUzzrNvUKs1/v5wEd4kuLZyxIsawIf+dLV
+L5spgIVNr+ItagGibzetgXSq6v3i3Q5zxCxWqERuCLElhE1NmQAyoxjgZ0GuerXy
+yEauD7Avxpdg
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca3_revoked.p12 b/cpp/test/IceSSL/certs/s_rsa_ca3_revoked.p12
new file mode 100644
index 00000000000..b0fff44a6d1
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca3_revoked.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca3_revoked_priv.pem b/cpp/test/IceSSL/certs/s_rsa_ca3_revoked_priv.pem
new file mode 100644
index 00000000000..bd4383e9314
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca3_revoked_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDeH1VqquDmETqr
+iVcVfYbDoYhynUlr5omD4DTInjn5bQkguLU4kKkFE33LkqvOBHjQtqj1avgI3olo
+JGMl2hPr9kU0B4OKrPbTHDT0+oG4+2uI/e06Wg4zCqyPiHSZXTTVpzv/ANq0ftJP
+gVpSuAj2mxqf6gpCAPU5bW5VfaXsH/1KidmbbRq3X3GOrEsHyayhc+KzkP3Juyox
+551jzoh5vecaSlTnQi3X/hL3QgBFW0ZUMxjIstHYk4+XjMMwtmmWPR/SSSc0qBMs
+7aYJD1Bxyv6uNYunwhYi9mUMMqW3VDv0TV8bGviGS+7cOEr0gA9kklAHkt6XCZXg
+OpAEZisdAgMBAAECggEBAKM8vcZFTEBn2wkjRpdph7ePp7orc0DTzK3ZAJGLDqoK
+gpHEjJHEZiJv35vS72XZDXy9MFAjy6KhALRDQYYYzVk0xEjnWLl6QW6GJTkAPINY
+af/kNQoUEqlaJ9TYAHCQ+fomC8Zst028ggyh0GJIE3ZAKIHrOpylHZKVpGc5js2G
+mjEZDuoIH1vZ3boXeJrg4nv74Hk7fZ1zfXUEMEJw6mI8LLKIVbWJNwMayKSeJZKn
+a/uyV2B9388Twuz92fKsG79GTBedz8xrb9YXfXpyt9XEvg2FN4CL9OvJaCcEjOdh
+hSEAVkjApDXAHmFnO0Q/EzTFy/pdrV9NrDjnKY2tFsECgYEA9hQ5sLX73II91hix
+xJ0rQvLmntRFmPiIxr/oU2VP1P53CxdT+0kkPo/GkkDyfYx3fbL05Ovn9asHe1aP
+gfDUJi7Ia7gD/8HpRFjPsB+RdQ3x3+9h+Mt6GfUFjUDmzYrIAgPxYAEaerSjUq++
+zupHZCt13KHzZ2+v9zav7GG4zy0CgYEA5xPaUeHGTSjaDh9T60sbcTrxRmrtXKiV
+CmVKTrdPzMrI/8pRMTo841OKGSsVSpP0MwEFzT296m8LXTvot4nUa4ms6SOT5HrQ
+DKHDfHKSXf6dkDQ9WQKbdYi4Acb8tf3mCTSjE4W84D7NCPV3/31amWV9CT6cTeLN
+zx+8SBHmwbECgYAoMfuOatt+FGQnYZdAB3A2mlijXwcTSp2E4XoAjU7x+rLVQ/U6
+2aKq+W81GpjBez1VcfLgpcwY69voAKamUgFFT2T7e25jy3ff6yXZnf5zgVid/Isj
+SZFjRgunHA/XSTEMazp1NRjvLCx1aDGhuND6gsLYzDdnEO5MUkmAMiIu7QKBgCNB
+bSrXBplZJUPIVdZtZCd3db5nrAVaFzs5zweJglxdiCM2rAKVvxpz8Xr7jskNH9H0
+Uv1IcURmYtZ7wHrYRZeOrtn3OqY+cqWqvJetJ1W99i49OirtceiRznk+8emWblVz
+OXpOCk4wZrn6Ma/CYWNMD7KsYc6kTwBN+D0KtilRAoGALA8tzPn/z0dWxdU/3fpW
+6s2iFjuECAo7gNooV4rRkZpIh5plYbNAuZOBvJGDq9AOmd95Z9h/5XhQXv0kADlW
+8M14P0eJZYpi+7Ve/KC71wcj4Rc1YpOUWwC/wLzJl36b92/+ejbXrPd7JPKBTpIP
+6J9JbUSABfxt5myth2opjDA=
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca3_revoked_pub.pem b/cpp/test/IceSSL/certs/s_rsa_ca3_revoked_pub.pem
new file mode 100644
index 00000000000..11fb50b167e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca3_revoked_pub.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFITCCBAmgAwIBAgIIV6Idou+0+kIwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMloXDTIzMTIyMDE2MzIzMlowgZExGzAZBgNVBAMMElNlcnZlciBjYTMg
+cmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4G
+A1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAb
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEA3h9Vaqrg5hE6q4lXFX2Gw6GIcp1Ja+aJg+A0yJ45+W0JILi1
+OJCpBRN9y5KrzgR40Lao9Wr4CN6JaCRjJdoT6/ZFNAeDiqz20xw09PqBuPtriP3t
+OloOMwqsj4h0mV001ac7/wDatH7ST4FaUrgI9psan+oKQgD1OW1uVX2l7B/9SonZ
+m20at19xjqxLB8msoXPis5D9ybsqMeedY86Ieb3nGkpU50It1/4S90IARVtGVDMY
+yLLR2JOPl4zDMLZplj0f0kknNKgTLO2mCQ9Qccr+rjWLp8IWIvZlDDKlt1Q79E1f
+Gxr4hkvu3DhK9IAPZJJQB5LelwmV4DqQBGYrHQIDAQABo4IBfDCCAXgwHQYDVR0O
+BBYEFEQjdvAUYyBNQ5Hr2cr5ddQ/a6YwMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJ
+qE6hzzvQrCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMx
+DDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1
+cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcN
+AQkBFg5pbmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMAsGA1UdDwQEAwIF4DAzBgNV
+HR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhMy5jcmwucGVt
+MBcGA1UdEQQQMA6HBH8AAAGCBnNlcnZlcjAhBgNVHRIEGjAYhwR/AAABgRBpc3N1
+ZXJAemVyb2MuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUA
+A4IBAQB1OZuplteRLwV2PMhCCrrw8974C6vvit4fYl41JwcoA1ht4GNeRi4J608T
+CD2nAFNfhr8U67f0FvwvaxD1Pe2PrYIJ7yT13SiNvVOMhr9VCDl/k1CfMcffxZtv
+WT1LW1sKTdxvu4Yt9ykDNEOS0m2xhbTC7U079qrPrEtCX0nOdsCfFd0mdUXOSqTV
+sgiUzGJO+IcEfMGm0ZYeysms4NJGTfdF72Y1Ec3PERKb+D0dkII8yFJoVevZYmdH
+LsFDKfjCDHAMe630RZkvSok9cO/ezBtXUkEiMYLiiKPbs2JHuhZ9Y5JlBR6LRB1Y
+gU3gLEIK4DyHbekUlnw/0FQAlQGN
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca4.p12 b/cpp/test/IceSSL/certs/s_rsa_ca4.p12
new file mode 100644
index 00000000000..1788f80927a
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca4.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca4_priv.pem b/cpp/test/IceSSL/certs/s_rsa_ca4_priv.pem
new file mode 100644
index 00000000000..5f4da29669e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca4_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCeTUJkI4e1YX4J
+k/+uQzQ8jEIL77++UvEaPvju+upzliJmOidGEKW0NBBFp1tRl/grNV9s5bz3INkD
+lPPyOqTbmKFUatp1ewI4M+5hPWnvscHaaf2gIaS4+j69IS34RgGoVYoSce6G2won
+cFTpClL4sQFIyVFAE7Ci3whmJEAKQaKP4IYRVrN2BylJuc7D5lp/rmyTLC9aORqz
+6vaDas21i+4jy5rMwFX3Zlc6lP4u+ZjVCnmBOVatwwDGVFkNZ/Es4ihVfXWer+lB
+P7AUbC3gJ55eRWCvgB2ZU4cs1Og990oynhA5VuXtK6S71ns4nTEqpp3LZOWCiYC7
+683XjQIlAgMBAAECggEAHwbLhW8FUUKbfmsYiOI5IcjnxQknjrkY8mj3R3e8bg02
+Ds1FF1F5+Njfe5dyqYpcpLNgUaqxn8o7Xp1aNtbRqwy+ShprWO1UIQnkpgBwe/9e
+HF37zN/rNiouE8mmBexKtOCXIEheVOYnllVI/yf73SxsMQTsPN/fFf0a21ItjxTB
+SkkWDlqekVv/x8DV1VupVjbg7CWEYrqesU5BxQLCUh/niIOQU/o4Jke5THpSD6l/
+xlpenEWCN8r1Ajop1DHZqg/NGWTJzpCwECpjXJuEOHkchpAhrAljNjJFLn5Q1oW+
+C1O6fxM56ZHl2c1ztMz1Q5s++nrOXdD8vVrQ+AE6AQKBgQDLTE5VEELuOJ9JTJu2
+1bxnP6nCTNJbWfikEiYevE5z/eJziX1PC77qc/029XoBtw7DciIV+TfrdFLsX7kt
+LjCRwSm9VdlBEn4Jhvz2Er6dN7cumYlr3JAJet22ktmnbXc0evfdyLt5QJf0a971
+zMUO8s2ERdy8l3oplwKnLNxbpQKBgQDHVtDdP/ZvZu2uhw9u667E9I8n0B4ltXRk
+dREsS5grJLvrwa96OEFfYs7MCsIWhGb36G95gE9qM7HK6lwIQACgxdWSfu+n71Yd
+LKteP81RHx2HMVG+uxSa7vAJoDCPJG8Ddc4j4ABFLVP7+O1EXWvz48X+wtxOnPzB
+Lz5JB49EgQKBgBAuIo3inXEYUJUk47/JgxU0m+467wMWRhPI3f/UPOo+aqeHadHA
+vZErahvVrcA1MZecndnh2/GBcJgfhj1yT6tKFGhdTM1BC4b2l2t+Um1w4cNztNxA
+0bXvcXX2ehw5OiOTJecg8srTuURa0YP+qDBoYrMEXG0mITLuMefcSi2BAoGBALfu
+JESyOzppl9BdMOFhOF7lZZ4Py3Fx79atqk3b5qmQeJE9oyO7+p3/9t6Q4quSOcxv
+vUQ4H47X6ipYetjl7W5rfPhyhcHH9gZvbCRH7LP4aO+Qk2PRDV80L2pCU+wQaxqf
+PbkefEFYZNDvzEYziWN9/PhoZo1nD1VVuTv7bLeBAoGBAKKtiXx2kx8YYWTVoJor
+3PWiYHWjPrL1yV4Dx05vQXcnXIlfucHPDQDHkCrRB/TVc+VsDyBBg5XmoKT3fWZv
+d9gnurnyrsnsQaKkaFbPeJpWweS4qTJyRO58RxZt555TemrTWCaBZX46Z6PKHQsh
+Lb6HUQaCWVA8GgXd+WOVNfA1
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca4_pub.pem b/cpp/test/IceSSL/certs/s_rsa_ca4_pub.pem
new file mode 100644
index 00000000000..240c5a6ee04
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca4_pub.pem
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFSDCCBDCgAwIBAgIId8nvsPlcQgcwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgNDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMloXDTIzMTIyMDE2MzIzMlowgYkxEzARBgNVBAMMClNlcnZlciBjYTQx
+DDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1
+cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcN
+AQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAJ5NQmQjh7VhfgmT/65DNDyMQgvvv75S8Ro++O766nOWImY6J0YQpbQ0EEWn
+W1GX+Cs1X2zlvPcg2QOU8/I6pNuYoVRq2nV7Ajgz7mE9ae+xwdpp/aAhpLj6Pr0h
+LfhGAahVihJx7obbCidwVOkKUvixAUjJUUATsKLfCGYkQApBoo/ghhFWs3YHKUm5
+zsPmWn+ubJMsL1o5GrPq9oNqzbWL7iPLmszAVfdmVzqU/i75mNUKeYE5Vq3DAMZU
+WQ1n8SziKFV9dZ6v6UE/sBRsLeAnnl5FYK+AHZlThyzU6D33SjKeEDlW5e0rpLvW
+ezidMSqmnctk5YKJgLvrzdeNAiUCAwEAAaOCAaswggGnMB0GA1UdDgQWBBSJmG0/
+aAbM8+csKZp6eCTGwl8Z9jCBwwYDVR0jBIG7MIG4gBT+K37KwbI8oa/jVsockF8i
+k3PMu6GBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVzdCBDQSA0MQwwCgYDVQQL
+DANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAw
+DgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5m
+b0B6ZXJvYy5jb22CCQCBK+EwhV3jXDALBgNVHQ8EBAMCBeAwYgYIKwYBBQUHAQEE
+VjBUMCIGCCsGAQUFBzABhhZodHRwOi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUF
+BzAChiJodHRwOi8vMTI3LjAuMC4xOjIwMDAxL2NhY2VydDQuZGVyMBcGA1UdEQQQ
+MA6HBH8AAAGCBnNlcnZlcjAhBgNVHRIEGjAYhwR/AAABgRBpc3N1ZXJAemVyb2Mu
+Y29tMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQAlY20H
+0QqmjUddVTHxseUKGjkdgGrkzEBTVZgkX0Mc+/scws+HEmto6KuiBUc2+SuY2oCR
+IibO/mO3nObxuHvmfmtcGkpqdX9Q2itGIsphR/R2WkTPyeKV2qg7tRpytbTSzzaZ
+HPB3qk4cb5jULuEZDNV7qmTCO1Wevu5MPR6m99lIjaw88A8PweVt5BDj7C4LGipV
+h5W9pAv1meUcZMnXhmNTcQnvCArydJon9/KIyGbHDm2Z8fN3psNgwun1QumASN1Q
+nsoNk72KFPiMlKmuBdZ5nMMPucVVs1j5I1dgVDpohV54zZ/VnwYN+a7xUlM1SaVx
+deGwtS4k5Ac1ANCA
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca4_revoked.p12 b/cpp/test/IceSSL/certs/s_rsa_ca4_revoked.p12
new file mode 100644
index 00000000000..8802156efda
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca4_revoked.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca4_revoked_priv.pem b/cpp/test/IceSSL/certs/s_rsa_ca4_revoked_priv.pem
new file mode 100644
index 00000000000..563064d4d60
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca4_revoked_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7QKJAtbvYhuHD
+WiQ1XlLRQgE5hm149VGe6mAYYae/o221Jl/C7AeKqild6wDy6CMf9DkWmHNELYKX
+vNnwiRYx9XJLQK1OLKVXGQh3dLrqKJH60Pi+cRP0JYY3vEMhpu7YNoDctZLYjkeM
+GD0Aq8wmIpeQhr9lpJSY1x7LzDre5bMQ7RVR70CuC9b+w5yNukqOzNyA/Q8q5nag
+TprIdeFYM8/fIBPv2eBAGvytlDHYzM+DiGsNO17wXa95zv4cX6/UXcB9yM2p6RoA
+ML3KVUUwgbcBP1Bj7qbX6QoGHBA5LdkjGBnHq/STDVyx2pJnTCCZ2M3FD4IYtdpB
+EPCoxvsVAgMBAAECggEAIcoN/UNN/EqKnqe7dO3qX9xbQDgjtPn/mn+Mi5nDnW8u
+MswT56aTzc/a2xm2+B4viGqXip5D3n+f2yW25hK2sJkr4KxxGXQw+cCIqJWlzO85
+OFtRJ3xcL2g+Cfys2Hu5Ccb8Bde2AeHaw0r0ZxSZKCCB3RCTpRHHxrS61+eoj+Pw
+H8UL+buIg1rEI+1LBEu6nxzkqQWfdNCoFtx4GIHx+mlNd7jgC4DK3q0Vo8PldCla
+ccYFjBATG7ra60IclqTuHm0tOFHZiiBXoZTIlU6bNLU6ymiddU7zzFpVqtzXRHbm
+U8WB5mOhSnd2V60GW8snjjFprOqyrseC47LqyiwoWQKBgQDd93ruyUCPlUktZXbh
+0nc1X5l80Mkbw396FjZH7cHR3CBW9354xFcHdPnmcsJkUBaAKTGjCsIfs7/NzNBt
+4lFkZOd12zofPSstqk9xeSNiKvfPwURGtiIUCxiTwSQAMJ0PGNCYOwQ7eoIKSaNt
+tX8nlI8oZFZGkpkCwVSMTxKcRwKBgQDX9pGLZKD2Tih1af29bLW04RunQX4wvh5c
+tPHFWNG0562ledREApRqk8zJJbOv1TIpiE6+RD79m01tKwCO6V2M3gINuwnxkzCd
+io9303xBaxkWwHK03ePtsKuICZnwDczzi4RMbe0hhRxBEI7QVtl/uUj0xc7YWP7j
+o3U/qAwHwwKBgQDQAYYTVUeKBmUABLCGaLvLqZ3laKa9vNOuLjiJ6VWTe0xXEzFS
+rPO9ijJRccOXS7H6QiBA4OkP2lto2YGNJ+QMR77cJCfwdFsNPSebd+DfstJtv3hj
+J3UCAW/zrrA0+VmFd0SrE8sgjeplB6L+QXI6Pi51tKlhEyoOeevoXIVdKwKBgBTB
+yy1lp57k1jiqzkuVlkVjWYAS6GkQ7OQmNBKuvcEwf10nP4Kl6NPxjr5KlGGzERYy
+1ras4o0Hj0KN3ojd3zL556KgNo10gzixJ6bxucCj5Y5tQtkldpHS6Dm0CoqrGObT
+owyhiCgvng6W49Mcdd0z1tJH7OCYdS8197/9i+J3AoGAEFtaYF/TzNdy1BbeWf2B
+PmLlq8tJ21fseKX3zJJspsBQNJzp8CCSv4detDdZfWdvfYZwUN5gMONirR0uiNEm
+aIecsPVX8kJzehCWC+iGlS9gOZnZjwwRE1qGFy27c1pJdRLtViSyIXs/M+ObZlHd
+/kczC+3VNc7qpvw3oMwVBz0=
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca4_revoked_pub.pem b/cpp/test/IceSSL/certs/s_rsa_ca4_revoked_pub.pem
new file mode 100644
index 00000000000..b75254776a7
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca4_revoked_pub.pem
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFUDCCBDigAwIBAgIIUo/NVk10uIIwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgNDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzM1oXDTIzMTIyMDE2MzIzM1owgZExGzAZBgNVBAMMElNlcnZlciBjYTQg
+cmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5jLjEQMA4G
+A1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMCVVMxHTAb
+BgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAu0CiQLW72Ibhw1okNV5S0UIBOYZtePVRnupgGGGnv6NttSZf
+wuwHiqopXesA8ugjH/Q5FphzRC2Cl7zZ8IkWMfVyS0CtTiylVxkId3S66iiR+tD4
+vnET9CWGN7xDIabu2DaA3LWS2I5HjBg9AKvMJiKXkIa/ZaSUmNcey8w63uWzEO0V
+Ue9ArgvW/sOcjbpKjszcgP0PKuZ2oE6ayHXhWDPP3yAT79ngQBr8rZQx2MzPg4hr
+DTte8F2vec7+HF+v1F3AfcjNqekaADC9ylVFMIG3AT9QY+6m1+kKBhwQOS3ZIxgZ
+x6v0kw1csdqSZ0wgmdjNxQ+CGLXaQRDwqMb7FQIDAQABo4IBqzCCAacwHQYDVR0O
+BBYEFNINgbnp7RP2ww/bQOCoDL549pk8MIHDBgNVHSMEgbswgbiAFP4rfsrBsjyh
+r+NWyhyQXyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQx
+DDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1
+cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcN
+AQkBFg5pbmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMAsGA1UdDwQEAwIF4DBiBggr
+BgEFBQcBAQRWMFQwIgYIKwYBBQUHMAGGFmh0dHA6Ly8xMjcuMC4wLjE6MjAwMDIw
+LgYIKwYBBQUHMAKGImh0dHA6Ly8xMjcuMC4wLjE6MjAwMDEvY2FjZXJ0NC5kZXIw
+FwYDVR0RBBAwDocEfwAAAYIGc2VydmVyMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQAD
+ggEBAHyOhmnssCtKsRQUeBJzPpMi+ljEz1FQ+B4/YqMheytLmnNOxW38J/mVOLse
+E9JulNKP73fk6E98jLlW+H42l9rlowA+zsiQSdRtC7cPyShzcVHL1AdrgykP13gR
+OZZyHQEiFBVF63pVjVigIYbnt0KvU4IgMiYfwnPgLZg0T8YdLldEwTAPZ8fFHC9a
+kKGaO0oiLf5mWpg2HkD8loVJiy05qXjM7Kc0s0d5Wq/yNz1mbOrQYzx26lt2FHVc
+dGiWZHfo5WoiH5o0N43ysGB6nQMpTEU59IwR5iLDNXVczOa/2855/GAetXl+n6q7
+Z6Vj5MAe/CIvb8qk13h2SijLYn4=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca4_unknown.p12 b/cpp/test/IceSSL/certs/s_rsa_ca4_unknown.p12
new file mode 100644
index 00000000000..d3615e8e6b1
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca4_unknown.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca4_unknown_priv.pem b/cpp/test/IceSSL/certs/s_rsa_ca4_unknown_priv.pem
new file mode 100644
index 00000000000..024f127381b
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca4_unknown_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCycS6QUCkXZQZR
++im+Red1xez0Q0GZuM/9OSTs13+GSTWKrcLs4JxDzvjPmlkD6c0CU5T4XDaBvmC0
+gMLyMhXohvfIOESL55lk+BtsBvPUSUDoz2mueSNI12MkobBSgbZSlv9zmtswld2X
+J3LyVLlcMbwh2q3CsXNfkl+kpIdU8hOzesMLnqxj87YC4u5EulWpZ9ZbDt6s5lQI
+qAUgXo0IHbFTJegocRezFoBthIu2wXzEmu7HZ8FA18Lh9E+FNJj/yDlqvUTbxbHZ
+df5/zAPCRAsCZHY1Ql2lZ5u8GRrEqXvAemeb0gvgaVllfNUMlhXmLgFzZqm3Jjc+
+FwMxsPxnAgMBAAECggEAeTTwEA6jGsUAegaW/Cu3gQQkY/abRLOIc9SxBD+M28Y2
+nDBTS1t2SYj48OtCs6nIG2ByvBDG5XJPdcxQnvrubrfe7x1pUi7Kvw7YcZR3Yycu
+8/SPMHgQQ5YqPeOmRSTel1MByaDSajoh/l5Jcdmi3sDZrZVAmhK276AZX1hypHt3
+QULWLSlEB26dHC2sOMq6PHq6PkBJKjy7gBu0yMr4HTPeQnaNSX1vFZfTNOUbrHBI
+jaFo7CBAg+BpSdQrt7ZycE33YxOO/pfG8aAyrbjfeOpUNktkOOf3q3CtsTIAD2/M
+PLkmUMlbF45Fgmb6xinY6Pz0nKBCUnoAsOydUCtkAQKBgQDmYgOP+PP6+eVpyJ3B
+j7IL2mJfaHoDmLEl+EBqauuh8KiTrXwwwc9kIWiw7ivjcdTwXf+fOF9z/a5a8ETy
+3n57bdRG2g5xZeSk6WMys+fvlQ52OAJasJdWZ+e8fAEI/TU9WPBZH2QLsAYcnd5T
+ZnAuDRscWfIRLloqEMkLomrN5wKBgQDGSKS5wVrAOWOugNPKbKAFfpMOI/RMZmjP
+xSTAqSqvDYsWNCliYbdj0siauXkWlSK29+HSvF1RLA+6X7MmBRSB3sfOfZLRyria
+PKe9EEIhjdWbOlFkku3HkklTVecQ361Q5VWja0tb5Yc1Ox0++tdm4IQbN2CW3Mdu
+wwAW0PGNgQKBgQC25s2pOZ6JfGf0Cb+k8i4KVwCOemWUAV9yo5qQYf5cfLF5PNxB
+4TyDZDq3bP8O/Upu4lGU2K5/acFIlURIBPgpidJjxa59vMU/X8LPeCEFBjOLC4Bi
++5vKj4ddDp3LwyrHX5rBRrioxsCza2ockFEzXlhNs+MIXOJcTyMtx24/tQKBgC38
+6zeqAMJUjSoL9xMb3oFnufOtoxuVJPoLX1rP4XZ4Tan4ryCCSWZ9nMlF+y+hp0uI
+cnfN+Fa7QWqYh5Rp2TfF09GwjjzaJ7aeGsle2/esTb6S6A3Lhhqjcx5A7jabqjb4
++cPNPs0xjwppi37v7sWNjRZC4cQbsKWf1IV2MJABAoGAVlfUR5Kxop8poggFplTv
+p68HR98g7sMbm/JG2jo4047c/uwqONDF1AhPXRXZSAmXu0TNo4WGmJ/v0Dr9ZJol
+N3TfD0QT5W+uMvyDitXI5evCGTRYoiB3AIXpKbx3/0EAvI8jr4KsQuJpwMMAqX4q
+L1bAOYgSdgKySBAsJVLvK0A=
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_ca4_unknown_pub.pem b/cpp/test/IceSSL/certs/s_rsa_ca4_unknown_pub.pem
new file mode 100644
index 00000000000..7eb08ec0c27
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_ca4_unknown_pub.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE-----
+MIIFLTCCBBWgAwIBAgIJAJ8FWSNATPdZMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTcxMTI0NTFaFw0yMzEyMjExMTI0NTFaMIGRMRswGQYDVQQDDBJTZXJ2ZXIgY2E0
+IHVua25vd24xDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAO
+BgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0w
+GwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBALJxLpBQKRdlBlH6Kb5F53XF7PRDQZm4z/05JOzXf4ZJNYqt
+wuzgnEPO+M+aWQPpzQJTlPhcNoG+YLSAwvIyFeiG98g4RIvnmWT4G2wG89RJQOjP
+aa55I0jXYyShsFKBtlKW/3Oa2zCV3ZcncvJUuVwxvCHarcKxc1+SX6Skh1TyE7N6
+wwuerGPztgLi7kS6Valn1lsO3qzmVAioBSBejQgdsVMl6ChxF7MWgG2Ei7bBfMSa
+7sdnwUDXwuH0T4U0mP/IOWq9RNvFsdl1/n/MA8JECwJkdjVCXaVnm7wZGsSpe8B6
+Z5vSC+BpWWV81QyWFeYuAXNmqbcmNz4XAzGw/GcCAwEAAaOCAYcwggGDMB0GA1Ud
+DgQWBBTucWJMNPVL2JfMlfA+q+CRjg6AfjCBwwYDVR0jBIG7MIG4gBT+K37KwbI8
+oa/jVsockF8ik3PMu6GBlKSBkTCBjjEYMBYGA1UEAwwPWmVyb0MgVGVzdCBDQSA0
+MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdK
+dXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3
+DQEJARYOaW5mb0B6ZXJvYy5jb22CCQCBK+EwhV3jXDALBgNVHQ8EBAMCBeAwPgYI
+KwYBBQUHAQEEMjAwMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4xOjIwMDAx
+L2NhY2VydDQuZGVyMBcGA1UdEQQQMA6HBH8AAAGCBnNlcnZlcjAhBgNVHRIEGjAY
+hwR/AAABgRBpc3N1ZXJAemVyb2MuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0G
+CSqGSIb3DQEBCwUAA4IBAQAOPCApghGUbY+qnoqLROe9D/+gyBudCyo4EXEaoKkb
+RZjgJw61VkuuyM7SonvQuZD5mPqYEVHofg+pmFbk6hmDRrjd0B/qDiSdyj+YK8ls
+HjjbayvBIDDiN/qowmdfkcBMZUHMiVr4KH3TEuzDcVACmzzNf7PS7O3cD8AxI1qL
+zTufpZ7PLTUcaXOttRSIG2qqXo/6P/995M6zY+VTehtrp03fcN7vXynDuRra8w6d
+3xwEKEcTYM2N9GTiUu6g0OMr06BSYRBDWUKG3OnEstM1mZqoDvtXOCW+1Mgr+keA
+hVEDlSQJI2ie0pjgWRWpo+Cf7u3Rc8WXanQn1gkeAfNb
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai3.p12 b/cpp/test/IceSSL/certs/s_rsa_cai3.p12
new file mode 100644
index 00000000000..5303a746dc2
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai3.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai3_priv.pem b/cpp/test/IceSSL/certs/s_rsa_cai3_priv.pem
new file mode 100644
index 00000000000..19ac41d7536
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai3_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrtlryuD/Nt1eN
+Rl/Lr55PFwoZF/xXHpHFN2hDlRgqxIB3oaR2pukXjiNnsz+jJaAFO0C3fZiaGtWC
+Y18s9pdppsaE7k2W8TrmPoERAl2/WnV3DYJCaPv0mtlDRYqusWqaNLjBWbMNH9zo
+q+BHeEuSgn+3nklfnv9JaYkL0lGCjPNCb1KSXRn2Qv1Kinrz7Ft4odtkSTVD+xAg
+1iQnRGHY/Zdy/1L7RQq7EDoq2+AZBiHW6dXRTEPzaxyimBvDLTJWykvJLOyPP84W
+z4IKPCS1bZHkQWI/h3UahDIp6atjtdLaQq3YfPzKylgRRkHse9yhcQddoZyn/gEV
+JDtfz/flAgMBAAECggEAMOa17/nY8dUM8gbgsTlKdGuzTIIwMv9ZtDibUOPdBhEA
+JRG7rK7MIxEvtBCwRt4oPFUrkRYLp5eMxp1WNY/kfwon7yOOpTX9+CREzXtHB3/T
+hBwsxIzxdC/FQAtF+4o7Ob9Z/nZ1L3+rgfew36m6m/beOISzkK/PNDEB/oPfArZ5
+ybiotNI1gq3QNRKgFQWUTH8skC7URJOE6XtqiEw9XnWRE2G3ngOlopsb2qhgrYTi
+3f34QxOxdmDJEq2Js7QwKe9AGrDaFaXSLLf+hOmj+f4oLCDnP0ET0TLXQhvWU6H9
+M8agSVr4bbZlF11+PTZ/rVvTrqn7whmuunxe8Nzh4QKBgQDfKVPyyw2wA/XL2ynA
+69QVPVbWwsH164Q4oJoP+URP/x5H7zkcW8oXEtAHPwSuZ2+kkkai/VTNj9iwB4sY
+Goe4XFgCOSMZRenGvUWSx/vTeFm6wZoN57NuwFU4kZJu51Kg2zSscik05+BW9jqW
+kec2jAKF9mUAeC4vwzMeEtXn4wKBgQDE+uXK6Nj7teeLJ5NZ6btQoKLJmuXiI1ub
+vT1zQ75fnNJ6hBCtyxun969gYU2oHwWj9pumsEAKmxCC8W1oJ4XuUVxQOsPcolQO
+Vm/GQyB7w5PBfLooHqeKw98x7asQYbgBTo5xi0L3uCKyPZM3/ZMLpAhVJd6l5Y9I
++nHO4bfblwKBgCF1btK+QwUa8uVnrLDyKtAsbDKy7KXUc/SRj8fJVcawt3eNlIB9
++qTO+0W62xbTB1gjXlfdp7NSV+i8mMw6XhL0NXXP30VQyCY2BpJlTYp9RubLVC+1
+h5+ZUq2ylcPvBuJ7O0CHtUnrYiVnsY0VvxbckxxGvwn8+t/KYoWlyVCFAoGBAIwK
+mE6PBpzFsY0kIMVev7ZNzg4o2uDQJHPvsX1+Hx2Yv6cstzLn4IylMgECjJRHIdp1
+HCoAyjcAEVgWzqKq3rQVEd1UOiVlHv9mgmbhGHoFDMoVo7+cM58bLFYx01l9L7V2
+JR0iVgUJ21j/H+hBlkZDY00t9EHbl+fZbgoYPX+XAoGAFne8xomgrHsXynSFCXN6
+JXBoVTnrTszy+ah39TRF4L7Tm83PR4kgmcrEriP2oILXloGyz0dtJFNxzYrCBEeI
+eagt9+/RabkaGjtgDIGpfyHPbfF9Mhj0Q/YOMjon0zRPLuff38kyhWk0M8MNSrw6
+0epgyM5rD6BG0d75yjwbqKA=
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai3_pub.pem b/cpp/test/IceSSL/certs/s_rsa_cai3_pub.pem
new file mode 100644
index 00000000000..f7c1b0a9906
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai3_pub.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFBDCCA+ygAwIBAgIIPbqRm8UBpR4wDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNV
+BAMMHFplcm9DIFRlc3QgSW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEU
+MBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgM
+B0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9j
+LmNvbTAeFw0yMTA5MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGKMRQwEgYDVQQD
+DAtTZXJ2ZXIgY2FpMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5j
+LjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMC
+VVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAq7Za8rg/zbdXjUZfy6+eTxcKGRf8Vx6RxTdoQ5UY
+KsSAd6GkdqbpF44jZ7M/oyWgBTtAt32YmhrVgmNfLPaXaabGhO5NlvE65j6BEQJd
+v1p1dw2CQmj79JrZQ0WKrrFqmjS4wVmzDR/c6KvgR3hLkoJ/t55JX57/SWmJC9JR
+gozzQm9Skl0Z9kL9Sop68+xbeKHbZEk1Q/sQINYkJ0Rh2P2Xcv9S+0UKuxA6Ktvg
+GQYh1unV0UxD82scopgbwy0yVspLySzsjz/OFs+CCjwktW2R5EFiP4d1GoQyKemr
+Y7XS2kKt2Hz8yspYEUZB7HvcoXEHXaGcp/4BFSQ7X8/35QIDAQABo4IBWTCCAVUw
+HQYDVR0OBBYEFHHsPtwtb8iiYoaMrX5tAmSFb3TwMIHCBgNVHSMEgbowgbeAFNmp
+jle0km7Yn9UoK6Aon0IBnvJAoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbYIILgt8kE/hRjEwCwYDVR0PBAQDAgXg
+MDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly8xMjcuMC4wLjE6MjAwMDEvY2FpMy5j
+cmwucGVtMBcGA1UdEQQQMA6HBH8AAAGCBnNlcnZlcjATBgNVHSUEDDAKBggrBgEF
+BQcDATANBgkqhkiG9w0BAQsFAAOCAQEAfkhoJzHDCF8NBUYSZX/3wEM0w6R9Tegq
+b6gw1/neYHbGUCOAt9eWhFGAl7xOYwE8GAWZ0R1Y4WG4gxkqnjnq5vi8qNUYYImr
+abnjAdfNrCih3ArBU+xrzHkKd+eYuqMLLkQhh9h9xrZqMQsucrH96RcfSYBOAiIW
+ju6w0CmJlabK/0jO7V7ZR/hZ+Nj7819PWu/XDN1EnY6oe5hHAUBCoT6ieDgz+4lp
+PSVz4I3Ql4OJVFjBBVg9A/pP3tTICFdgJcmo4jn6s+7LIbaFDR0mHneN1ZPs1CUJ
+FPzNtA4qV8Mjv0AxzqBZVL3ypQTL/Zzr9GFOCT7OZOHQtXNq5+/mZA==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai3_revoked.p12 b/cpp/test/IceSSL/certs/s_rsa_cai3_revoked.p12
new file mode 100644
index 00000000000..659cd45a7ff
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai3_revoked.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai3_revoked_priv.pem b/cpp/test/IceSSL/certs/s_rsa_cai3_revoked_priv.pem
new file mode 100644
index 00000000000..62158819a0e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai3_revoked_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDIYXWIGMmbgMJ2
+zTuHMtbEEKBGpbnkuXmwPCzQkUsnT2aFznuW7RrmXbzYEXIR1cz/o3VxxZYuciMb
+icxp0PfmpxEFWV0h7u/GSoWqQtBUfYy3ksHd0zBYKVs6bSSdOLDrCZn1XLUlq3Fw
+BilkswET0wdIzJEHwlcmDnvp8UDKqaiQLydJmlgKl/cE1Qka4dOlnxXWQPo4SdT3
+XwJq97gXO1I/eyi6A+5417a9MvsbDKWS3wX2WBkYWr6eymkTuJcXdg5GboENO8nR
+tcZp3AawIcy6/pRutnaFsEdBnZpsYz0QS9Ay/8enFMtMOx+BkbYC+LoSV0CjmUts
+tlcTE3DvAgMBAAECggEBALycv/yzGFH/CQy6ceX4vJ8g5zyYkjnxO9HfUm+f05XU
+7zPUABE4bbGZWkAna6/OB4A5ZDsLOSnO1az+MCMKR84cQ7E9RKTEO33yd46kBWUC
+KIpC4ajjOQZDJ1P/mA9FZYJXL0v9T6V9kvFXW28l70WxxZGIvJsJGu7/gzPZmpsn
+GuT8rI2VHWurTYCtvJpsZR4Qrm3R51Hlt6j1w+Z7ySgZy10f5B6Ptt4ue8T0aq1E
+8bZLciQsJJPVx+xhApMxImPPes7wUzEhRH/4aQpMbqpVHnSsjvc+L2H3niE0MiR9
+ZA4jzdgxPF8oOJVBuSqGB7hlkFLueXCfJ36BzlQtS4ECgYEA+T7EEA5SLmvZNLbZ
+QwA3Sbr7MBWvE6tD4aln7eMEHkasJpZiJzpyZuz4kiIyjIdCKpn9TWvVg82OtPJb
+xMxKMeOGZQ4c/GLTkuKfUkzQaq0tEQDyHNan0F3pnauISUSg3a8tYa9ir2+KS+wt
+s+QNyPQHNcMyxv0hc1PTX4EB9xkCgYEAzc+tWadwOMF3+SIlncQtgxE6GxOZnV0h
+AFt863IkEsbi0YdjCQH+IpiQldWIBP8XvUp/WXWzhA/TQnf5L9Tgz2uSC24fHODm
+4T3IblNWNE1OiMIjBxDQo26xpZlTwEVGgO3idQmtJOXAg5GcBJ0FS2JZ9XvM8ZHq
+UJ7XKUdBUUcCgYEAmnezut+lPu/H5UuMymFP4nnnQp2tq1rw7uG2b0/KNZlHB4Mb
+wYQPcopaYvaerUkGULCus1SpNs4mKy4ogYa6VMDVgbuFa0U0KkwYwUCpyfMZgvg7
+FHRT/Ga3aefsxruplroCPhAb8O4Hn5X3nQ0xHeFetosK5RfrqzXAQegJ98ECgYEA
+uSwyhuisgpQncoLzn0gDvtpAEl6HJtvEtoKaGWif5jkFmImcZF1jnxLve7Acaopt
+fIVLoVzSAG8Qn8w76no5LsZVJ22UFrKPaHbjH8hhVjt7/nXVeCT74x/UO++BOAvc
+TGI8Dxt+qiUBGh9nZYs1WUcLM2CI24xyaskPQ3d14D8CgYEAxrB2obY20gZMBAxU
+9SXMZuI+yvNYpnmGe8kjkPo4w9eYZXfp6Pp8WJdqU2eWNUCTArQg81fHj1MFRF2M
+b6wbWIegs12Nh+ohRk7/7+i5l2050PyEK9XRHbe/CdNml/ZGmxDayuEN2NDEZ5DL
+EyvN/3O+/fbqGpyUqWFTz8dth8I=
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai3_revoked_pub.pem b/cpp/test/IceSSL/certs/s_rsa_cai3_revoked_pub.pem
new file mode 100644
index 00000000000..cadae49e17e
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai3_revoked_pub.pem
@@ -0,0 +1,58 @@
+-----BEGIN CERTIFICATE-----
+MIIFDDCCA/SgAwIBAgIIUq5hc3apE9gwDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNV
+BAMMHFplcm9DIFRlc3QgSW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEU
+MBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgM
+B0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9j
+LmNvbTAeFw0yMTA5MTYxNjMyMzJaFw0yMzEyMjAxNjMyMzJaMIGSMRwwGgYDVQQD
+DBNTZXJ2ZXIgY2FpMyByZXZva2VkMQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1pl
+cm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQsw
+CQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIYXWIGMmbgMJ2zTuHMtbEEKBGpbnk
+uXmwPCzQkUsnT2aFznuW7RrmXbzYEXIR1cz/o3VxxZYuciMbicxp0PfmpxEFWV0h
+7u/GSoWqQtBUfYy3ksHd0zBYKVs6bSSdOLDrCZn1XLUlq3FwBilkswET0wdIzJEH
+wlcmDnvp8UDKqaiQLydJmlgKl/cE1Qka4dOlnxXWQPo4SdT3XwJq97gXO1I/eyi6
+A+5417a9MvsbDKWS3wX2WBkYWr6eymkTuJcXdg5GboENO8nRtcZp3AawIcy6/pRu
+tnaFsEdBnZpsYz0QS9Ay/8enFMtMOx+BkbYC+LoSV0CjmUtstlcTE3DvAgMBAAGj
+ggFZMIIBVTAdBgNVHQ4EFgQUCveNWzqlA4WoblxS1vHuePUhW/UwgcIGA1UdIwSB
+ujCBt4AU2amOV7SSbtif1SgroCifQgGe8kChgZSkgZEwgY4xGDAWBgNVBAMMD1pl
+cm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5j
+LjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMC
+VVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tggguC3yQT+FGMTALBgNV
+HQ8EBAMCBeAwNAYDVR0fBC0wKzApoCegJYYjaHR0cDovLzEyNy4wLjAuMToyMDAw
+MS9jYWkzLmNybC5wZW0wFwYDVR0RBBAwDocEfwAAAYIGc2VydmVyMBMGA1UdJQQM
+MAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQBo8hv2ePQen3oYVoyH9mda
+BhqGouFzaaHlIz1JcBnF+eBFieboBFh68g3QC8jQi7A6Rbx9i31zHg/v/2A043WB
+F7NVcFVf4j06g8YWN6Nb2ROhR6WxWSu+3OaWCSjjn9yjqPDoPDWjSPmoKfHUVFQu
+Ym3RWl59e9dEPcve/H1jZfLeo5QpSFc8fLnUvvTJLkuuWWVH5vtDmuy824fIM4fr
+s2C0gNAOYKMI/s8SZSKpfjrqrQk55pP72hHS02E1yc09dxanla2cP0xxBiB/u//N
+Uj2hu1nLlTmZ6j+BR1A0RfpPKmog38DF3qyyI2ZZooIf6bRICvCBJwbfqz8DabvE
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCzCCA/OgAwIBAgIILgt8kE/hRjEwDQYJKoZIhvcNAQELBQAwgY4xGDAWBgNV
+BAMMD1plcm9DIFRlc3QgQ0EgMzEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJv
+QywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkG
+A1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMB4XDTIxMDkx
+NjE2MzIzMFoXDTIzMTIyMDE2MzIzMFowgZsxJTAjBgNVBAMMHFplcm9DIFRlc3Qg
+SW50ZXJtZWRpYXRlIENBIDMxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0Ms
+IEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNV
+BAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJ1l7nJDuw45tH58tPeUABuy47iBHYN09Mu1
+vFNGfk1e7NWTlYtv+wEp76F9n+WA7k4Axa/0GVRDqbHb1Ntly7kmQ362WDnitLSd
+9FW1twk7EAOUQHrQj+UVin0dX8wCbpRSWZCEBVyMd7RO/zT91IMUaA+Nt6/c+S2i
+ihTcAxdDSvhVPIaXeyvVMYywYIWH+l8K4ExtPDIRJ2D1Ld9JjS6mxsEH4HjbWZAE
+jwoLS5mIdXjHKjGu79erv9SvItd9vAUTNC4mOzMe3VaNasBL/P7PRaIuGsim+YMW
+8q2Y6Ku9i+fc+0pd+kWEd4Ow2ezWDjMloE0zrgy5N6BDZZP5sdMCAwEAAaOCAVww
+ggFYMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFNmpjle0km7Yn9UoK6Aon0IBnvJA
+MAsGA1UdDwQEAwIBhjAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhMy5jcmwucGVtMIHDBgNVHSMEgbswgbiAFJ7Iy0q98zOJqE6hzzvQ
+rCd4Qj0NoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDMxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAOGYOElEzDTWMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAAsID9xkCD3L7eGkeY/J+N2U
+q07EuULqsanW0fq6dB9EpEu/u4YAmUlNc0oQm2gKGkYfSC9iXzxfpGGgdVlQKpmL
+VHC207Pl0WxKNhhSQe8JYDs+iR+n+4fZt/HnnK0Z1ONJBvHsy9bpMbzJoo0CosRb
+KNtvTr3gA3x1eTiji8qk3Vzo/N9iyeW8gcbjuHC0j3+F96cf6Zt/1m5mqDSsOKyu
+MtqTvC03CzCTrHgJjJRQ1i0hW0oCu6jRemlJxSAnpJOQN6grtJX5vui6i+kK4CKN
+dh0KWY7DWdEE2rUaqxcy0gQM83fC8pL0HhJ4HJK+BOqEhZ1cn02nz0uA+HbmZMs=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai4.p12 b/cpp/test/IceSSL/certs/s_rsa_cai4.p12
new file mode 100644
index 00000000000..3712acf9d8c
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai4.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai4_priv.pem b/cpp/test/IceSSL/certs/s_rsa_cai4_priv.pem
new file mode 100644
index 00000000000..d842652e775
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai4_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDC6tF4jgl3fA8f
+UnvHyvvLnY5VvskVANLiJC6OJsKml7RYJ3Nw68iZfIk7vgQt+6n2KU9jbV6FTqup
+xMdDxLPheASNFp9drZK0grv0Nv68Q0AoKwmWqAV+sm+nJ9CmWiUnSSZ+NTlsiReD
+YRgitKnpHNszraMtE7CcjVwhQjrRMvZwoSNSzAACDIYFxWxrveePK8uQxdDykk3K
+gH24KEjBD1pY3e/VJH9GZHKFCIYhXpE6ayWbx012MT/fvFTMnSIfertWchBQUiMw
+ENJgpbna6Wx0s0btm5PYd9YblHGy3KWBtkXBFRxkqaHONcXxIF1mjzzTDBIO1yuu
+3BgLq199AgMBAAECggEBAIADfKNylaEVp1Do+UaUd56Y0bxa2vGiYt4G6VSO/FQx
+Wk5zSowlLtAvTGoiN9iDanKzWuJwGB3xNyj+hehqLcGs80A+VVhPAQTwv8R6wf6f
+JGm9KkT6APHe+xmLOqumlLQihNdq2VYBC6JLiHByuwzQ2N4t8fdO8TVAWfu15a8y
+ZcJpN1ibbmeWuaXwys+k+YnEG7bw8yqrT21mCKyUzNoVyFeHux/o3UKxRhU/mUx0
+tmd4Pf1uhegXlgczYr9DWqfQuWBxWn3kEX6XC9Ruhprj2D/dSR3cqM8X0mLEfvAE
+ZZyqdtPbjHgzQZ6eQk0lzBUb9ibWqaKC/2JWx0Kp2LkCgYEA5dspizT2VnpYmgrw
+kxIJhzpGmEBLybm6ysytUejVA1Js2kPGzcF7z7EQO+scSVV6269cYTNJfwNSodxP
+beiPSBSy92oxZ9kVxd3setjE1ojpmFu/Fg27VMXsQjqaU+X+i7qC4aY9HWIg6Pus
+TGppaRchlt46dJwhEAlYLk5Up/sCgYEA2RZS4vaTR7Vf0HMyrNXbk4xy4JNug0r6
+u7dcKFtG/Jd0s14LTiOrjr4sqBd9+eWJKyCyi7R2ysgB+DMFr6sxlftYBm9MpJ28
+3KIKNI/ARtEKARBL/BaGSikPM/BymCciLhbN1NvqQOljj9sE5T4CeHxwqYUqBL2K
+klSaIs4RpOcCgYAfYvbgSGIe2uQAXOAO5Rah/YYoQhdXO2JTUPGVzrpPktDEWR7r
+d7ElYiM6W1doeCCnoOF3cF5n1pdQ/Nlnw6rVB+aMPFb0vELp2uzwtWrjdJyZLmYA
+Z+2dnM0vGft621wPzm8SyvVrbrvZtIwJfzpXnE384OmQhMVLAEunPxD2QwKBgQCK
+qybhEc68hJAisCNTofvzwUh0SdjTBycol5THtp6epQSHuvAPxttEgBg4e2EeKtA2
++1jxwqILID2Z1MWyE/HFs1rkKV5U3OmSKfPI5XZWBhuU2FshOSYo4xdx/wrERGMh
++7EZYiy9sBfIAYicAsNDQYIZ1xUjGAwXMvGOgAFnSwKBgFnHeRP/BZlJJdvjOVR5
+UMHr4hEw0EvmXaNgF/oiViy2bzP2HQFunMQR9PbfPi+Wt1raSV+5G96JP0bqK9QW
+Cupa9nZ9xCMmx0DUIINwrnJijT0owMwvNV6ixT4TRpamgV+6bkhDSasi/eKCK98m
+ffhS/fPZJAjShEkb/e2EHFEp
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai4_pub.pem b/cpp/test/IceSSL/certs/s_rsa_cai4_pub.pem
new file mode 100644
index 00000000000..3d6020eda63
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai4_pub.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFMDCCBBigAwIBAgIIC7pQV4n42HcwDQYJKoZIhvcNAQELBQAwgZsxJTAjBgNV
+BAMMHFplcm9DIFRlc3QgSW50ZXJtZWRpYXRlIENBIDQxDDAKBgNVBAsMA0ljZTEU
+MBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgM
+B0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9j
+LmNvbTAeFw0yMTA5MTYxNjMyMzNaFw0yMzEyMjAxNjMyMzNaMIGKMRQwEgYDVQQD
+DAtTZXJ2ZXIgY2FpNDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAtaZXJvQywgSW5j
+LjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTELMAkGA1UEBhMC
+VVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAwurReI4Jd3wPH1J7x8r7y52OVb7JFQDS4iQujibC
+ppe0WCdzcOvImXyJO74ELfup9ilPY21ehU6rqcTHQ8Sz4XgEjRafXa2StIK79Db+
+vENAKCsJlqgFfrJvpyfQplolJ0kmfjU5bIkXg2EYIrSp6RzbM62jLROwnI1cIUI6
+0TL2cKEjUswAAgyGBcVsa73njyvLkMXQ8pJNyoB9uChIwQ9aWN3v1SR/RmRyhQiG
+IV6ROmslm8dNdjE/37xUzJ0iH3q7VnIQUFIjMBDSYKW52ulsdLNG7ZuT2HfWG5Rx
+stylgbZFwRUcZKmhzjXF8SBdZo880wwSDtcrrtwYC6tffQIDAQABo4IBhTCCAYEw
+HQYDVR0OBBYEFO8khRdjyZIlh7CKToSw9O20KCgwMIHDBgNVHSMEgbswgbiAFMki
+Sypa4gIL2YmRHR18qWSNkVUwoYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0
+IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNV
+BAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJ
+KoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbYIJAKu/jI7f+3joMAsGA1UdDwQEAwIF
+4DBfBggrBgEFBQcBAQRTMFEwIgYIKwYBBQUHMAGGFmh0dHA6Ly8xMjcuMC4wLjE6
+MjAwMDIwKwYIKwYBBQUHMAKGH2h0dHA6Ly8xMjcuMC4wLjE6MjAwMDEvY2FpNC5k
+ZXIwFwYDVR0RBBAwDocEfwAAAYIGc2VydmVyMBMGA1UdJQQMMAoGCCsGAQUFBwMB
+MA0GCSqGSIb3DQEBCwUAA4IBAQCX7i7On08sLRD0CmmmaaylNRvIOk+GC4PrGdkF
+YwOAtsLdTq3IUcmNddJVwP3JY5n2U/EivypzjDHQ+UbK8O5/wY7AXmt5Z7/elvPm
+IC5rGHE5/mK9vr9JwP3T7wM6P6uP46b9m+uJP/C6V521zudpBV8nWhpeQ0Mgs+Eu
+3Iw7wVh0lzfIIGhjJOHIkaKf1t3JbijpzE0jdK66PzizqxZMkxinSvDtCLj+Pfdv
+C9w7VeQHv8t0kjgzL2L14gQ8COf2EfG4lwNLn+jSkM/rDxd/rNZpwmsnRrIP98hS
+A2jx7Jczg7Bhd/tVFZe1k7bAoLnJfhez5PIfr+0WHEjYbflD
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai4_revoked.p12 b/cpp/test/IceSSL/certs/s_rsa_cai4_revoked.p12
new file mode 100644
index 00000000000..bf2aa56510f
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai4_revoked.p12
Binary files differ
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai4_revoked_priv.pem b/cpp/test/IceSSL/certs/s_rsa_cai4_revoked_priv.pem
new file mode 100644
index 00000000000..e3deb8692fe
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai4_revoked_priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC347YlrLzSpMN9
+mLeXaRsKStN+Jy+GqL3BBrhmbuiEZYSPaRrutJKl15aII/9Zze2skCYcAihk/LFQ
+Cd5UrZJeFhfX+gt+wkogeCI7VvS3zoAtnh8E4v1JFxe+yZBPCLq+s7pofaeheNqZ
+zSoIAGucqwumLOb6Oz++XF89qY2I2mmliEJ/V7RGS+p4LzfO5wvhWyIc5GKCw63e
+P/sMH66EGZoOg005MT051Q6uKcb0QbYLMmoPqUup8//g8c7Dvtn2H5woTLTD517d
+ike3ypAu26zuPTQXFXsHhi46XaF1H9b7U/k0Jcko763HiZbzyKT0frfnwVbiy89S
+LK9g2MlTAgMBAAECggEBALVkav246j4DB0+yQI+bv2+kpgEQGGKFu0BYJ7freXN4
+TI3GiSmkd/AdvMCoea+VYfjR7LW+LyiG10Vzppvy56nlszl5zrMIZmSm/GV6fkV9
+7pSRIFoKqvzZSbQKUk6T9to8ogmGwb+XXlNOvUJNX9mYJBKUwndd0KAvsEc8JIAz
+/sQJDivjmKBkdnxCSg9BIPt4Ab/aRa+IEUwIh6o8B/URUSuujjR9J+AL1vtSrK7T
+TZWCOLrFsrVBBBDMb8iMqnOPOEfPa6cR0ad705oPAV7dS3kt05B5pQyvjMaDb7Zp
+T4XeOrsZi6dhKswD0K3h4dDTUSs1UwDBmHxOu6MQlNkCgYEA3tpYj3OWIf2CBYKl
+wUqrBdknuBt/l7FCm07t6ZJ2/o8LdDSgdCdW23h9BvmCnsReMbsaiUHJtZ8hLWJh
+rC4YvvWkglyvnrbwmR2XKkSNHDeywq8uDHe7/nGIiohTeznzyGUYdy895095pppy
+GvWVweOmEXTGw9oZ0AoSdgYCNt8CgYEA0z29r+nvWsH5pOZb+0GmnPGrLbASXgv5
+XXdX+kxo2xnHZu/omSbX6dGk67E1iqJCtHV54+26yMMAsHSK1ZhN4J1/suxYC9YA
+b5Vr8vre1/2kw//EDxjhT7vntA7MDVz3Y8HSH3RLa8JzTIW5qoABGHWOPxN5bVa2
+UxEoMvDEAA0CgYEAyDIqQKQ7iMluFnkpYp0rShOshM3fL2yEQ3UCcUOsNj5Wscvd
+ILt+Yaa52pwm5W3OmKpWylsZU1liupyY1c6LWHDfmmSdN91sAoD8nXH7ug+nPRGW
+MokVjxx65shVBmwnPizjb5425CcXR72TJ/ja0dUqCKB5NtQlQCjsMK5xKs0CgYBw
+Qxak/5EJzZ6rqRTnEbvHGpQbYsBQJNLwfjVOOv9auXeEWCloAwGqLJUWAQZwV81V
+dD1ECZpDiYa7QCRsYVW58lnkL8CXAbMXmfRVnEeDyDOhSjLaxyEuq7D2uwpsa6S5
+6k6OEtLmQN/fog3K894hLpBbKzFUD0o0GSEg+V1gnQKBgQDIf2q7KjytqkyMwgrI
+TMYl4y/1eysMnCVMbAzara0b1kkm6DXFtkfL0IuxEbWs8eW2visPtG592zz54fMM
+sVnpAqXKFYPKMcTLIfu8AwAZZ2CY3xfWcAnKIHaQuihFHndD4OIVHXosGuQaErqG
+vrVxHcIRoEHuADC2sHRgIm6z3g==
+-----END PRIVATE KEY-----
diff --git a/cpp/test/IceSSL/certs/s_rsa_cai4_revoked_pub.pem b/cpp/test/IceSSL/certs/s_rsa_cai4_revoked_pub.pem
new file mode 100644
index 00000000000..fefc75e47d6
--- /dev/null
+++ b/cpp/test/IceSSL/certs/s_rsa_cai4_revoked_pub.pem
@@ -0,0 +1,60 @@
+-----BEGIN CERTIFICATE-----
+MIIFOTCCBCGgAwIBAgIJAKgEzTfQrigkMA0GCSqGSIb3DQEBCwUAMIGbMSUwIwYD
+VQQDDBxaZXJvQyBUZXN0IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2Ux
+FDASBgNVBAoMC1plcm9DLCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQI
+DAdGbG9yaWRhMQswCQYDVQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJv
+Yy5jb20wHhcNMjEwOTE2MTYzMjMzWhcNMjMxMjIwMTYzMjMzWjCBkjEcMBoGA1UE
+AwwTU2VydmVyIGNhaTQgcmV2b2tlZDEMMAoGA1UECwwDSWNlMRQwEgYDVQQKDAta
+ZXJvQywgSW5jLjEQMA4GA1UEBwwHSnVwaXRlcjEQMA4GA1UECAwHRmxvcmlkYTEL
+MAkGA1UEBhMCVVMxHTAbBgkqhkiG9w0BCQEWDmluZm9AemVyb2MuY29tMIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt+O2Jay80qTDfZi3l2kbCkrTficv
+hqi9wQa4Zm7ohGWEj2ka7rSSpdeWiCP/Wc3trJAmHAIoZPyxUAneVK2SXhYX1/oL
+fsJKIHgiO1b0t86ALZ4fBOL9SRcXvsmQTwi6vrO6aH2noXjamc0qCABrnKsLpizm
++js/vlxfPamNiNpppYhCf1e0RkvqeC83zucL4VsiHORigsOt3j/7DB+uhBmaDoNN
+OTE9OdUOrinG9EG2CzJqD6lLqfP/4PHOw77Z9h+cKEy0w+de3YpHt8qQLtus7j00
+FxV7B4YuOl2hdR/W+1P5NCXJKO+tx4mW88ik9H6358FW4svPUiyvYNjJUwIDAQAB
+o4IBhTCCAYEwHQYDVR0OBBYEFPwBVZO+Lmvq/Y3umAou7kx6IBZGMIHDBgNVHSME
+gbswgbiAFMkiSypa4gIL2YmRHR18qWSNkVUwoYGUpIGRMIGOMRgwFgYDVQQDDA9a
+ZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIElu
+Yy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYT
+AlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbYIJAKu/jI7f+3joMAsG
+A1UdDwQEAwIF4DBfBggrBgEFBQcBAQRTMFEwIgYIKwYBBQUHMAGGFmh0dHA6Ly8x
+MjcuMC4wLjE6MjAwMDIwKwYIKwYBBQUHMAKGH2h0dHA6Ly8xMjcuMC4wLjE6MjAw
+MDEvY2FpNC5kZXIwFwYDVR0RBBAwDocEfwAAAYIGc2VydmVyMBMGA1UdJQQMMAoG
+CCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQA4PJ45zQ/2m32B7wyVSzqhdwzi
+e5RFpBUMFioK7+HhA7UUccVGZCr+SIvBlF3bsHauyJGWvsC+h1pigTDUVKoWlY5A
+lEuBAbYwGF/PCvMRNNPsdP9bJ7EKUgV0Q4vF5ElguHpX9c4dt2/owhDeM0SJyc31
+5xux42pRR81nYnSPcPqx3/AXXzHwsn8fPeFi9RiP40OXOMBmBl+w6ZySGKed77b4
+rEgQSeHhGKzUJRZ4Myxg5DkCmIvpB+kAzEIJal9B/60HtYlGvnnA0fbH2Nc44uvu
+OXvAvcUHSA7ewZZv7Xt39H5u1aDuL0pjtDwK5Me9wKHtIsyglrbWJvZ1ff/C
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFOzCCBCOgAwIBAgIJAKu/jI7f+3joMA0GCSqGSIb3DQEBCwUAMIGOMRgwFgYD
+VQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNVBAsMA0ljZTEUMBIGA1UECgwLWmVy
+b0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIxEDAOBgNVBAgMB0Zsb3JpZGExCzAJ
+BgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHplcm9jLmNvbTAeFw0yMTA5
+MTYxNjMyMzBaFw0yMzEyMjAxNjMyMzBaMIGbMSUwIwYDVQQDDBxaZXJvQyBUZXN0
+IEludGVybWVkaWF0ZSBDQSA0MQwwCgYDVQQLDANJY2UxFDASBgNVBAoMC1plcm9D
+LCBJbmMuMRAwDgYDVQQHDAdKdXBpdGVyMRAwDgYDVQQIDAdGbG9yaWRhMQswCQYD
+VQQGEwJVUzEdMBsGCSqGSIb3DQEJARYOaW5mb0B6ZXJvYy5jb20wggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9CwWv7bxP2hYov2kUuKshDNiiLJ+GnTL
+9XQwgGvy9pJIizDhyrTAgvNAeLY46TNauZpUKYGXv5qRLLOckz6jgP0tKDTxpBpA
+ZHA4bFybi+TkgvbrWOPypTs/ccQyts+8aHw15ZUdt+P1kVSEIgR6+ZC+Y2nvEA7Z
+GUMGCkUd6WEMwQ9uhCH2eb4c4i0Eqt66DZyZjZZoWnEXcOQypdBBDStpX9Ea2LDO
+Z9jdCP0cQ7aQoWE7VshmKXJtNQt8Y4h3JPmn2dUJBdtFBaLDtyVw9EyYaW5++MXh
+zERxf9IZs40eIsr/FiSuBcEOBUhOxhSoBCe62uUfHF+/YW2YcrdxAgMBAAGjggGL
+MIIBhzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTJIksqWuICC9mJkR0dfKlkjZFV
+MDALBgNVHQ8EBAMCAYYwYgYIKwYBBQUHAQEEVjBUMCIGCCsGAQUFBzABhhZodHRw
+Oi8vMTI3LjAuMC4xOjIwMDAyMC4GCCsGAQUFBzAChiJodHRwOi8vMTI3LjAuMC4x
+OjIwMDAxL2NhY2VydDQuZGVyMIHDBgNVHSMEgbswgbiAFP4rfsrBsjyhr+NWyhyQ
+XyKTc8y7oYGUpIGRMIGOMRgwFgYDVQQDDA9aZXJvQyBUZXN0IENBIDQxDDAKBgNV
+BAsMA0ljZTEUMBIGA1UECgwLWmVyb0MsIEluYy4xEDAOBgNVBAcMB0p1cGl0ZXIx
+EDAOBgNVBAgMB0Zsb3JpZGExCzAJBgNVBAYTAlVTMR0wGwYJKoZIhvcNAQkBFg5p
+bmZvQHplcm9jLmNvbYIJAIEr4TCFXeNcMCEGA1UdEgQaMBiHBH8AAAGBEGlzc3Vl
+ckB6ZXJvYy5jb20wDQYJKoZIhvcNAQELBQADggEBAIYce+hcm9S5U325ke018B83
+VmTyDPPs4DzUzxw64MJoKHG3F/1p0uHlXtSEMomokb3L0ro6FJ8JypMILGBO12d/
+SuR5yvivDQa18ek6654n5wupeWgzUOSsESlm8ylykFV1FNS1d34taxnoPMFTm/6h
+tT277HBSydKneAsIS+eqTwYrfkJKUuAIXMeNAgFC9dFzX+P6yecHj3bpxdqwu+KZ
+VGvHT07SDa+SFha7o2a5wMfkmrDnff+qGEcB4xPPv4aGPcpU6UNh1aluQeO9Rb4m
+uk4LudBow0zv0NtVg+HFYgIdbmuEmAgsgyatODMuMIQKXee4Z+Hfqc/eyqycw0s=
+-----END CERTIFICATE-----
diff --git a/cpp/test/IceSSL/configuration/AllTests.cpp b/cpp/test/IceSSL/configuration/AllTests.cpp
index 06b7dc2187c..809964e68f0 100644
--- a/cpp/test/IceSSL/configuration/AllTests.cpp
+++ b/cpp/test/IceSSL/configuration/AllTests.cpp
@@ -4019,6 +4019,286 @@ allTests(Test::TestHelper* helper, const string& /*testDir*/, bool p12)
#endif
}
+ {
+#if defined(ICE_USE_SCHANNEL) || defined(ICE_USE_OPENSSL)
+ cout << "testing certificate revocation using CRL... " << flush;
+ CommunicatorPtr comm;
+ InitializationData initData;
+
+ // First test with non revoked certificate that include CRL distribution point
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert3");
+ initData.properties->setProperty("IceSSL.CertificateRevocationListFiles", "ca.crl.pem");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "1");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+ comm = initialize(initData);
+ Test::ServerFactoryPrxPtr fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ Test::Properties d = createServerProps(defaultProps, p12, "s_rsa_ca3", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ Test::ServerPrxPtr server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, NoError));
+ test(info->verified);
+ fact->destroyServer(server);
+ comm->destroy();
+
+ // Repeat with RevoactionCheck=2 to check whole chain
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert3");
+ initData.properties->setProperty("IceSSL.CertificateRevocationListFiles", "ca.crl.pem");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "2");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_ca3", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, NoError));
+ test(info->verified);
+ fact->destroyServer(server);
+ comm->destroy();
+
+ // Repeat with revoked certificate
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert3");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "0");
+ initData.properties->setProperty("IceSSL.CertificateRevocationListFiles", "ca.crl.pem");
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_ca3_revoked", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+
+ // Revoked certificate is accpeted because IceSSL.RevocationCheck=0 disable revocation checks
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, NoError));
+ test(info->verified);
+ fact->destroyServer(server);
+ comm->destroy();
+
+ // Repeat enabling revocation checks
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert3");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "1");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.CertificateRevocationListFiles", "ca.crl.pem");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_ca3_revoked", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(!info->verified);
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, Revoked));
+
+ fact->destroyServer(server);
+ comm->destroy();
+
+ // Test with s_rsa_cai3 only the intermediate CA cert is revoked
+ const char* certificates[] = {"/s_rsa_cai3.p12", 0};
+ ImportCerts import(defaultDir, certificates);
+
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert3");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "2");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.CertificateRevocationListFiles", "ca.crl.pem");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_cai3", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(!info->verified);
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, Revoked));
+
+ fact->destroyServer(server);
+ comm->destroy();
+
+ // Repeat checking only the end cert
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert3");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "1");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.CertificateRevocationListFiles", "ca.crl.pem");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_cai3", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(info->verified);
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, NoError));
+
+ fact->destroyServer(server);
+ comm->destroy();
+ import.cleanup();
+
+ cout << "ok" << endl;
+#endif
+ }
+
+ {
+#if defined(ICE_USE_SCHANNEL) || defined(ICE_USE_SECURE_TRANSPORT)
+ cout << "testing certificate revocation using OCSP... " << flush;
+ CommunicatorPtr comm;
+ InitializationData initData;
+
+ // First test with non revoked certificate that include AIA info
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert4");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "1");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+ comm = initialize(initData);
+ Test::ServerFactoryPrxPtr fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ Test::Properties d = createServerProps(defaultProps, p12, "s_rsa_ca4", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ Test::ServerPrxPtr server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, NoError));
+ test(info->verified);
+
+ fact->destroyServer(server);
+ comm->destroy();
+
+ // Now check with a revoked certificate and RevocationCheck=0 to disable revocation checks
+# ifndef ICE_USE_SECURE_TRANSPORT
+ // With secure transport there is no realiable way to disable revocation checks
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert4");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "0");
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_ca4_revoked", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+ server->ice_ping();
+ fact->destroyServer(server);
+ comm->destroy();
+# endif
+
+ // Repeat with RevoactionCheck=2 to check whole chain
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert4");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "2");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_ca4", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, NoError));
+ test(info->verified);
+ fact->destroyServer(server);
+ comm->destroy();
+
+ // Test with s_rsa_cai4 only the intermediate CA cert is revoked
+ const char* certificates[] = {"/s_rsa_cai4.p12", 0};
+ ImportCerts import(defaultDir, certificates);
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert4");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "2");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_cai4", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(!info->verified);
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, Revoked));
+ fact->destroyServer(server);
+ comm->destroy();
+
+ // Repeat with RevocationCheck=1 to only check the end cert
+# ifndef ICE_USE_SECURE_TRANSPORT
+ // SecureTransport always check the whole chain for revocation
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert4");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "1");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_cai4", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(info->verified);
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, NoError));
+ fact->destroyServer(server);
+ comm->destroy();
+# endif
+
+ // Repeat with a certificate that is unknow for the OCSP responder
+ initData.properties = createClientProps(defaultProps, p12, "", "cacert4");
+ initData.properties->setProperty("IceSSL.RevocationCheck", "1");
+ initData.properties->setProperty("IceSSL.RevocationCheckCacheOnly", "0");
+ initData.properties->setProperty("IceSSL.VerifyPeer", "0");
+
+ comm = initialize(initData);
+ fact = ICE_CHECKED_CAST(Test::ServerFactoryPrx, comm->stringToProxy(factoryRef));
+ test(fact);
+
+ d = createServerProps(defaultProps, p12, "s_rsa_ca4_unknown", "");
+ d["IceSSL.VerifyPeer"] = "0";
+ server = fact->createServer(d);
+
+ server->ice_ping();
+ info = ICE_DYNAMIC_CAST(IceSSL::ConnectionInfo, server->ice_getConnection()->getInfo());
+ test(!info->verified);
+ test(getTrustError(info) == IceSSL::ICE_ENUM(TrustError, RevocationStatusUnknown));
+ fact->destroyServer(server);
+ comm->destroy();
+
+ import.cleanup();
+
+ cout << "ok" << endl;
+#endif
+ }
+
#if !defined(_AIX) && !defined(ICE_OS_UWP) && !(defined(_WIN32) && defined(ICE_USE_OPENSSL))
//
// On AIX 6.1, the default root certificates don't validate demo.zeroc.com.
@@ -4134,5 +4414,6 @@ allTests(Test::TestHelper* helper, const string& /*testDir*/, bool p12)
}
cout << "ok" << endl;
#endif
+
return factory;
}