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

Side by Side Diff: webrtc/base/sslstreamadapter_unittest.cc

Issue 1329493005: Provide RSA2048 as per RFC (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Address hbos' concerns Created 5 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
« webrtc/base/sslidentity.h ('K') | « webrtc/base/sslidentity.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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 rtc::FifoBuffer *in_; 154 rtc::FifoBuffer *in_;
155 rtc::FifoBuffer *out_; 155 rtc::FifoBuffer *out_;
156 bool first_packet_; 156 bool first_packet_;
157 }; 157 };
158 158
159 static const int kFifoBufferSize = 4096; 159 static const int kFifoBufferSize = 4096;
160 160
161 class SSLStreamAdapterTestBase : public testing::Test, 161 class SSLStreamAdapterTestBase : public testing::Test,
162 public sigslot::has_slots<> { 162 public sigslot::has_slots<> {
163 public: 163 public:
164 SSLStreamAdapterTestBase(const std::string& client_cert_pem, 164 SSLStreamAdapterTestBase(
165 const std::string& client_private_key_pem, 165 const std::string& client_cert_pem,
166 bool dtls, 166 const std::string& client_private_key_pem,
167 rtc::KeyType client_key_type = rtc::KT_DEFAULT, 167 bool dtls,
168 rtc::KeyType server_key_type = rtc::KT_DEFAULT) 168 rtc::KeyParams client_key_type = rtc::KeyParams(rtc::KT_DEFAULT),
169 rtc::KeyParams server_key_type = rtc::KeyParams(rtc::KT_DEFAULT))
169 : client_buffer_(kFifoBufferSize), 170 : client_buffer_(kFifoBufferSize),
170 server_buffer_(kFifoBufferSize), 171 server_buffer_(kFifoBufferSize),
171 client_stream_( 172 client_stream_(
172 new SSLDummyStream(this, "c2s", &client_buffer_, &server_buffer_)), 173 new SSLDummyStream(this, "c2s", &client_buffer_, &server_buffer_)),
173 server_stream_( 174 server_stream_(
174 new SSLDummyStream(this, "s2c", &server_buffer_, &client_buffer_)), 175 new SSLDummyStream(this, "s2c", &server_buffer_, &client_buffer_)),
175 client_ssl_(rtc::SSLStreamAdapter::Create(client_stream_)), 176 client_ssl_(rtc::SSLStreamAdapter::Create(client_stream_)),
176 server_ssl_(rtc::SSLStreamAdapter::Create(server_stream_)), 177 server_ssl_(rtc::SSLStreamAdapter::Create(server_stream_)),
177 client_identity_(NULL), 178 client_identity_(NULL),
178 server_identity_(NULL), 179 server_identity_(NULL),
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 new SSLDummyStream(this, "c2s", &client_buffer_, &server_buffer_); 217 new SSLDummyStream(this, "c2s", &client_buffer_, &server_buffer_);
217 server_stream_ = 218 server_stream_ =
218 new SSLDummyStream(this, "s2c", &server_buffer_, &client_buffer_); 219 new SSLDummyStream(this, "s2c", &server_buffer_, &client_buffer_);
219 220
220 client_ssl_.reset(rtc::SSLStreamAdapter::Create(client_stream_)); 221 client_ssl_.reset(rtc::SSLStreamAdapter::Create(client_stream_));
221 server_ssl_.reset(rtc::SSLStreamAdapter::Create(server_stream_)); 222 server_ssl_.reset(rtc::SSLStreamAdapter::Create(server_stream_));
222 223
223 client_ssl_->SignalEvent.connect(this, &SSLStreamAdapterTestBase::OnEvent); 224 client_ssl_->SignalEvent.connect(this, &SSLStreamAdapterTestBase::OnEvent);
224 server_ssl_->SignalEvent.connect(this, &SSLStreamAdapterTestBase::OnEvent); 225 server_ssl_->SignalEvent.connect(this, &SSLStreamAdapterTestBase::OnEvent);
225 226
226 rtc::SSLIdentityParams client_params; 227 rtc::SSLIdentityParams client_params((rtc::KeyParams(rtc::KT_DEFAULT)));
juberti 2015/10/07 06:35:23 Remove extra parens, here and below
torbjorng (webrtc) 2015/10/07 13:30:04 The extra parens are required; these variable decl
227 client_params.common_name = "client"; 228 client_params.common_name = "client";
228 client_params.not_before = not_before; 229 client_params.not_before = not_before;
229 client_params.not_after = not_after; 230 client_params.not_after = not_after;
230 client_params.key_type = rtc::KT_DEFAULT;
231 client_identity_ = rtc::SSLIdentity::GenerateForTest(client_params); 231 client_identity_ = rtc::SSLIdentity::GenerateForTest(client_params);
232 232
233 rtc::SSLIdentityParams server_params; 233 rtc::SSLIdentityParams server_params((rtc::KeyParams(rtc::KT_DEFAULT)));
234 server_params.common_name = "server"; 234 server_params.common_name = "server";
235 server_params.not_before = not_before; 235 server_params.not_before = not_before;
236 server_params.not_after = not_after; 236 server_params.not_after = not_after;
237 server_params.key_type = rtc::KT_DEFAULT;
238 server_identity_ = rtc::SSLIdentity::GenerateForTest(server_params); 237 server_identity_ = rtc::SSLIdentity::GenerateForTest(server_params);
239 238
240 client_ssl_->SetIdentity(client_identity_); 239 client_ssl_->SetIdentity(client_identity_);
241 server_ssl_->SetIdentity(server_identity_); 240 server_ssl_->SetIdentity(server_identity_);
242 } 241 }
243 242
244 virtual void OnEvent(rtc::StreamInterface *stream, int sig, int err) { 243 virtual void OnEvent(rtc::StreamInterface *stream, int sig, int err) {
245 LOG(LS_INFO) << "SSLStreamAdapterTestBase::OnEvent sig=" << sig; 244 LOG(LS_INFO) << "SSLStreamAdapterTestBase::OnEvent sig=" << sig;
246 245
247 if (sig & rtc::SE_READ) { 246 if (sig & rtc::SE_READ) {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 int loss_; 454 int loss_;
456 bool lose_first_packet_; 455 bool lose_first_packet_;
457 bool damage_; 456 bool damage_;
458 bool dtls_; 457 bool dtls_;
459 int handshake_wait_; 458 int handshake_wait_;
460 bool identities_set_; 459 bool identities_set_;
461 }; 460 };
462 461
463 class SSLStreamAdapterTestTLS 462 class SSLStreamAdapterTestTLS
464 : public SSLStreamAdapterTestBase, 463 : public SSLStreamAdapterTestBase,
465 public WithParamInterface<tuple<rtc::KeyType, rtc::KeyType>> { 464 public WithParamInterface<tuple<rtc::KeyParams, rtc::KeyParams>> {
466 public: 465 public:
467 SSLStreamAdapterTestTLS() 466 SSLStreamAdapterTestTLS()
468 : SSLStreamAdapterTestBase("", 467 : SSLStreamAdapterTestBase("",
469 "", 468 "",
470 false, 469 false,
471 ::testing::get<0>(GetParam()), 470 ::testing::get<0>(GetParam()),
472 ::testing::get<1>(GetParam())){}; 471 ::testing::get<1>(GetParam())){};
473 472
474 // Test data transfer for TLS 473 // Test data transfer for TLS
475 virtual void TestTransfer(int size) { 474 virtual void TestTransfer(int size) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 } 562 }
564 } 563 }
565 564
566 private: 565 private:
567 rtc::MemoryStream send_stream_; 566 rtc::MemoryStream send_stream_;
568 rtc::MemoryStream recv_stream_; 567 rtc::MemoryStream recv_stream_;
569 }; 568 };
570 569
571 class SSLStreamAdapterTestDTLS 570 class SSLStreamAdapterTestDTLS
572 : public SSLStreamAdapterTestBase, 571 : public SSLStreamAdapterTestBase,
573 public WithParamInterface<tuple<rtc::KeyType, rtc::KeyType>> { 572 public WithParamInterface<tuple<rtc::KeyParams, rtc::KeyParams>> {
574 public: 573 public:
575 SSLStreamAdapterTestDTLS() 574 SSLStreamAdapterTestDTLS()
576 : SSLStreamAdapterTestBase("", 575 : SSLStreamAdapterTestBase("",
577 "", 576 "",
578 true, 577 true,
579 ::testing::get<0>(GetParam()), 578 ::testing::get<0>(GetParam()),
580 ::testing::get<1>(GetParam())), 579 ::testing::get<1>(GetParam())),
581 packet_size_(1000), 580 packet_size_(1000),
582 count_(0), 581 count_(0),
583 sent_(0) {} 582 sent_(0) {}
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 MAYBE_SKIP_TEST(HaveDtls); 970 MAYBE_SKIP_TEST(HaveDtls);
972 SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_10); 971 SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_10);
973 TestHandshake(); 972 TestHandshake();
974 973
975 uint16_t client_cipher; 974 uint16_t client_cipher;
976 ASSERT_TRUE(GetSslCipherSuite(true, &client_cipher)); 975 ASSERT_TRUE(GetSslCipherSuite(true, &client_cipher));
977 uint16_t server_cipher; 976 uint16_t server_cipher;
978 ASSERT_TRUE(GetSslCipherSuite(false, &server_cipher)); 977 ASSERT_TRUE(GetSslCipherSuite(false, &server_cipher));
979 978
980 ASSERT_EQ(client_cipher, server_cipher); 979 ASSERT_EQ(client_cipher, server_cipher);
981 ASSERT_EQ(rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 980 ASSERT_EQ(
982 rtc::SSL_PROTOCOL_DTLS_10, ::testing::get<1>(GetParam())), 981 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
983 server_cipher); 982 rtc::SSL_PROTOCOL_DTLS_10, ::testing::get<1>(GetParam()).type()),
983 server_cipher);
984 } 984 }
985 985
986 // Test getting the used DTLS 1.2 ciphers. 986 // Test getting the used DTLS 1.2 ciphers.
987 // DTLS 1.2 enabled for client and server -> DTLS 1.2 will be used. 987 // DTLS 1.2 enabled for client and server -> DTLS 1.2 will be used.
988 TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuiteDtls12Both) { 988 TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuiteDtls12Both) {
989 MAYBE_SKIP_TEST(HaveDtls); 989 MAYBE_SKIP_TEST(HaveDtls);
990 SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_12); 990 SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_12);
991 TestHandshake(); 991 TestHandshake();
992 992
993 uint16_t client_cipher; 993 uint16_t client_cipher;
994 ASSERT_TRUE(GetSslCipherSuite(true, &client_cipher)); 994 ASSERT_TRUE(GetSslCipherSuite(true, &client_cipher));
995 uint16_t server_cipher; 995 uint16_t server_cipher;
996 ASSERT_TRUE(GetSslCipherSuite(false, &server_cipher)); 996 ASSERT_TRUE(GetSslCipherSuite(false, &server_cipher));
997 997
998 ASSERT_EQ(client_cipher, server_cipher); 998 ASSERT_EQ(client_cipher, server_cipher);
999 ASSERT_EQ(rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 999 ASSERT_EQ(
1000 rtc::SSL_PROTOCOL_DTLS_12, ::testing::get<1>(GetParam())), 1000 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1001 server_cipher); 1001 rtc::SSL_PROTOCOL_DTLS_12, ::testing::get<1>(GetParam()).type()),
1002 server_cipher);
1002 } 1003 }
1003 1004
1004 // DTLS 1.2 enabled for client only -> DTLS 1.0 will be used. 1005 // DTLS 1.2 enabled for client only -> DTLS 1.0 will be used.
1005 TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuiteDtls12Client) { 1006 TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuiteDtls12Client) {
1006 MAYBE_SKIP_TEST(HaveDtls); 1007 MAYBE_SKIP_TEST(HaveDtls);
1007 SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_12); 1008 SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_10, rtc::SSL_PROTOCOL_DTLS_12);
1008 TestHandshake(); 1009 TestHandshake();
1009 1010
1010 uint16_t client_cipher; 1011 uint16_t client_cipher;
1011 ASSERT_TRUE(GetSslCipherSuite(true, &client_cipher)); 1012 ASSERT_TRUE(GetSslCipherSuite(true, &client_cipher));
1012 uint16_t server_cipher; 1013 uint16_t server_cipher;
1013 ASSERT_TRUE(GetSslCipherSuite(false, &server_cipher)); 1014 ASSERT_TRUE(GetSslCipherSuite(false, &server_cipher));
1014 1015
1015 ASSERT_EQ(client_cipher, server_cipher); 1016 ASSERT_EQ(client_cipher, server_cipher);
1016 ASSERT_EQ(rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1017 ASSERT_EQ(
1017 rtc::SSL_PROTOCOL_DTLS_10, ::testing::get<1>(GetParam())), 1018 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1018 server_cipher); 1019 rtc::SSL_PROTOCOL_DTLS_10, ::testing::get<1>(GetParam()).type()),
1020 server_cipher);
1019 } 1021 }
1020 1022
1021 // DTLS 1.2 enabled for server only -> DTLS 1.0 will be used. 1023 // DTLS 1.2 enabled for server only -> DTLS 1.0 will be used.
1022 TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuiteDtls12Server) { 1024 TEST_P(SSLStreamAdapterTestDTLS, TestGetSslCipherSuiteDtls12Server) {
1023 MAYBE_SKIP_TEST(HaveDtls); 1025 MAYBE_SKIP_TEST(HaveDtls);
1024 SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_10); 1026 SetupProtocolVersions(rtc::SSL_PROTOCOL_DTLS_12, rtc::SSL_PROTOCOL_DTLS_10);
1025 TestHandshake(); 1027 TestHandshake();
1026 1028
1027 uint16_t client_cipher; 1029 uint16_t client_cipher;
1028 ASSERT_TRUE(GetSslCipherSuite(true, &client_cipher)); 1030 ASSERT_TRUE(GetSslCipherSuite(true, &client_cipher));
1029 uint16_t server_cipher; 1031 uint16_t server_cipher;
1030 ASSERT_TRUE(GetSslCipherSuite(false, &server_cipher)); 1032 ASSERT_TRUE(GetSslCipherSuite(false, &server_cipher));
1031 1033
1032 ASSERT_EQ(client_cipher, server_cipher); 1034 ASSERT_EQ(client_cipher, server_cipher);
1033 ASSERT_EQ(rtc::SSLStreamAdapter::GetDefaultSslCipherForTest( 1035 ASSERT_EQ(
1034 rtc::SSL_PROTOCOL_DTLS_10, ::testing::get<1>(GetParam())), 1036 rtc::SSLStreamAdapter::GetDefaultSslCipherForTest(
1035 server_cipher); 1037 rtc::SSL_PROTOCOL_DTLS_10, ::testing::get<1>(GetParam()).type()),
1038 server_cipher);
1036 } 1039 }
1037 1040
1038 INSTANTIATE_TEST_CASE_P(SSLStreamAdapterTestsTLS, 1041 // The RSA keysizes here might look strange, why not include the RFC's size
1039 SSLStreamAdapterTestTLS, 1042 // 2048?. The reason is test case slowness; testing two sizes to exercise
1040 Combine(Values(rtc::KT_RSA, rtc::KT_ECDSA), 1043 // parametrization is sufficient.
1041 Values(rtc::KT_RSA, rtc::KT_ECDSA))); 1044 INSTANTIATE_TEST_CASE_P(
1042 INSTANTIATE_TEST_CASE_P(SSLStreamAdapterTestsDTLS, 1045 SSLStreamAdapterTestsTLS,
1043 SSLStreamAdapterTestDTLS, 1046 SSLStreamAdapterTestTLS,
1044 Combine(Values(rtc::KT_RSA, rtc::KT_ECDSA), 1047 Combine(Values(rtc::KeyParams::RSA(1024, 65537),
1045 Values(rtc::KT_RSA, rtc::KT_ECDSA))); 1048 rtc::KeyParams::RSA(1152, 65537),
1049 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)),
1050 Values(rtc::KeyParams::RSA(1024, 65537),
1051 rtc::KeyParams::RSA(1152, 65537),
1052 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256))));
1053 INSTANTIATE_TEST_CASE_P(
1054 SSLStreamAdapterTestsDTLS,
1055 SSLStreamAdapterTestDTLS,
1056 Combine(Values(rtc::KeyParams::RSA(1024, 65537),
1057 rtc::KeyParams::RSA(1152, 65537),
1058 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256)),
1059 Values(rtc::KeyParams::RSA(1024, 65537),
1060 rtc::KeyParams::RSA(1152, 65537),
1061 rtc::KeyParams::ECDSA(rtc::EC_NIST_P256))));
OLDNEW
« webrtc/base/sslidentity.h ('K') | « webrtc/base/sslidentity.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698