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

Side by Side Diff: net/socket/ssl_client_socket_unittest.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
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 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 int buffer_size_; 155 int buffer_size_;
156 156
157 scoped_refptr<IOBuffer> user_read_buf_; 157 scoped_refptr<IOBuffer> user_read_buf_;
158 CompletionCallback user_read_callback_; 158 CompletionCallback user_read_callback_;
159 }; 159 };
160 160
161 ReadBufferingStreamSocket::ReadBufferingStreamSocket( 161 ReadBufferingStreamSocket::ReadBufferingStreamSocket(
162 scoped_ptr<StreamSocket> transport) 162 scoped_ptr<StreamSocket> transport)
163 : WrappedStreamSocket(transport.Pass()), 163 : WrappedStreamSocket(transport.Pass()),
164 read_buffer_(new GrowableIOBuffer()), 164 read_buffer_(new GrowableIOBuffer()),
165 buffer_size_(0) {} 165 buffer_size_(0) {
166 }
166 167
167 void ReadBufferingStreamSocket::SetBufferSize(int size) { 168 void ReadBufferingStreamSocket::SetBufferSize(int size) {
168 DCHECK(!user_read_buf_.get()); 169 DCHECK(!user_read_buf_.get());
169 buffer_size_ = size; 170 buffer_size_ = size;
170 read_buffer_->SetCapacity(size); 171 read_buffer_->SetCapacity(size);
171 } 172 }
172 173
173 int ReadBufferingStreamSocket::Read(IOBuffer* buf, 174 int ReadBufferingStreamSocket::Read(IOBuffer* buf,
174 int buf_len, 175 int buf_len,
175 const CompletionCallback& callback) { 176 const CompletionCallback& callback) {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 292
292 DISALLOW_COPY_AND_ASSIGN(SynchronousErrorStreamSocket); 293 DISALLOW_COPY_AND_ASSIGN(SynchronousErrorStreamSocket);
293 }; 294 };
294 295
295 SynchronousErrorStreamSocket::SynchronousErrorStreamSocket( 296 SynchronousErrorStreamSocket::SynchronousErrorStreamSocket(
296 scoped_ptr<StreamSocket> transport) 297 scoped_ptr<StreamSocket> transport)
297 : WrappedStreamSocket(transport.Pass()), 298 : WrappedStreamSocket(transport.Pass()),
298 have_read_error_(false), 299 have_read_error_(false),
299 pending_read_error_(OK), 300 pending_read_error_(OK),
300 have_write_error_(false), 301 have_write_error_(false),
301 pending_write_error_(OK) {} 302 pending_write_error_(OK) {
303 }
302 304
303 int SynchronousErrorStreamSocket::Read(IOBuffer* buf, 305 int SynchronousErrorStreamSocket::Read(IOBuffer* buf,
304 int buf_len, 306 int buf_len,
305 const CompletionCallback& callback) { 307 const CompletionCallback& callback) {
306 if (have_read_error_) 308 if (have_read_error_)
307 return pending_read_error_; 309 return pending_read_error_;
308 return transport_->Read(buf, buf_len, callback); 310 return transport_->Read(buf, buf_len, callback);
309 } 311 }
310 312
311 int SynchronousErrorStreamSocket::Write(IOBuffer* buf, 313 int SynchronousErrorStreamSocket::Write(IOBuffer* buf,
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 // WaitForWrite() wait loop. 389 // WaitForWrite() wait loop.
388 scoped_ptr<base::RunLoop> write_loop_; 390 scoped_ptr<base::RunLoop> write_loop_;
389 }; 391 };
390 392
391 FakeBlockingStreamSocket::FakeBlockingStreamSocket( 393 FakeBlockingStreamSocket::FakeBlockingStreamSocket(
392 scoped_ptr<StreamSocket> transport) 394 scoped_ptr<StreamSocket> transport)
393 : WrappedStreamSocket(transport.Pass()), 395 : WrappedStreamSocket(transport.Pass()),
394 should_block_read_(false), 396 should_block_read_(false),
395 pending_read_result_(ERR_IO_PENDING), 397 pending_read_result_(ERR_IO_PENDING),
396 should_block_write_(false), 398 should_block_write_(false),
397 pending_write_len_(-1) {} 399 pending_write_len_(-1) {
400 }
398 401
399 int FakeBlockingStreamSocket::Read(IOBuffer* buf, 402 int FakeBlockingStreamSocket::Read(IOBuffer* buf,
400 int len, 403 int len,
401 const CompletionCallback& callback) { 404 const CompletionCallback& callback) {
402 DCHECK(pending_read_callback_.is_null()); 405 DCHECK(pending_read_callback_.is_null());
403 DCHECK_EQ(ERR_IO_PENDING, pending_read_result_); 406 DCHECK_EQ(ERR_IO_PENDING, pending_read_result_);
404 DCHECK(!callback.is_null()); 407 DCHECK(!callback.is_null());
405 408
406 int rv = transport_->Read(buf, len, base::Bind( 409 int rv =
407 &FakeBlockingStreamSocket::OnReadCompleted, base::Unretained(this))); 410 transport_->Read(buf,
411 len,
412 base::Bind(&FakeBlockingStreamSocket::OnReadCompleted,
413 base::Unretained(this)));
408 if (rv == ERR_IO_PENDING) { 414 if (rv == ERR_IO_PENDING) {
409 // Save the callback to be called later. 415 // Save the callback to be called later.
410 pending_read_callback_ = callback; 416 pending_read_callback_ = callback;
411 } else if (should_block_read_) { 417 } else if (should_block_read_) {
412 // Save the callback and read result to be called later. 418 // Save the callback and read result to be called later.
413 pending_read_callback_ = callback; 419 pending_read_callback_ = callback;
414 OnReadCompleted(rv); 420 OnReadCompleted(rv);
415 rv = ERR_IO_PENDING; 421 rv = ERR_IO_PENDING;
416 } 422 }
417 return rv; 423 return rv;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 485
480 void FakeBlockingStreamSocket::UnblockWrite() { 486 void FakeBlockingStreamSocket::UnblockWrite() {
481 DCHECK(should_block_write_); 487 DCHECK(should_block_write_);
482 should_block_write_ = false; 488 should_block_write_ = false;
483 489
484 // Do nothing if UnblockWrite() was called after BlockWrite(), 490 // Do nothing if UnblockWrite() was called after BlockWrite(),
485 // without a Write() in between. 491 // without a Write() in between.
486 if (!pending_write_buf_) 492 if (!pending_write_buf_)
487 return; 493 return;
488 494
489 int rv = transport_->Write(pending_write_buf_, pending_write_len_, 495 int rv = transport_->Write(
490 pending_write_callback_); 496 pending_write_buf_, pending_write_len_, pending_write_callback_);
491 pending_write_buf_ = NULL; 497 pending_write_buf_ = NULL;
492 pending_write_len_ = -1; 498 pending_write_len_ = -1;
493 if (rv == ERR_IO_PENDING) { 499 if (rv == ERR_IO_PENDING) {
494 pending_write_callback_.Reset(); 500 pending_write_callback_.Reset();
495 } else { 501 } else {
496 base::ResetAndReturn(&pending_write_callback_).Run(rv); 502 base::ResetAndReturn(&pending_write_callback_).Run(rv);
497 } 503 }
498 } 504 }
499 505
500 void FakeBlockingStreamSocket::WaitForWrite() { 506 void FakeBlockingStreamSocket::WaitForWrite() {
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 630
625 return request_info; 631 return request_info;
626 } 632 }
627 }; 633 };
628 634
629 class SSLClientSocketFalseStartTest : public SSLClientSocketTest { 635 class SSLClientSocketFalseStartTest : public SSLClientSocketTest {
630 protected: 636 protected:
631 void TestFalseStart(const SpawnedTestServer::SSLOptions& server_options, 637 void TestFalseStart(const SpawnedTestServer::SSLOptions& server_options,
632 const SSLConfig& client_config, 638 const SSLConfig& client_config,
633 bool expect_false_start) { 639 bool expect_false_start) {
634 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS, 640 SpawnedTestServer test_server(
635 server_options, 641 SpawnedTestServer::TYPE_HTTPS, server_options, base::FilePath());
636 base::FilePath());
637 ASSERT_TRUE(test_server.Start()); 642 ASSERT_TRUE(test_server.Start());
638 643
639 AddressList addr; 644 AddressList addr;
640 ASSERT_TRUE(test_server.GetAddressList(&addr)); 645 ASSERT_TRUE(test_server.GetAddressList(&addr));
641 646
642 TestCompletionCallback callback; 647 TestCompletionCallback callback;
643 scoped_ptr<StreamSocket> real_transport( 648 scoped_ptr<StreamSocket> real_transport(
644 new TCPClientSocket(addr, NULL, NetLog::Source())); 649 new TCPClientSocket(addr, NULL, NetLog::Source()));
645 scoped_ptr<FakeBlockingStreamSocket> transport( 650 scoped_ptr<FakeBlockingStreamSocket> transport(
646 new FakeBlockingStreamSocket(real_transport.Pass())); 651 new FakeBlockingStreamSocket(real_transport.Pass()));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 EXPECT_EQ(OK, rv); 688 EXPECT_EQ(OK, rv);
684 EXPECT_TRUE(sock->IsConnected()); 689 EXPECT_TRUE(sock->IsConnected());
685 690
686 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 691 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
687 static const int kRequestTextSize = 692 static const int kRequestTextSize =
688 static_cast<int>(arraysize(request_text) - 1); 693 static_cast<int>(arraysize(request_text) - 1);
689 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestTextSize)); 694 scoped_refptr<IOBuffer> request_buffer(new IOBuffer(kRequestTextSize));
690 memcpy(request_buffer->data(), request_text, kRequestTextSize); 695 memcpy(request_buffer->data(), request_text, kRequestTextSize);
691 696
692 // Write the request. 697 // Write the request.
693 rv = callback.GetResult(sock->Write(request_buffer.get(), 698 rv = callback.GetResult(sock->Write(
694 kRequestTextSize, 699 request_buffer.get(), kRequestTextSize, callback.callback()));
695 callback.callback()));
696 EXPECT_EQ(kRequestTextSize, rv); 700 EXPECT_EQ(kRequestTextSize, rv);
697 701
698 // The read will hang; it's waiting for the peer to complete the 702 // The read will hang; it's waiting for the peer to complete the
699 // handshake, and the handshake is still blocked. 703 // handshake, and the handshake is still blocked.
700 scoped_refptr<IOBuffer> buf(new IOBuffer(4096)); 704 scoped_refptr<IOBuffer> buf(new IOBuffer(4096));
701 rv = sock->Read(buf.get(), 4096, callback.callback()); 705 rv = sock->Read(buf.get(), 4096, callback.callback());
702 706
703 // After releasing reads, the connection proceeds. 707 // After releasing reads, the connection proceeds.
704 raw_transport->UnblockReadResult(); 708 raw_transport->UnblockReadResult();
705 rv = callback.GetResult(rv); 709 rv = callback.GetResult(rv);
(...skipping 987 matching lines...) Expand 10 before | Expand all | Expand 10 after
1693 TEST_F(SSLClientSocketTest, PrematureApplicationData) { 1697 TEST_F(SSLClientSocketTest, PrematureApplicationData) {
1694 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS, 1698 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS,
1695 SpawnedTestServer::kLocalhost, 1699 SpawnedTestServer::kLocalhost,
1696 base::FilePath()); 1700 base::FilePath());
1697 ASSERT_TRUE(test_server.Start()); 1701 ASSERT_TRUE(test_server.Start());
1698 1702
1699 AddressList addr; 1703 AddressList addr;
1700 TestCompletionCallback callback; 1704 TestCompletionCallback callback;
1701 1705
1702 static const unsigned char application_data[] = { 1706 static const unsigned char application_data[] = {
1703 0x17, 0x03, 0x01, 0x00, 0x4a, 0x02, 0x00, 0x00, 0x46, 0x03, 0x01, 0x4b, 1707 0x17, 0x03, 0x01, 0x00, 0x4a, 0x02, 0x00, 0x00, 0x46, 0x03, 0x01,
1704 0xc2, 0xf8, 0xb2, 0xc1, 0x56, 0x42, 0xb9, 0x57, 0x7f, 0xde, 0x87, 0x46, 1708 0x4b, 0xc2, 0xf8, 0xb2, 0xc1, 0x56, 0x42, 0xb9, 0x57, 0x7f, 0xde,
1705 0xf7, 0xa3, 0x52, 0x42, 0x21, 0xf0, 0x13, 0x1c, 0x9c, 0x83, 0x88, 0xd6, 1709 0x87, 0x46, 0xf7, 0xa3, 0x52, 0x42, 0x21, 0xf0, 0x13, 0x1c, 0x9c,
1706 0x93, 0x0c, 0xf6, 0x36, 0x30, 0x05, 0x7e, 0x20, 0xb5, 0xb5, 0x73, 0x36, 1710 0x83, 0x88, 0xd6, 0x93, 0x0c, 0xf6, 0x36, 0x30, 0x05, 0x7e, 0x20,
1707 0x53, 0x83, 0x0a, 0xfc, 0x17, 0x63, 0xbf, 0xa0, 0xe4, 0x42, 0x90, 0x0d, 1711 0xb5, 0xb5, 0x73, 0x36, 0x53, 0x83, 0x0a, 0xfc, 0x17, 0x63, 0xbf,
1708 0x2f, 0x18, 0x6d, 0x20, 0xd8, 0x36, 0x3f, 0xfc, 0xe6, 0x01, 0xfa, 0x0f, 1712 0xa0, 0xe4, 0x42, 0x90, 0x0d, 0x2f, 0x18, 0x6d, 0x20, 0xd8, 0x36,
1709 0xa5, 0x75, 0x7f, 0x09, 0x00, 0x04, 0x00, 0x16, 0x03, 0x01, 0x11, 0x57, 1713 0x3f, 0xfc, 0xe6, 0x01, 0xfa, 0x0f, 0xa5, 0x75, 0x7f, 0x09, 0x00,
1710 0x0b, 0x00, 0x11, 0x53, 0x00, 0x11, 0x50, 0x00, 0x06, 0x22, 0x30, 0x82, 1714 0x04, 0x00, 0x16, 0x03, 0x01, 0x11, 0x57, 0x0b, 0x00, 0x11, 0x53,
1711 0x06, 0x1e, 0x30, 0x82, 0x05, 0x06, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 1715 0x00, 0x11, 0x50, 0x00, 0x06, 0x22, 0x30, 0x82, 0x06, 0x1e, 0x30,
1712 0x0a}; 1716 0x82, 0x05, 0x06, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0a};
1713 1717
1714 // All reads and writes complete synchronously (async=false). 1718 // All reads and writes complete synchronously (async=false).
1715 MockRead data_reads[] = { 1719 MockRead data_reads[] = {
1716 MockRead(SYNCHRONOUS, 1720 MockRead(SYNCHRONOUS,
1717 reinterpret_cast<const char*>(application_data), 1721 reinterpret_cast<const char*>(application_data),
1718 arraysize(application_data)), 1722 arraysize(application_data)),
1719 MockRead(SYNCHRONOUS, OK), }; 1723 MockRead(SYNCHRONOUS, OK),
1724 };
1720 1725
1721 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 1726 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
1722 1727
1723 scoped_ptr<StreamSocket> transport( 1728 scoped_ptr<StreamSocket> transport(
1724 new MockTCPClientSocket(addr, NULL, &data)); 1729 new MockTCPClientSocket(addr, NULL, &data));
1725 int rv = transport->Connect(callback.callback()); 1730 int rv = transport->Connect(callback.callback());
1726 if (rv == ERR_IO_PENDING) 1731 if (rv == ERR_IO_PENDING)
1727 rv = callback.WaitForResult(); 1732 rv = callback.WaitForResult();
1728 EXPECT_EQ(OK, rv); 1733 EXPECT_EQ(OK, rv);
1729 1734
1730 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1735 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1731 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 1736 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig));
1732 1737
1733 rv = sock->Connect(callback.callback()); 1738 rv = sock->Connect(callback.callback());
1734 if (rv == ERR_IO_PENDING) 1739 if (rv == ERR_IO_PENDING)
1735 rv = callback.WaitForResult(); 1740 rv = callback.WaitForResult();
1736 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, rv); 1741 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, rv);
1737 } 1742 }
1738 1743
1739 TEST_F(SSLClientSocketTest, CipherSuiteDisables) { 1744 TEST_F(SSLClientSocketTest, CipherSuiteDisables) {
1740 // Rather than exhaustively disabling every RC4 ciphersuite defined at 1745 // Rather than exhaustively disabling every RC4 ciphersuite defined at
1741 // http://www.iana.org/assignments/tls-parameters/tls-parameters.xml, 1746 // http://www.iana.org/assignments/tls-parameters/tls-parameters.xml,
1742 // only disabling those cipher suites that the test server actually 1747 // only disabling those cipher suites that the test server actually
1743 // implements. 1748 // implements.
1744 const uint16 kCiphersToDisable[] = {0x0005, // TLS_RSA_WITH_RC4_128_SHA 1749 const uint16 kCiphersToDisable[] = {
1750 0x0005, // TLS_RSA_WITH_RC4_128_SHA
1745 }; 1751 };
1746 1752
1747 SpawnedTestServer::SSLOptions ssl_options; 1753 SpawnedTestServer::SSLOptions ssl_options;
1748 // Enable only RC4 on the test server. 1754 // Enable only RC4 on the test server.
1749 ssl_options.bulk_ciphers = SpawnedTestServer::SSLOptions::BULK_CIPHER_RC4; 1755 ssl_options.bulk_ciphers = SpawnedTestServer::SSLOptions::BULK_CIPHER_RC4;
1750 SpawnedTestServer test_server( 1756 SpawnedTestServer test_server(
1751 SpawnedTestServer::TYPE_HTTPS, ssl_options, base::FilePath()); 1757 SpawnedTestServer::TYPE_HTTPS, ssl_options, base::FilePath());
1752 ASSERT_TRUE(test_server.Start()); 1758 ASSERT_TRUE(test_server.Start());
1753 1759
1754 AddressList addr; 1760 AddressList addr;
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
2083 0x13, 0x1c, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x43, 0x6f, 0x6e, 2089 0x13, 0x1c, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x43, 0x6f, 0x6e,
2084 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x28, 0x50, 0x74, 0x79, 2090 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x28, 0x50, 0x74, 0x79,
2085 0x29, 0x20, 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 2091 0x29, 0x20, 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03,
2086 0x55, 0x04, 0x03, 0x13, 0x0d, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 2092 0x55, 0x04, 0x03, 0x13, 0x0d, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20,
2087 0x53, 0x47, 0x43, 0x20, 0x43, 0x41}; 2093 0x53, 0x47, 0x43, 0x20, 0x43, 0x41};
2088 const size_t kThawteLen = sizeof(kThawteDN); 2094 const size_t kThawteLen = sizeof(kThawteDN);
2089 2095
2090 const base::FilePath::CharType kDiginotarFile[] = 2096 const base::FilePath::CharType kDiginotarFile[] =
2091 FILE_PATH_LITERAL("diginotar_root_ca.pem"); 2097 FILE_PATH_LITERAL("diginotar_root_ca.pem");
2092 const unsigned char kDiginotarDN[] = { 2098 const unsigned char kDiginotarDN[] = {
2093 0x30, 0x5f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 2099 0x30, 0x5f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
2094 0x02, 0x4e, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 2100 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55,
2095 0x13, 0x09, 0x44, 0x69, 0x67, 0x69, 0x4e, 0x6f, 0x74, 0x61, 0x72, 0x31, 2101 0x04, 0x0a, 0x13, 0x09, 0x44, 0x69, 0x67, 0x69, 0x4e, 0x6f, 0x74,
2096 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x44, 0x69, 2102 0x61, 0x72, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03,
2097 0x67, 0x69, 0x4e, 0x6f, 0x74, 0x61, 0x72, 0x20, 0x52, 0x6f, 0x6f, 0x74, 2103 0x13, 0x11, 0x44, 0x69, 0x67, 0x69, 0x4e, 0x6f, 0x74, 0x61, 0x72,
2098 0x20, 0x43, 0x41, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x09, 0x2a, 0x86, 0x48, 2104 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x20, 0x30,
2099 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x11, 0x69, 0x6e, 0x66, 0x6f, 2105 0x1e, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09,
2100 0x40, 0x64, 0x69, 0x67, 0x69, 0x6e, 0x6f, 0x74, 0x61, 0x72, 0x2e, 0x6e, 2106 0x01, 0x16, 0x11, 0x69, 0x6e, 0x66, 0x6f, 0x40, 0x64, 0x69, 0x67,
2101 0x6c}; 2107 0x69, 0x6e, 0x6f, 0x74, 0x61, 0x72, 0x2e, 0x6e, 0x6c};
2102 const size_t kDiginotarLen = sizeof(kDiginotarDN); 2108 const size_t kDiginotarLen = sizeof(kDiginotarDN);
2103 2109
2104 SpawnedTestServer::SSLOptions ssl_options; 2110 SpawnedTestServer::SSLOptions ssl_options;
2105 ssl_options.request_client_certificate = true; 2111 ssl_options.request_client_certificate = true;
2106 ssl_options.client_authorities.push_back( 2112 ssl_options.client_authorities.push_back(
2107 GetTestClientCertsDirectory().Append(kThawteFile)); 2113 GetTestClientCertsDirectory().Append(kThawteFile));
2108 ssl_options.client_authorities.push_back( 2114 ssl_options.client_authorities.push_back(
2109 GetTestClientCertsDirectory().Append(kDiginotarFile)); 2115 GetTestClientCertsDirectory().Append(kDiginotarFile));
2110 scoped_refptr<SSLCertRequestInfo> request_info = GetCertRequest(ssl_options); 2116 scoped_refptr<SSLCertRequestInfo> request_info = GetCertRequest(ssl_options);
2111 ASSERT_TRUE(request_info.get()); 2117 ASSERT_TRUE(request_info.get());
2112 ASSERT_EQ(2u, request_info->cert_authorities.size()); 2118 ASSERT_EQ(2u, request_info->cert_authorities.size());
2113 EXPECT_EQ(std::string(reinterpret_cast<const char*>(kThawteDN), kThawteLen), 2119 EXPECT_EQ(std::string(reinterpret_cast<const char*>(kThawteDN), kThawteLen),
2114 request_info->cert_authorities[0]); 2120 request_info->cert_authorities[0]);
2115 EXPECT_EQ( 2121 EXPECT_EQ(
2116 std::string(reinterpret_cast<const char*>(kDiginotarDN), kDiginotarLen), 2122 std::string(reinterpret_cast<const char*>(kDiginotarDN), kDiginotarLen),
2117 request_info->cert_authorities[1]); 2123 request_info->cert_authorities[1]);
2118 } 2124 }
2119 2125
2120 TEST_F(SSLClientSocketTest, ConnectSignedCertTimestampsEnabledTLSExtension) { 2126 TEST_F(SSLClientSocketTest, ConnectSignedCertTimestampsEnabledTLSExtension) {
2121 SpawnedTestServer::SSLOptions ssl_options; 2127 SpawnedTestServer::SSLOptions ssl_options;
2122 ssl_options.signed_cert_timestamps_tls_ext = "test"; 2128 ssl_options.signed_cert_timestamps_tls_ext = "test";
2123 2129
2124 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS, 2130 SpawnedTestServer test_server(
2125 ssl_options, 2131 SpawnedTestServer::TYPE_HTTPS, ssl_options, base::FilePath());
2126 base::FilePath());
2127 ASSERT_TRUE(test_server.Start()); 2132 ASSERT_TRUE(test_server.Start());
2128 2133
2129 AddressList addr; 2134 AddressList addr;
2130 ASSERT_TRUE(test_server.GetAddressList(&addr)); 2135 ASSERT_TRUE(test_server.GetAddressList(&addr));
2131 2136
2132 TestCompletionCallback callback; 2137 TestCompletionCallback callback;
2133 CapturingNetLog log; 2138 CapturingNetLog log;
2134 scoped_ptr<StreamSocket> transport( 2139 scoped_ptr<StreamSocket> transport(
2135 new TCPClientSocket(addr, &log, NetLog::Source())); 2140 new TCPClientSocket(addr, &log, NetLog::Source()));
2136 int rv = transport->Connect(callback.callback()); 2141 int rv = transport->Connect(callback.callback());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2170 } 2175 }
2171 2176
2172 // Test that enabling Signed Certificate Timestamps enables OCSP stapling. 2177 // Test that enabling Signed Certificate Timestamps enables OCSP stapling.
2173 TEST_F(SSLClientSocketTest, ConnectSignedCertTimestampsEnabledOCSP) { 2178 TEST_F(SSLClientSocketTest, ConnectSignedCertTimestampsEnabledOCSP) {
2174 SpawnedTestServer::SSLOptions ssl_options; 2179 SpawnedTestServer::SSLOptions ssl_options;
2175 ssl_options.staple_ocsp_response = true; 2180 ssl_options.staple_ocsp_response = true;
2176 // The test server currently only knows how to generate OCSP responses 2181 // The test server currently only knows how to generate OCSP responses
2177 // for a freshly minted certificate. 2182 // for a freshly minted certificate.
2178 ssl_options.server_certificate = SpawnedTestServer::SSLOptions::CERT_AUTO; 2183 ssl_options.server_certificate = SpawnedTestServer::SSLOptions::CERT_AUTO;
2179 2184
2180 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS, 2185 SpawnedTestServer test_server(
2181 ssl_options, 2186 SpawnedTestServer::TYPE_HTTPS, ssl_options, base::FilePath());
2182 base::FilePath());
2183 ASSERT_TRUE(test_server.Start()); 2187 ASSERT_TRUE(test_server.Start());
2184 2188
2185 AddressList addr; 2189 AddressList addr;
2186 ASSERT_TRUE(test_server.GetAddressList(&addr)); 2190 ASSERT_TRUE(test_server.GetAddressList(&addr));
2187 2191
2188 TestCompletionCallback callback; 2192 TestCompletionCallback callback;
2189 CapturingNetLog log; 2193 CapturingNetLog log;
2190 scoped_ptr<StreamSocket> transport( 2194 scoped_ptr<StreamSocket> transport(
2191 new TCPClientSocket(addr, &log, NetLog::Source())); 2195 new TCPClientSocket(addr, &log, NetLog::Source()));
2192 int rv = transport->Connect(callback.callback()); 2196 int rv = transport->Connect(callback.callback());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2225 #endif 2229 #endif
2226 2230
2227 sock->Disconnect(); 2231 sock->Disconnect();
2228 EXPECT_FALSE(sock->IsConnected()); 2232 EXPECT_FALSE(sock->IsConnected());
2229 } 2233 }
2230 2234
2231 TEST_F(SSLClientSocketTest, ConnectSignedCertTimestampsDisabled) { 2235 TEST_F(SSLClientSocketTest, ConnectSignedCertTimestampsDisabled) {
2232 SpawnedTestServer::SSLOptions ssl_options; 2236 SpawnedTestServer::SSLOptions ssl_options;
2233 ssl_options.signed_cert_timestamps_tls_ext = "test"; 2237 ssl_options.signed_cert_timestamps_tls_ext = "test";
2234 2238
2235 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS, 2239 SpawnedTestServer test_server(
2236 ssl_options, 2240 SpawnedTestServer::TYPE_HTTPS, ssl_options, base::FilePath());
2237 base::FilePath());
2238 ASSERT_TRUE(test_server.Start()); 2241 ASSERT_TRUE(test_server.Start());
2239 2242
2240 AddressList addr; 2243 AddressList addr;
2241 ASSERT_TRUE(test_server.GetAddressList(&addr)); 2244 ASSERT_TRUE(test_server.GetAddressList(&addr));
2242 2245
2243 TestCompletionCallback callback; 2246 TestCompletionCallback callback;
2244 CapturingNetLog log; 2247 CapturingNetLog log;
2245 scoped_ptr<StreamSocket> transport( 2248 scoped_ptr<StreamSocket> transport(
2246 new TCPClientSocket(addr, &log, NetLog::Source())); 2249 new TCPClientSocket(addr, &log, NetLog::Source()));
2247 int rv = transport->Connect(callback.callback()); 2250 int rv = transport->Connect(callback.callback());
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
2357 SpawnedTestServer::SSLOptions server_options; 2360 SpawnedTestServer::SSLOptions server_options;
2358 server_options.key_exchanges = 2361 server_options.key_exchanges =
2359 SpawnedTestServer::SSLOptions::KEY_EXCHANGE_RSA; 2362 SpawnedTestServer::SSLOptions::KEY_EXCHANGE_RSA;
2360 server_options.enable_npn = true; 2363 server_options.enable_npn = true;
2361 SSLConfig client_config; 2364 SSLConfig client_config;
2362 client_config.next_protos.push_back("http/1.1"); 2365 client_config.next_protos.push_back("http/1.1");
2363 TestFalseStart(server_options, client_config, false); 2366 TestFalseStart(server_options, client_config, false);
2364 } 2367 }
2365 2368
2366 } // namespace net 2369 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698