Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(425)

Side by Side Diff: rtc_base/sslstreamadapter_unittest.cc

Issue 3010363002: Implement GetChain for OpenSSLCertificate.
Patch Set: Adding unit tests and clean up. Created 3 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « rtc_base/opensslstreamadapter.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2011 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 "ZWJSVEMwHhcNMTQwMTAyMTgyNDQ3WhcNMTQwMjAxMTgyNDQ3WjARMQ8wDQYDVQQD\n" 57 "ZWJSVEMwHhcNMTQwMTAyMTgyNDQ3WhcNMTQwMjAxMTgyNDQ3WjARMQ8wDQYDVQQD\n"
58 "EwZXZWJSVEMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYRkbhmI7kVA/rM\n" 58 "EwZXZWJSVEMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYRkbhmI7kVA/rM\n"
59 "czsZ+6JDhDvnkF+vn6yCAGuRPV03zuRqZtDy4N4to7PZu9PjqrRl7nDMXrG3YG9y\n" 59 "czsZ+6JDhDvnkF+vn6yCAGuRPV03zuRqZtDy4N4to7PZu9PjqrRl7nDMXrG3YG9y\n"
60 "rlIAZ72KjcKKFAJxQyAKLCIdawKRyp8RdK3LEySWEZb0AV58IadqPZDTNHHRX8dz\n" 60 "rlIAZ72KjcKKFAJxQyAKLCIdawKRyp8RdK3LEySWEZb0AV58IadqPZDTNHHRX8dz\n"
61 "5aTSMsbbkZ+C/OzTnbiMqLL/vg6jAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAUflI\n" 61 "5aTSMsbbkZ+C/OzTnbiMqLL/vg6jAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAUflI\n"
62 "VUe5Krqf5RVa5C3u/UTAOAUJBiDS3VANTCLBxjuMsvqOG0WvaYWP3HYPgrz0jXK2\n" 62 "VUe5Krqf5RVa5C3u/UTAOAUJBiDS3VANTCLBxjuMsvqOG0WvaYWP3HYPgrz0jXK2\n"
63 "LJE/mGw3MyFHEqi81jh95J+ypl6xKW6Rm8jKLR87gUvCaVYn/Z4/P3AqcQTB7wOv\n" 63 "LJE/mGw3MyFHEqi81jh95J+ypl6xKW6Rm8jKLR87gUvCaVYn/Z4/P3AqcQTB7wOv\n"
64 "UD0A8qfhfDM+LK6rPAnCsVN0NRDY3jvd6rzix9M=\n" 64 "UD0A8qfhfDM+LK6rPAnCsVN0NRDY3jvd6rzix9M=\n"
65 "-----END CERTIFICATE-----\n"; 65 "-----END CERTIFICATE-----\n";
66 66
67 static const char kLeafCert[] =
68 "-----BEGIN CERTIFICATE-----\n"
69 "MIIEUjCCAjqgAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBljELMAkGA1UEBhMCVVMx\n"
70 "EzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxFDAS\n"
71 "BgNVBAoMC0dvb2dsZSwgSW5jMQwwCgYDVQQLDANHVFAxFzAVBgNVBAMMDnRlbGVw\n"
72 "aG9ueS5nb29nMR0wGwYJKoZIhvcNAQkBFg5ndHBAZ29vZ2xlLmNvbTAeFw0xNzA5\n"
73 "MjYwNDA5MDNaFw0yMDA2MjIwNDA5MDNaMGQxCzAJBgNVBAYTAlVTMQswCQYDVQQI\n"
74 "DAJDQTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEXMBUGA1UECgwOdGVsZXBob255\n"
75 "Lmdvb2cxFzAVBgNVBAMMDnRlbGVwaG9ueS5nb29nMIGfMA0GCSqGSIb3DQEBAQUA\n"
76 "A4GNADCBiQKBgQDJXWeeU1v1+wlqkVobzI3aN7Uh2iVQA9YCdq5suuabtiD/qoOD\n"
77 "NKpmQqsx7WZGGWSZTDFEBaUpvIK7Hb+nzRqk6iioPCFOFuarm6GxO1xVneImMuE6\n"
78 "tuWb3YZPr+ikChJbl11y5UcSbg0QsbeUc+jHl5umNvrL85Y+z8SP0rxbBwIDAQAB\n"
79 "o2AwXjAdBgNVHQ4EFgQU7tdZobqlN8R8V72FQnRxmqq8tKswHwYDVR0jBBgwFoAU\n"
80 "5GgKMUtcxkQ2dJrtNR5YOlIAPDswDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMC\n"
81 "AQYwDQYJKoZIhvcNAQELBQADggIBADObh9Z+z14FmP9zSenhFtq7hFnmNrSkklk8\n"
82 "eyYWXKfOuIriEQQBZsz76ZcnzStih8Rj+yQ0AXydk4fJ5LOwC2cUqQBar17g6Pd2\n"
83 "8g4SIL4azR9WvtiSvpuGlwp25b+yunaacDne6ebnf/MUiiKT5w61Xo3cEPVfl38e\n"
84 "/Up2l0bioid5enUTmg6LY6RxDO6tnZQkz3XD+nNSwT4ehtkqFpHYWjErj0BbkDM2\n"
85 "hiVc/JsYOZn3DmuOlHVHU6sKwqh3JEyvHO/d7DGzMGWHpHwv2mCTJq6l/sR95Tc2\n"
86 "GaQZgGDVNs9pdEouJCDm9e/PbQWRYhnat82PTkXx/6mDAAwdZlIi/pACzq8K4p7e\n"
87 "6hF0t8uKGnXJubHPXxlnJU6yxZ0yWmivAGjwWK4ur832gKlho4jeMDhiI/T3QPpl\n"
88 "iMNsIvxRhdD+GxJkQP1ezayw8s+Uc9KwKglrkBSRRDLCJUfPOvMmXLUDSTMX7kp4\n"
89 "/Ak1CA8dVLJIlfEjLBUuvAttlP7+7lsKNgxAjCxZkWLXIyGULzNPQwVWkGfCbrQs\n"
90 "XyMvSbFsSIb7blV7eLlmf9a+2RprUUkc2ALXLLCI9YQXmxm2beBfMyNmmebwBJzT\n"
91 "B0OR+5pFFNTJPoNlqpdrDsGrDu7JlUtk0ZLZzYyKXbgy2qXxfd4OWzXXjxpLMszZ\n"
92 "LDIpOAkj\n"
93 "-----END CERTIFICATE-----\n";
94 static const char kLeafKey[] =
95 "-----BEGIN RSA PRIVATE KEY-----\n"
96 "MIICXAIBAAKBgQDJXWeeU1v1+wlqkVobzI3aN7Uh2iVQA9YCdq5suuabtiD/qoOD\n"
97 "NKpmQqsx7WZGGWSZTDFEBaUpvIK7Hb+nzRqk6iioPCFOFuarm6GxO1xVneImMuE6\n"
98 "tuWb3YZPr+ikChJbl11y5UcSbg0QsbeUc+jHl5umNvrL85Y+z8SP0rxbBwIDAQAB\n"
99 "AoGAQuILcMMvYFypnAP7chBXbYvjVgMnMZSUmOzisqrBviaYf1Mbq5DqqFyskEDS\n"
100 "H6Z/i4uLMZTObzZ2FcCj0BCIMHcMfsA/XDMG4G3xtxY3/5JhMKwXGHB1WR5Htl2n\n"
101 "PPAHXfj/OLNOC1mMJE3podO6VMQ9ShGa5WwIk1seniTAqkECQQD8PgGlWg56QJym\n"
102 "nNytUpTrrRZM50VLYtk/4a+6QlxbQtrV9oSoVcQTqbWZCxx/dhUaRHj30G0IPujp\n"
103 "ycsPn+4rAkEAzF1dJf60h3GdD1Y/PuzNFk184OYNyu/gxhbJey57V9PCm/1xjF0M\n"
104 "B4HFGpRi6UweCxl6aGjadoN3uYyVHdI0lQJBAN87wRklakqng/uwN1ztCP7KYEIP\n"
105 "KzRcdwgiI/MjZ7kcoa9aTGzt+mmseBrJyp7DUkm875Hh05zIkDjXbe6WC6ECQEBa\n"
106 "QgO94eEosJlswjuxW59jRSiYqM03niMid82XRHXSk9yFAWV+w1P11Dhbc44dTvSV\n"
107 "0ErigbCCE4hVMXuTfsUCQC85JpCZS/z93HEMduNML0PCKyRwRVBcq3YH4s1M/9FO\n"
108 "XVMbe7sm62x4wDbk2IJ5jId20qHkkuo2DtFZgr1U+qw=\n"
109 "-----END RSA PRIVATE KEY-----\n";
110
111 static const char kCACert[] =
112 "-----BEGIN CERTIFICATE-----\n"
113 "MIIGETCCA/mgAwIBAgIJAKN9r/BdbGUJMA0GCSqGSIb3DQEBCwUAMIGWMQswCQYD\n"
114 "VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4g\n"
115 "VmlldzEUMBIGA1UECgwLR29vZ2xlLCBJbmMxDDAKBgNVBAsMA0dUUDEXMBUGA1UE\n"
116 "AwwOdGVsZXBob255Lmdvb2cxHTAbBgkqhkiG9w0BCQEWDmd0cEBnb29nbGUuY29t\n"
117 "MB4XDTE3MDcyNzIzMDE0NVoXDTE3MDgyNjIzMDE0NVowgZYxCzAJBgNVBAYTAlVT\n"
118 "MRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQw\n"
119 "EgYDVQQKDAtHb29nbGUsIEluYzEMMAoGA1UECwwDR1RQMRcwFQYDVQQDDA50ZWxl\n"
120 "cGhvbnkuZ29vZzEdMBsGCSqGSIb3DQEJARYOZ3RwQGdvb2dsZS5jb20wggIiMA0G\n"
121 "CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCfvpF7aBV5Hp1EHsWoIlL3GeHwh8dS\n"
122 "lv9VQCegN9rD06Ny7MgcED5AiK2vqXmUmOVS+7NbATkdVYN/eozDhKtN3Q3n87kJ\n"
123 "Nt/TD/TcZZHOZIGsRPbrf2URK26E/5KzTzbzXVBOA1e+gSj+EBbltGqb01ZO5ErF\n"
124 "iPGViPM/HpYKdq6mfz2bS5PhU67XZMM2zvToyReQ/Fjm/6PJhwKSRXSgZF5djPhk\n"
125 "2LfOKMLS0AeZtd2C4DFsCU41lfLUkybioDgFuzTQ3TFi1K8A07KYTMmLY/yQppnf\n"
126 "SpNX58shlVhM+Ed37K1Z0rU0OfVCZ5P+KKaSSfMranjlU7zeUIhZYjqq/EYrEhbS\n"
127 "dLnNHwgJrqxzId3kq8uuLM6+VB7JZKnZLfT90GdAbX4+tutNe21smmogF9f80vEy\n"
128 "gM4tOp9rXrvz9vCwWHXVY9kdKemdLAsREoO6MS9k2ctK4jj80o2dROuFC6Q3e7mz\n"
129 "RjvZr5Tvi464c2o9o/jNlJ0O6q7V2eQzohD+7VnV5QPpRGXxlIeqpR2zoAg+WtRS\n"
130 "4OgHOVYiD3M6uAlggJA5pcDjMfkEZ+pkhtVcT4qMCEoruk6GbyPxS565oSHu16bH\n"
131 "EjeCqbZOVND5T3oA7nz6aQSs8sJabt0jmxUkGVnE+4ZDIuuRtkRma+0P/96Mtqor\n"
132 "OlpNWY1OBDY64QIDAQABo2AwXjAdBgNVHQ4EFgQU5GgKMUtcxkQ2dJrtNR5YOlIA\n"
133 "PDswHwYDVR0jBBgwFoAU5GgKMUtcxkQ2dJrtNR5YOlIAPDswDwYDVR0TAQH/BAUw\n"
134 "AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAARQly5/bB6VUL2C\n"
135 "ykDYgWt48go407pAra6tL2kjpdfxV5PdL7iMZRkeht00vj+BVahIqZKrNOa/f5Fx\n"
136 "vlpahZFu0PDN436aQwRZ9qWut2qDOK0/z9Hhj6NWybquRFwMwqkPG/ivLMDU8Dmj\n"
137 "CIplpngPYNwXCs0KzdjSXYxqxJbwMjQXELD+/RcurY0oTtJMM1/2vKQMzw24UJqe\n"
138 "XLJAlsnd2AnWzWNUEviDZY89j9NdkHerBmV2gGzcU+X5lgOO5M8odBv0ZC9D+a6Z\n"
139 "QPZAOfdGVw60hhGvTW5s/s0dHwCpegRidhs0MD0fTmwwjYFBSmUx3Gztr4JTzOOr\n"
140 "7e5daJuak2ujQ5DqcGBvt1gePjSudb5brS7JQtN8tI/FyrnR4q/OuOwv1EvlC5RG\n"
141 "hLX+TXaWqFxB1Hd8ebKRR40mboFG6KcUI3lLBthDvQE7jnq48QfZMjlMQK0ZF1l7\n"
142 "SrlwRXWA74bU8CLJvnZKKo9p4TsTiDYGSYC6tNHKj5s3TGWL46oqGyZ0KdGNhrtC\n"
143 "rIGenMhth1vPYjyy0XuGBndXT85yi+IM2l8g8oU845+plxIhgpSI8bbC0oLwnhQ5\n"
144 "ARfsiYLkXDE7imSS0CSUmye76372mlzAIB1is4bBB/SzpPQtBuB9LDKtONgpSGHn\n"
145 "dGaXBy+qbVXVyGXaeEbIRjtJ6m92\n"
146 "-----END CERTIFICATE-----\n";
147
67 class SSLStreamAdapterTestBase; 148 class SSLStreamAdapterTestBase;
68 149
69 class SSLDummyStreamBase : public rtc::StreamInterface, 150 class SSLDummyStreamBase : public rtc::StreamInterface,
70 public sigslot::has_slots<> { 151 public sigslot::has_slots<> {
71 public: 152 public:
72 SSLDummyStreamBase(SSLStreamAdapterTestBase* test, 153 SSLDummyStreamBase(SSLStreamAdapterTestBase* test,
73 const std::string &side, 154 const std::string &side,
74 rtc::StreamInterface* in, 155 rtc::StreamInterface* in,
75 rtc::StreamInterface* out) : 156 rtc::StreamInterface* out) :
76 test_base_(test), 157 test_base_(test),
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 return test_base_->DataWritten(this, data, data_len, written, error); 939 return test_base_->DataWritten(this, data, data_len, written, error);
859 }; 940 };
860 941
861 class SSLStreamAdapterTestDTLSFromPEMStrings : public SSLStreamAdapterTestDTLS { 942 class SSLStreamAdapterTestDTLSFromPEMStrings : public SSLStreamAdapterTestDTLS {
862 public: 943 public:
863 SSLStreamAdapterTestDTLSFromPEMStrings() : 944 SSLStreamAdapterTestDTLSFromPEMStrings() :
864 SSLStreamAdapterTestDTLS(kCERT_PEM, kRSA_PRIVATE_KEY_PEM) { 945 SSLStreamAdapterTestDTLS(kCERT_PEM, kRSA_PRIVATE_KEY_PEM) {
865 } 946 }
866 }; 947 };
867 948
949 class SSLStreamAdapterTestDTLSCertChain : public SSLStreamAdapterTestDTLS {
950 public:
951 SSLStreamAdapterTestDTLSCertChain() : SSLStreamAdapterTestDTLS("", ""){};
952 void SetUp() override {
953 CreateStreams();
954
955 client_ssl_.reset(rtc::SSLStreamAdapter::Create(client_stream_));
956 server_ssl_.reset(rtc::SSLStreamAdapter::Create(server_stream_));
957
958 // Set up the slots
959 client_ssl_->SignalEvent.connect(
960 reinterpret_cast<SSLStreamAdapterTestBase*>(this),
961 &SSLStreamAdapterTestBase::OnEvent);
962 server_ssl_->SignalEvent.connect(
963 reinterpret_cast<SSLStreamAdapterTestBase*>(this),
964 &SSLStreamAdapterTestBase::OnEvent);
965
966 if (!client_cert_pem_.empty() && !client_private_key_pem_.empty()) {
967 client_identity_ = rtc::SSLIdentity::FromPEMStrings(
968 client_private_key_pem_, client_cert_pem_);
969 } else {
970 client_identity_ = rtc::SSLIdentity::Generate("client", client_key_type_);
971 }
972
973 client_ssl_->SetIdentity(client_identity_);
974 server_identity_ = rtc::SSLIdentity::FromPEMStrings(
975 kLeafKey, std::string(kLeafCert) + kCACert);
976 server_ssl_->SetIdentity(server_identity_);
977 }
978 };
979
980 TEST_F(SSLStreamAdapterTestDTLSCertChain, Handshake) {
981 TestHandshake();
982 std::unique_ptr<rtc::SSLCertificate> peer_cert =
983 client_ssl_->GetPeerCertificate();
984 ASSERT_NE(peer_cert->GetChain(), nullptr);
985 ASSERT_EQ(peer_cert->GetChain()->GetSize(), (size_t)1);
986 ASSERT_EQ(peer_cert->GetChain()->Get(0).ToPEMString(), kCACert);
987 }
988
868 // Basic tests: TLS 989 // Basic tests: TLS
869 990
870 // Test that we can make a handshake work 991 // Test that we can make a handshake work
871 TEST_P(SSLStreamAdapterTestTLS, TestTLSConnect) { 992 TEST_P(SSLStreamAdapterTestTLS, TestTLSConnect) {
872 TestHandshake(); 993 TestHandshake();
873 }; 994 };
874 995
875 // Test that closing the connection on one side updates the other side. 996 // Test that closing the connection on one side updates the other side.
876 TEST_P(SSLStreamAdapterTestTLS, TestTLSClose) { 997 TEST_P(SSLStreamAdapterTestTLS, TestTLSClose) {
877 TestHandshake(); 998 TestHandshake();
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
1343 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)))); 1464 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256))));
1344 INSTANTIATE_TEST_CASE_P( 1465 INSTANTIATE_TEST_CASE_P(
1345 SSLStreamAdapterTestsDTLS, 1466 SSLStreamAdapterTestsDTLS,
1346 SSLStreamAdapterTestDTLS, 1467 SSLStreamAdapterTestDTLS,
1347 Combine(Values(rtc::KeyParams::RSA(1024, 65537), 1468 Combine(Values(rtc::KeyParams::RSA(1024, 65537),
1348 rtc::KeyParams::RSA(1152, 65537), 1469 rtc::KeyParams::RSA(1152, 65537),
1349 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)), 1470 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)),
1350 Values(rtc::KeyParams::RSA(1024, 65537), 1471 Values(rtc::KeyParams::RSA(1024, 65537),
1351 rtc::KeyParams::RSA(1152, 65537), 1472 rtc::KeyParams::RSA(1152, 65537),
1352 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)))); 1473 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256))));
OLDNEW
« no previous file with comments | « rtc_base/opensslstreamadapter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698