OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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)))); |
OLD | NEW |