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 <errno.h> | 7 #include <errno.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 2772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2783 ssl_options.key_exchanges = | 2783 ssl_options.key_exchanges = |
2784 SpawnedTestServer::SSLOptions::KEY_EXCHANGE_DHE_RSA; | 2784 SpawnedTestServer::SSLOptions::KEY_EXCHANGE_DHE_RSA; |
2785 ASSERT_TRUE(StartTestServer(ssl_options)); | 2785 ASSERT_TRUE(StartTestServer(ssl_options)); |
2786 | 2786 |
2787 SSLConfig ssl_config; | 2787 SSLConfig ssl_config; |
2788 int rv; | 2788 int rv; |
2789 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); | 2789 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); |
2790 EXPECT_THAT(rv, IsError(ERR_SSL_VERSION_OR_CIPHER_MISMATCH)); | 2790 EXPECT_THAT(rv, IsError(ERR_SSL_VERSION_OR_CIPHER_MISMATCH)); |
2791 } | 2791 } |
2792 | 2792 |
2793 // Tests that enabling deprecated ciphers shards the session cache. | |
2794 TEST_F(SSLClientSocketTest, DeprecatedShardSessionCache) { | |
2795 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | |
2796 | |
2797 // Prepare a normal and deprecated SSL config. | |
2798 SSLConfig ssl_config; | |
2799 SSLConfig deprecated_ssl_config; | |
2800 deprecated_ssl_config.deprecated_cipher_suites_enabled = true; | |
2801 | |
2802 // Connect with deprecated ciphers enabled to warm the session cache cache. | |
2803 int rv; | |
2804 ASSERT_TRUE(CreateAndConnectSSLClientSocket(deprecated_ssl_config, &rv)); | |
2805 EXPECT_THAT(rv, IsOk()); | |
2806 SSLInfo ssl_info; | |
2807 EXPECT_TRUE(sock_->GetSSLInfo(&ssl_info)); | |
2808 EXPECT_EQ(SSLInfo::HANDSHAKE_FULL, ssl_info.handshake_type); | |
2809 | |
2810 // Test that re-connecting with deprecated ciphers enabled still resumes. | |
2811 ASSERT_TRUE(CreateAndConnectSSLClientSocket(deprecated_ssl_config, &rv)); | |
2812 EXPECT_THAT(rv, IsOk()); | |
2813 EXPECT_TRUE(sock_->GetSSLInfo(&ssl_info)); | |
2814 EXPECT_EQ(SSLInfo::HANDSHAKE_RESUME, ssl_info.handshake_type); | |
2815 | |
2816 // However, a normal connection needs a full handshake. | |
2817 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); | |
2818 EXPECT_THAT(rv, IsOk()); | |
2819 EXPECT_TRUE(sock_->GetSSLInfo(&ssl_info)); | |
2820 EXPECT_EQ(SSLInfo::HANDSHAKE_FULL, ssl_info.handshake_type); | |
2821 | |
2822 // Clear the session cache for the inverse test. | |
2823 SSLClientSocket::ClearSessionCache(); | |
2824 | |
2825 // Now make a normal connection to prime the session cache. | |
2826 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); | |
2827 EXPECT_THAT(rv, IsOk()); | |
2828 EXPECT_TRUE(sock_->GetSSLInfo(&ssl_info)); | |
2829 EXPECT_EQ(SSLInfo::HANDSHAKE_FULL, ssl_info.handshake_type); | |
2830 | |
2831 // A normal connection should be able to resume. | |
2832 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); | |
2833 EXPECT_THAT(rv, IsOk()); | |
2834 EXPECT_TRUE(sock_->GetSSLInfo(&ssl_info)); | |
2835 EXPECT_EQ(SSLInfo::HANDSHAKE_RESUME, ssl_info.handshake_type); | |
2836 | |
2837 // However, enabling deprecated ciphers connects fresh. | |
2838 ASSERT_TRUE(CreateAndConnectSSLClientSocket(deprecated_ssl_config, &rv)); | |
2839 EXPECT_THAT(rv, IsOk()); | |
2840 EXPECT_TRUE(sock_->GetSSLInfo(&ssl_info)); | |
2841 EXPECT_EQ(SSLInfo::HANDSHAKE_FULL, ssl_info.handshake_type); | |
2842 } | |
2843 | |
2844 // Tests that the version_interference_probe option rejects successful | 2793 // Tests that the version_interference_probe option rejects successful |
2845 // connections and passes errors through. | 2794 // connections and passes errors through. |
2846 TEST_F(SSLClientSocketTest, VersionInterferenceProbe) { | 2795 TEST_F(SSLClientSocketTest, VersionInterferenceProbe) { |
2847 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 2796 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
2848 | 2797 |
2849 SSLConfig ssl_config; | 2798 SSLConfig ssl_config; |
2850 ssl_config.version_max = SSL_PROTOCOL_VERSION_TLS1_2; | 2799 ssl_config.version_max = SSL_PROTOCOL_VERSION_TLS1_2; |
2851 ssl_config.version_interference_probe = true; | 2800 ssl_config.version_interference_probe = true; |
2852 | 2801 |
2853 // Successful connections map to a dedicated error. | 2802 // Successful connections map to a dedicated error. |
(...skipping 1056 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3910 // The read buffer should be released. | 3859 // The read buffer should be released. |
3911 StreamSocket::SocketMemoryStats stats; | 3860 StreamSocket::SocketMemoryStats stats; |
3912 client->DumpMemoryStats(&stats); | 3861 client->DumpMemoryStats(&stats); |
3913 EXPECT_EQ(0u, stats.buffer_size); | 3862 EXPECT_EQ(0u, stats.buffer_size); |
3914 EXPECT_EQ(1u, stats.cert_count); | 3863 EXPECT_EQ(1u, stats.cert_count); |
3915 EXPECT_LT(0u, stats.cert_size); | 3864 EXPECT_LT(0u, stats.cert_size); |
3916 EXPECT_EQ(stats.cert_size, stats.total_size); | 3865 EXPECT_EQ(stats.cert_size, stats.total_size); |
3917 } | 3866 } |
3918 | 3867 |
3919 } // namespace net | 3868 } // namespace net |
OLD | NEW |