Index: net/socket/ssl_server_socket_unittest.cc |
diff --git a/net/socket/ssl_server_socket_unittest.cc b/net/socket/ssl_server_socket_unittest.cc |
index 9a2dd9cadd6ee38e6b529d970874643ce4f6a824..52ae7d8ba2299df71b608f12635a55f66e8e6288 100644 |
--- a/net/socket/ssl_server_socket_unittest.cc |
+++ b/net/socket/ssl_server_socket_unittest.cc |
@@ -204,9 +204,7 @@ class FakeSocket : public StreamSocket { |
public: |
FakeSocket(FakeDataChannel* incoming_channel, |
FakeDataChannel* outgoing_channel) |
- : incoming_(incoming_channel), |
- outgoing_(outgoing_channel) { |
- } |
+ : incoming_(incoming_channel), outgoing_(outgoing_channel) {} |
~FakeSocket() override {} |
@@ -340,20 +338,10 @@ class SSLServerSocketTest : public PlatformTest { |
transport_security_state_(new TransportSecurityState) { |
cert_verifier_->set_default_result(ERR_CERT_AUTHORITY_INVALID); |
client_cert_verifier_->set_default_result(ERR_CERT_AUTHORITY_INVALID); |
- } |
- |
- protected: |
- void Initialize() { |
- scoped_ptr<ClientSocketHandle> client_connection(new ClientSocketHandle); |
- client_connection->SetSocket( |
- scoped_ptr<StreamSocket>(new FakeSocket(&channel_1_, &channel_2_))); |
- scoped_ptr<StreamSocket> server_socket( |
- new FakeSocket(&channel_2_, &channel_1_)); |
- scoped_refptr<X509Certificate> server_cert( |
- ImportCertFromFile(GetTestCertsDirectory(), "unittest.selfsigned.der")); |
- scoped_ptr<crypto::RSAPrivateKey> server_private_key( |
- ReadTestKey("unittest.key.bin")); |
+ server_cert_ = |
+ ImportCertFromFile(GetTestCertsDirectory(), "unittest.selfsigned.der"); |
+ server_private_key_ = ReadTestKey("unittest.key.bin"); |
client_ssl_config_.false_start_enabled = false; |
client_ssl_config_.channel_id_enabled = false; |
@@ -362,22 +350,44 @@ class SSLServerSocketTest : public PlatformTest { |
SSLConfig::CertAndStatus cert_and_status; |
cert_and_status.cert_status = CERT_STATUS_AUTHORITY_INVALID; |
std::string server_cert_der; |
- CHECK(X509Certificate::GetDEREncoded(server_cert->os_cert_handle(), |
+ CHECK(X509Certificate::GetDEREncoded(server_cert_->os_cert_handle(), |
&server_cert_der)); |
cert_and_status.der_cert = server_cert_der; |
client_ssl_config_.allowed_bad_certs.push_back(cert_and_status); |
+ } |
+ |
+ protected: |
+ void CreateContext() { |
+ client_socket_.reset(); |
+ server_socket_.reset(); |
+ channel_1_.reset(); |
+ channel_2_.reset(); |
+ server_context_.reset(); |
+ server_context_ = CreateSSLServerContext( |
+ server_cert_.get(), *server_private_key_, server_ssl_config_); |
+ } |
+ |
+ void CreateSockets() { |
+ client_socket_.reset(); |
+ server_socket_.reset(); |
+ channel_1_.reset(new FakeDataChannel()); |
+ channel_2_.reset(new FakeDataChannel()); |
+ scoped_ptr<ClientSocketHandle> client_connection(new ClientSocketHandle); |
+ client_connection->SetSocket(scoped_ptr<StreamSocket>( |
+ new FakeSocket(channel_1_.get(), channel_2_.get()))); |
+ scoped_ptr<StreamSocket> server_socket( |
+ new FakeSocket(channel_2_.get(), channel_1_.get())); |
HostPortPair host_and_pair("unittest", 0); |
SSLClientSocketContext context; |
context.cert_verifier = cert_verifier_.get(); |
context.transport_security_state = transport_security_state_.get(); |
- socket_factory_->ClearSSLSessionCache(); |
client_socket_ = socket_factory_->CreateSSLClientSocket( |
std::move(client_connection), host_and_pair, client_ssl_config_, |
context); |
+ |
server_socket_ = |
- CreateSSLServerSocket(std::move(server_socket), server_cert.get(), |
- *server_private_key, server_ssl_config_); |
+ server_context_->CreateSSLServerSocket(std::move(server_socket)); |
} |
#if defined(USE_OPENSSL) |
@@ -434,8 +444,8 @@ class SSLServerSocketTest : public PlatformTest { |
} |
#endif |
- FakeDataChannel channel_1_; |
- FakeDataChannel channel_2_; |
+ scoped_ptr<FakeDataChannel> channel_1_; |
+ scoped_ptr<FakeDataChannel> channel_2_; |
SSLConfig client_ssl_config_; |
SSLServerConfig server_ssl_config_; |
scoped_ptr<SSLClientSocket> client_socket_; |
@@ -444,20 +454,25 @@ class SSLServerSocketTest : public PlatformTest { |
scoped_ptr<MockCertVerifier> cert_verifier_; |
scoped_ptr<MockClientCertVerifier> client_cert_verifier_; |
scoped_ptr<TransportSecurityState> transport_security_state_; |
+ scoped_ptr<SSLServerContext> server_context_; |
+ scoped_ptr<crypto::RSAPrivateKey> server_private_key_; |
+ scoped_refptr<X509Certificate> server_cert_; |
}; |
// This test only executes creation of client and server sockets. This is to |
// test that creation of sockets doesn't crash and have minimal code to run |
// under valgrind in order to help debugging memory problems. |
TEST_F(SSLServerSocketTest, Initialize) { |
- Initialize(); |
+ CreateContext(); |
+ CreateSockets(); |
} |
// This test executes Connect() on SSLClientSocket and Handshake() on |
// SSLServerSocket to make sure handshaking between the two sockets is |
// completed successfully. |
TEST_F(SSLServerSocketTest, Handshake) { |
- Initialize(); |
+ CreateContext(); |
+ CreateSockets(); |
TestCompletionCallback handshake_callback; |
int server_ret = server_socket_->Handshake(handshake_callback.callback()); |
@@ -489,9 +504,107 @@ TEST_F(SSLServerSocketTest, Handshake) { |
EXPECT_TRUE(is_aead); |
} |
-// NSS ports don't support client certificates. |
+// NSS ports don't support client certificates and have a global session cache. |
#if defined(USE_OPENSSL) |
+// This test makes sure the session cache is working. |
+TEST_F(SSLServerSocketTest, HandshakeCached) { |
+ CreateContext(); |
+ CreateSockets(); |
+ |
+ TestCompletionCallback handshake_callback; |
+ int server_ret = server_socket_->Handshake(handshake_callback.callback()); |
+ |
+ TestCompletionCallback connect_callback; |
+ int client_ret = client_socket_->Connect(connect_callback.callback()); |
+ |
+ client_ret = connect_callback.GetResult(client_ret); |
+ server_ret = handshake_callback.GetResult(server_ret); |
+ |
+ ASSERT_EQ(OK, client_ret); |
+ ASSERT_EQ(OK, server_ret); |
+ |
+ // Make sure the cert status is expected. |
+ SSLInfo ssl_info; |
+ ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info)); |
+ EXPECT_EQ(ssl_info.handshake_type, SSLInfo::HANDSHAKE_FULL); |
+ SSLInfo ssl_server_info; |
+ ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info)); |
+ EXPECT_EQ(ssl_server_info.handshake_type, SSLInfo::HANDSHAKE_FULL); |
+ |
+ // Make sure the second connection is cached. |
+ CreateSockets(); |
+ TestCompletionCallback handshake_callback2; |
+ int server_ret2 = server_socket_->Handshake(handshake_callback2.callback()); |
+ |
+ TestCompletionCallback connect_callback2; |
+ int client_ret2 = client_socket_->Connect(connect_callback2.callback()); |
+ |
+ client_ret2 = connect_callback2.GetResult(client_ret2); |
+ server_ret2 = handshake_callback2.GetResult(server_ret2); |
+ |
+ ASSERT_EQ(OK, client_ret2); |
+ ASSERT_EQ(OK, server_ret2); |
+ |
+ // Make sure the cert status is expected. |
+ SSLInfo ssl_info2; |
+ ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info2)); |
+ EXPECT_EQ(ssl_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME); |
+ SSLInfo ssl_server_info2; |
+ ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info2)); |
+ EXPECT_EQ(ssl_server_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME); |
+} |
+ |
+// This test makes sure the session cache separates out by server context. |
+TEST_F(SSLServerSocketTest, HandshakeCachedContextSwitch) { |
+ CreateContext(); |
+ CreateSockets(); |
+ |
+ TestCompletionCallback handshake_callback; |
+ int server_ret = server_socket_->Handshake(handshake_callback.callback()); |
+ |
+ TestCompletionCallback connect_callback; |
+ int client_ret = client_socket_->Connect(connect_callback.callback()); |
+ |
+ client_ret = connect_callback.GetResult(client_ret); |
+ server_ret = handshake_callback.GetResult(server_ret); |
+ |
+ ASSERT_EQ(OK, client_ret); |
+ ASSERT_EQ(OK, server_ret); |
+ |
+ // Make sure the cert status is expected. |
+ SSLInfo ssl_info; |
+ ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info)); |
+ EXPECT_EQ(ssl_info.handshake_type, SSLInfo::HANDSHAKE_FULL); |
+ SSLInfo ssl_server_info; |
+ ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info)); |
+ EXPECT_EQ(ssl_server_info.handshake_type, SSLInfo::HANDSHAKE_FULL); |
+ |
+ // Make sure the second connection is NOT cached when using a new context. |
+ CreateContext(); |
+ CreateSockets(); |
+ |
+ TestCompletionCallback handshake_callback2; |
+ int server_ret2 = server_socket_->Handshake(handshake_callback2.callback()); |
+ |
+ TestCompletionCallback connect_callback2; |
+ int client_ret2 = client_socket_->Connect(connect_callback2.callback()); |
+ |
+ client_ret2 = connect_callback2.GetResult(client_ret2); |
+ server_ret2 = handshake_callback2.GetResult(server_ret2); |
+ |
+ ASSERT_EQ(OK, client_ret2); |
+ ASSERT_EQ(OK, server_ret2); |
+ |
+ // Make sure the cert status is expected. |
+ SSLInfo ssl_info2; |
+ ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info2)); |
+ EXPECT_EQ(ssl_info2.handshake_type, SSLInfo::HANDSHAKE_FULL); |
+ SSLInfo ssl_server_info2; |
+ ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info2)); |
+ EXPECT_EQ(ssl_server_info2.handshake_type, SSLInfo::HANDSHAKE_FULL); |
+} |
+ |
// This test executes Connect() on SSLClientSocket and Handshake() on |
// SSLServerSocket to make sure handshaking between the two sockets is |
// completed successfully, using client certificate. |
@@ -500,7 +613,8 @@ TEST_F(SSLServerSocketTest, HandshakeWithClientCert) { |
ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName); |
ConfigureClientCertsForClient(kClientCertFileName, kClientPrivateKeyFileName); |
ConfigureClientCertsForServer(); |
- Initialize(); |
+ CreateContext(); |
+ CreateSockets(); |
TestCompletionCallback handshake_callback; |
int server_ret = server_socket_->Handshake(handshake_callback.callback()); |
@@ -523,9 +637,103 @@ TEST_F(SSLServerSocketTest, HandshakeWithClientCert) { |
EXPECT_TRUE(client_cert->Equals(ssl_info.cert.get())); |
} |
+// This test executes Connect() on SSLClientSocket and Handshake() twice on |
+// SSLServerSocket to make sure handshaking between the two sockets is |
+// completed successfully, using client certificate. The second connection is |
+// expected to succeed through the session cache. |
+TEST_F(SSLServerSocketTest, HandshakeWithClientCertCached) { |
+ scoped_refptr<X509Certificate> client_cert = |
+ ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName); |
+ ConfigureClientCertsForClient(kClientCertFileName, kClientPrivateKeyFileName); |
+ ConfigureClientCertsForServer(); |
+ CreateContext(); |
+ CreateSockets(); |
+ |
+ TestCompletionCallback handshake_callback; |
+ int server_ret = server_socket_->Handshake(handshake_callback.callback()); |
+ |
+ TestCompletionCallback connect_callback; |
+ int client_ret = client_socket_->Connect(connect_callback.callback()); |
+ |
+ client_ret = connect_callback.GetResult(client_ret); |
+ server_ret = handshake_callback.GetResult(server_ret); |
+ |
+ ASSERT_EQ(OK, client_ret); |
+ ASSERT_EQ(OK, server_ret); |
+ |
+ // Make sure the cert status is expected. |
+ SSLInfo ssl_info; |
+ ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info)); |
+ EXPECT_EQ(ssl_info.handshake_type, SSLInfo::HANDSHAKE_FULL); |
+ SSLInfo ssl_server_info; |
+ ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info)); |
+ ASSERT_TRUE(ssl_server_info.cert.get()); |
+ EXPECT_TRUE(client_cert->Equals(ssl_server_info.cert.get())); |
+ EXPECT_EQ(ssl_server_info.handshake_type, SSLInfo::HANDSHAKE_FULL); |
+ server_socket_->Disconnect(); |
+ client_socket_->Disconnect(); |
+ |
+ // Create the connection again. |
+ CreateSockets(); |
+ TestCompletionCallback handshake_callback2; |
+ int server_ret2 = server_socket_->Handshake(handshake_callback2.callback()); |
+ |
+ TestCompletionCallback connect_callback2; |
+ int client_ret2 = client_socket_->Connect(connect_callback2.callback()); |
+ |
+ client_ret2 = connect_callback2.GetResult(client_ret2); |
+ server_ret2 = handshake_callback2.GetResult(server_ret2); |
+ |
+ ASSERT_EQ(OK, client_ret2); |
+ ASSERT_EQ(OK, server_ret2); |
+ |
+ // Make sure the cert status is expected. |
+ SSLInfo ssl_info2; |
+ ASSERT_TRUE(client_socket_->GetSSLInfo(&ssl_info2)); |
+ EXPECT_EQ(ssl_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME); |
+ SSLInfo ssl_server_info2; |
+ ASSERT_TRUE(server_socket_->GetSSLInfo(&ssl_server_info2)); |
+ ASSERT_TRUE(ssl_server_info2.cert.get()); |
+ EXPECT_TRUE(client_cert->Equals(ssl_server_info2.cert.get())); |
+ EXPECT_EQ(ssl_server_info2.handshake_type, SSLInfo::HANDSHAKE_RESUME); |
+} |
+ |
TEST_F(SSLServerSocketTest, HandshakeWithClientCertRequiredNotSupplied) { |
ConfigureClientCertsForServer(); |
- Initialize(); |
+ CreateContext(); |
+ CreateSockets(); |
+ // Use the default setting for the client socket, which is to not send |
+ // a client certificate. This will cause the client to receive an |
+ // ERR_SSL_CLIENT_AUTH_CERT_NEEDED error, and allow for inspecting the |
+ // requested cert_authorities from the CertificateRequest sent by the |
+ // server. |
+ |
+ TestCompletionCallback handshake_callback; |
+ int server_ret = server_socket_->Handshake(handshake_callback.callback()); |
+ |
+ TestCompletionCallback connect_callback; |
+ EXPECT_EQ(ERR_SSL_CLIENT_AUTH_CERT_NEEDED, |
+ connect_callback.GetResult( |
+ client_socket_->Connect(connect_callback.callback()))); |
+ |
+ scoped_refptr<SSLCertRequestInfo> request_info = new SSLCertRequestInfo(); |
+ client_socket_->GetSSLCertRequestInfo(request_info.get()); |
+ |
+ // Check that the authority name that arrived in the CertificateRequest |
+ // handshake message is as expected. |
+ scoped_refptr<X509Certificate> client_cert = |
+ ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName); |
+ EXPECT_TRUE(client_cert->IsIssuedByEncoded(request_info->cert_authorities)); |
+ |
+ client_socket_->Disconnect(); |
+ |
+ EXPECT_EQ(ERR_FAILED, handshake_callback.GetResult(server_ret)); |
+} |
+ |
+TEST_F(SSLServerSocketTest, HandshakeWithClientCertRequiredNotSuppliedCached) { |
+ ConfigureClientCertsForServer(); |
+ CreateContext(); |
+ CreateSockets(); |
// Use the default setting for the client socket, which is to not send |
// a client certificate. This will cause the client to receive an |
// ERR_SSL_CLIENT_AUTH_CERT_NEEDED error, and allow for inspecting the |
@@ -552,6 +760,28 @@ TEST_F(SSLServerSocketTest, HandshakeWithClientCertRequiredNotSupplied) { |
client_socket_->Disconnect(); |
EXPECT_EQ(ERR_FAILED, handshake_callback.GetResult(server_ret)); |
+ server_socket_->Disconnect(); |
+ |
+ // Below, check that the cache didn't store the result of a failed handshake. |
+ CreateSockets(); |
+ TestCompletionCallback handshake_callback2; |
+ int server_ret2 = server_socket_->Handshake(handshake_callback2.callback()); |
+ |
+ TestCompletionCallback connect_callback2; |
+ EXPECT_EQ(ERR_SSL_CLIENT_AUTH_CERT_NEEDED, |
+ connect_callback2.GetResult( |
+ client_socket_->Connect(connect_callback2.callback()))); |
+ |
+ scoped_refptr<SSLCertRequestInfo> request_info2 = new SSLCertRequestInfo(); |
+ client_socket_->GetSSLCertRequestInfo(request_info2.get()); |
+ |
+ // Check that the authority name that arrived in the CertificateRequest |
+ // handshake message is as expected. |
+ EXPECT_TRUE(client_cert->IsIssuedByEncoded(request_info2->cert_authorities)); |
+ |
+ client_socket_->Disconnect(); |
+ |
+ EXPECT_EQ(ERR_FAILED, handshake_callback2.GetResult(server_ret2)); |
} |
TEST_F(SSLServerSocketTest, HandshakeWithWrongClientCertSupplied) { |
@@ -560,7 +790,29 @@ TEST_F(SSLServerSocketTest, HandshakeWithWrongClientCertSupplied) { |
ConfigureClientCertsForClient(kWrongClientCertFileName, |
kWrongClientPrivateKeyFileName); |
ConfigureClientCertsForServer(); |
- Initialize(); |
+ CreateContext(); |
+ CreateSockets(); |
+ |
+ TestCompletionCallback handshake_callback; |
+ int server_ret = server_socket_->Handshake(handshake_callback.callback()); |
+ |
+ TestCompletionCallback connect_callback; |
+ int client_ret = client_socket_->Connect(connect_callback.callback()); |
+ |
+ EXPECT_EQ(ERR_BAD_SSL_CLIENT_AUTH_CERT, |
+ connect_callback.GetResult(client_ret)); |
+ EXPECT_EQ(ERR_BAD_SSL_CLIENT_AUTH_CERT, |
+ handshake_callback.GetResult(server_ret)); |
+} |
+ |
+TEST_F(SSLServerSocketTest, HandshakeWithWrongClientCertSuppliedCached) { |
+ scoped_refptr<X509Certificate> client_cert = |
+ ImportCertFromFile(GetTestCertsDirectory(), kClientCertFileName); |
+ ConfigureClientCertsForClient(kWrongClientCertFileName, |
+ kWrongClientPrivateKeyFileName); |
+ ConfigureClientCertsForServer(); |
+ CreateContext(); |
+ CreateSockets(); |
TestCompletionCallback handshake_callback; |
int server_ret = server_socket_->Handshake(handshake_callback.callback()); |
@@ -572,11 +824,28 @@ TEST_F(SSLServerSocketTest, HandshakeWithWrongClientCertSupplied) { |
connect_callback.GetResult(client_ret)); |
EXPECT_EQ(ERR_BAD_SSL_CLIENT_AUTH_CERT, |
handshake_callback.GetResult(server_ret)); |
+ |
+ client_socket_->Disconnect(); |
+ server_socket_->Disconnect(); |
+ |
+ // Below, check that the cache didn't store the result of a failed handshake. |
+ CreateSockets(); |
+ TestCompletionCallback handshake_callback2; |
+ int server_ret2 = server_socket_->Handshake(handshake_callback2.callback()); |
+ |
+ TestCompletionCallback connect_callback2; |
+ int client_ret2 = client_socket_->Connect(connect_callback2.callback()); |
+ |
+ EXPECT_EQ(ERR_BAD_SSL_CLIENT_AUTH_CERT, |
+ connect_callback2.GetResult(client_ret2)); |
+ EXPECT_EQ(ERR_BAD_SSL_CLIENT_AUTH_CERT, |
+ handshake_callback2.GetResult(server_ret2)); |
} |
#endif // defined(USE_OPENSSL) |
TEST_F(SSLServerSocketTest, DataTransfer) { |
- Initialize(); |
+ CreateContext(); |
+ CreateSockets(); |
// Establish connection. |
TestCompletionCallback connect_callback; |
@@ -601,8 +870,8 @@ TEST_F(SSLServerSocketTest, DataTransfer) { |
// Write then read. |
TestCompletionCallback write_callback; |
TestCompletionCallback read_callback; |
- server_ret = server_socket_->Write( |
- write_buf.get(), write_buf->size(), write_callback.callback()); |
+ server_ret = server_socket_->Write(write_buf.get(), write_buf->size(), |
+ write_callback.callback()); |
EXPECT_TRUE(server_ret > 0 || server_ret == ERR_IO_PENDING); |
client_ret = client_socket_->Read( |
read_buf.get(), read_buf->BytesRemaining(), read_callback.callback()); |
@@ -631,8 +900,8 @@ TEST_F(SSLServerSocketTest, DataTransfer) { |
server_ret = server_socket_->Read( |
read_buf.get(), read_buf->BytesRemaining(), read_callback.callback()); |
EXPECT_TRUE(server_ret > 0 || server_ret == ERR_IO_PENDING); |
- client_ret = client_socket_->Write( |
- write_buf.get(), write_buf->size(), write_callback.callback()); |
+ client_ret = client_socket_->Write(write_buf.get(), write_buf->size(), |
+ write_callback.callback()); |
EXPECT_TRUE(client_ret > 0 || client_ret == ERR_IO_PENDING); |
server_ret = read_callback.GetResult(server_ret); |
@@ -659,8 +928,8 @@ TEST_F(SSLServerSocketTest, DataTransfer) { |
// the client's Write() call should not cause an infinite loop. |
// NOTE: this is a test for SSLClientSocket rather than SSLServerSocket. |
TEST_F(SSLServerSocketTest, ClientWriteAfterServerClose) { |
- Initialize(); |
- |
+ CreateContext(); |
+ CreateSockets(); |
// Establish connection. |
TestCompletionCallback connect_callback; |
@@ -683,8 +952,8 @@ TEST_F(SSLServerSocketTest, ClientWriteAfterServerClose) { |
// socket won't return ERR_IO_PENDING. This ensures that the client |
// will call Read() on the transport socket again. |
TestCompletionCallback write_callback; |
- server_ret = server_socket_->Write( |
- write_buf.get(), write_buf->size(), write_callback.callback()); |
+ server_ret = server_socket_->Write(write_buf.get(), write_buf->size(), |
+ write_callback.callback()); |
EXPECT_TRUE(server_ret > 0 || server_ret == ERR_IO_PENDING); |
server_ret = write_callback.GetResult(server_ret); |
@@ -693,8 +962,8 @@ TEST_F(SSLServerSocketTest, ClientWriteAfterServerClose) { |
server_socket_->Disconnect(); |
// The client writes some data. This should not cause an infinite loop. |
- client_ret = client_socket_->Write( |
- write_buf.get(), write_buf->size(), write_callback.callback()); |
+ client_ret = client_socket_->Write(write_buf.get(), write_buf->size(), |
+ write_callback.callback()); |
EXPECT_TRUE(client_ret > 0 || client_ret == ERR_IO_PENDING); |
client_ret = write_callback.GetResult(client_ret); |
@@ -710,7 +979,8 @@ TEST_F(SSLServerSocketTest, ClientWriteAfterServerClose) { |
// after connecting them, and verifies that the results match. |
// This test will fail if False Start is enabled (see crbug.com/90208). |
TEST_F(SSLServerSocketTest, ExportKeyingMaterial) { |
- Initialize(); |
+ CreateContext(); |
+ CreateSockets(); |
TestCompletionCallback connect_callback; |
int client_ret = client_socket_->Connect(connect_callback.callback()); |
@@ -731,23 +1001,20 @@ TEST_F(SSLServerSocketTest, ExportKeyingMaterial) { |
const char kKeyingLabel[] = "EXPERIMENTAL-server-socket-test"; |
const char kKeyingContext[] = ""; |
unsigned char server_out[kKeyingMaterialSize]; |
- int rv = server_socket_->ExportKeyingMaterial(kKeyingLabel, |
- false, kKeyingContext, |
- server_out, sizeof(server_out)); |
+ int rv = server_socket_->ExportKeyingMaterial( |
+ kKeyingLabel, false, kKeyingContext, server_out, sizeof(server_out)); |
ASSERT_EQ(OK, rv); |
unsigned char client_out[kKeyingMaterialSize]; |
- rv = client_socket_->ExportKeyingMaterial(kKeyingLabel, |
- false, kKeyingContext, |
+ rv = client_socket_->ExportKeyingMaterial(kKeyingLabel, false, kKeyingContext, |
client_out, sizeof(client_out)); |
ASSERT_EQ(OK, rv); |
EXPECT_EQ(0, memcmp(server_out, client_out, sizeof(server_out))); |
const char kKeyingLabelBad[] = "EXPERIMENTAL-server-socket-test-bad"; |
unsigned char client_bad[kKeyingMaterialSize]; |
- rv = client_socket_->ExportKeyingMaterial(kKeyingLabelBad, |
- false, kKeyingContext, |
- client_bad, sizeof(client_bad)); |
+ rv = client_socket_->ExportKeyingMaterial( |
+ kKeyingLabelBad, false, kKeyingContext, client_bad, sizeof(client_bad)); |
ASSERT_EQ(rv, OK); |
EXPECT_NE(0, memcmp(server_out, client_bad, sizeof(server_out))); |
} |
@@ -773,7 +1040,8 @@ TEST_F(SSLServerSocketTest, RequireEcdheFlag) { |
// Require ECDHE on the server. |
server_ssl_config_.require_ecdhe = true; |
- Initialize(); |
+ CreateContext(); |
+ CreateSockets(); |
TestCompletionCallback connect_callback; |
int client_ret = client_socket_->Connect(connect_callback.callback()); |