OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/socket/ssl_client_socket.h" | 5 #include "net/socket/ssl_client_socket.h" |
6 | 6 |
7 #include "base/callback_helpers.h" | 7 #include "base/callback_helpers.h" |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "net/base/address_list.h" | 10 #include "net/base/address_list.h" |
(...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
697 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); | 697 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); |
698 EXPECT_FALSE(sock->IsConnected()); | 698 EXPECT_FALSE(sock->IsConnected()); |
699 | 699 |
700 rv = sock->Connect(callback.callback()); | 700 rv = sock->Connect(callback.callback()); |
701 if (rv == ERR_IO_PENDING) | 701 if (rv == ERR_IO_PENDING) |
702 rv = callback.WaitForResult(); | 702 rv = callback.WaitForResult(); |
703 scoped_refptr<SSLCertRequestInfo> request_info = new SSLCertRequestInfo(); | 703 scoped_refptr<SSLCertRequestInfo> request_info = new SSLCertRequestInfo(); |
704 sock->GetSSLCertRequestInfo(request_info.get()); | 704 sock->GetSSLCertRequestInfo(request_info.get()); |
705 sock->Disconnect(); | 705 sock->Disconnect(); |
706 EXPECT_FALSE(sock->IsConnected()); | 706 EXPECT_FALSE(sock->IsConnected()); |
| 707 EXPECT_TRUE( |
| 708 test_server.host_port_pair().Equals(request_info->host_and_port)); |
707 | 709 |
708 return request_info; | 710 return request_info; |
709 } | 711 } |
710 }; | 712 }; |
711 | 713 |
712 class SSLClientSocketFalseStartTest : public SSLClientSocketTest { | 714 class SSLClientSocketFalseStartTest : public SSLClientSocketTest { |
713 protected: | 715 protected: |
714 void TestFalseStart(const SpawnedTestServer::SSLOptions& server_options, | 716 void TestFalseStart(const SpawnedTestServer::SSLOptions& server_options, |
715 const SSLConfig& client_config, | 717 const SSLConfig& client_config, |
716 bool expect_false_start) { | 718 bool expect_false_start) { |
(...skipping 1495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2212 scoped_refptr<SSLCertRequestInfo> request_info = GetCertRequest(ssl_options); | 2214 scoped_refptr<SSLCertRequestInfo> request_info = GetCertRequest(ssl_options); |
2213 ASSERT_TRUE(request_info.get()); | 2215 ASSERT_TRUE(request_info.get()); |
2214 ASSERT_EQ(2u, request_info->cert_authorities.size()); | 2216 ASSERT_EQ(2u, request_info->cert_authorities.size()); |
2215 EXPECT_EQ(std::string(reinterpret_cast<const char*>(kThawteDN), kThawteLen), | 2217 EXPECT_EQ(std::string(reinterpret_cast<const char*>(kThawteDN), kThawteLen), |
2216 request_info->cert_authorities[0]); | 2218 request_info->cert_authorities[0]); |
2217 EXPECT_EQ( | 2219 EXPECT_EQ( |
2218 std::string(reinterpret_cast<const char*>(kDiginotarDN), kDiginotarLen), | 2220 std::string(reinterpret_cast<const char*>(kDiginotarDN), kDiginotarLen), |
2219 request_info->cert_authorities[1]); | 2221 request_info->cert_authorities[1]); |
2220 } | 2222 } |
2221 | 2223 |
| 2224 // cert_key_types is currently only populated on OpenSSL. |
| 2225 #if defined(USE_OPENSSL) |
| 2226 TEST_F(SSLClientSocketCertRequestInfoTest, CertKeyTypes) { |
| 2227 SpawnedTestServer::SSLOptions ssl_options; |
| 2228 ssl_options.request_client_certificate = true; |
| 2229 ssl_options.client_cert_types.push_back(CLIENT_CERT_RSA_SIGN); |
| 2230 ssl_options.client_cert_types.push_back(CLIENT_CERT_ECDSA_SIGN); |
| 2231 scoped_refptr<SSLCertRequestInfo> request_info = GetCertRequest(ssl_options); |
| 2232 ASSERT_TRUE(request_info.get()); |
| 2233 ASSERT_EQ(2u, request_info->cert_key_types.size()); |
| 2234 EXPECT_EQ(CLIENT_CERT_RSA_SIGN, request_info->cert_key_types[0]); |
| 2235 EXPECT_EQ(CLIENT_CERT_ECDSA_SIGN, request_info->cert_key_types[1]); |
| 2236 } |
| 2237 #endif // defined(USE_OPENSSL) |
| 2238 |
2222 TEST_F(SSLClientSocketTest, ConnectSignedCertTimestampsEnabledTLSExtension) { | 2239 TEST_F(SSLClientSocketTest, ConnectSignedCertTimestampsEnabledTLSExtension) { |
2223 SpawnedTestServer::SSLOptions ssl_options; | 2240 SpawnedTestServer::SSLOptions ssl_options; |
2224 ssl_options.signed_cert_timestamps_tls_ext = "test"; | 2241 ssl_options.signed_cert_timestamps_tls_ext = "test"; |
2225 | 2242 |
2226 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS, | 2243 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS, |
2227 ssl_options, | 2244 ssl_options, |
2228 base::FilePath()); | 2245 base::FilePath()); |
2229 ASSERT_TRUE(test_server.Start()); | 2246 ASSERT_TRUE(test_server.Start()); |
2230 | 2247 |
2231 AddressList addr; | 2248 AddressList addr; |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2502 | 2519 |
2503 // TODO(haavardm@opera.com): Due to differences in threading, Linux returns | 2520 // TODO(haavardm@opera.com): Due to differences in threading, Linux returns |
2504 // ERR_UNEXPECTED while Mac and Windows return ERR_PROTOCOL_ERROR. Accept all | 2521 // ERR_UNEXPECTED while Mac and Windows return ERR_PROTOCOL_ERROR. Accept all |
2505 // error codes for now. | 2522 // error codes for now. |
2506 // http://crbug.com/373670 | 2523 // http://crbug.com/373670 |
2507 EXPECT_NE(OK, rv); | 2524 EXPECT_NE(OK, rv); |
2508 EXPECT_FALSE(sock_->IsConnected()); | 2525 EXPECT_FALSE(sock_->IsConnected()); |
2509 } | 2526 } |
2510 | 2527 |
2511 } // namespace net | 2528 } // namespace net |
OLD | NEW |