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 <utility> | 10 #include <utility> |
(...skipping 2607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2618 // offer the > TLS 1.0 session, so this must have been the session from the | 2618 // offer the > TLS 1.0 session, so this must have been the session from the |
2619 // first fallback connection. | 2619 // first fallback connection. |
2620 ASSERT_TRUE(CreateAndConnectSSLClientSocket(fallback_ssl_config, &rv)); | 2620 ASSERT_TRUE(CreateAndConnectSSLClientSocket(fallback_ssl_config, &rv)); |
2621 EXPECT_EQ(OK, rv); | 2621 EXPECT_EQ(OK, rv); |
2622 EXPECT_TRUE(sock_->GetSSLInfo(&ssl_info)); | 2622 EXPECT_TRUE(sock_->GetSSLInfo(&ssl_info)); |
2623 EXPECT_EQ(SSLInfo::HANDSHAKE_RESUME, ssl_info.handshake_type); | 2623 EXPECT_EQ(SSLInfo::HANDSHAKE_RESUME, ssl_info.handshake_type); |
2624 EXPECT_EQ(SSL_CONNECTION_VERSION_TLS1, | 2624 EXPECT_EQ(SSL_CONNECTION_VERSION_TLS1, |
2625 SSLConnectionStatusToVersion(ssl_info.connection_status)); | 2625 SSLConnectionStatusToVersion(ssl_info.connection_status)); |
2626 } | 2626 } |
2627 | 2627 |
2628 // Test that DHE is only enabled if deprecated_cipher_suites_enabled is set. | 2628 // Test that DHE is removed but gives a dedicated error. Also test that the |
2629 TEST_F(SSLClientSocketTest, DHEDeprecated) { | 2629 // dhe_enabled option can restore it. |
| 2630 TEST_F(SSLClientSocketTest, DHE) { |
2630 SpawnedTestServer::SSLOptions ssl_options; | 2631 SpawnedTestServer::SSLOptions ssl_options; |
2631 ssl_options.key_exchanges = | 2632 ssl_options.key_exchanges = |
2632 SpawnedTestServer::SSLOptions::KEY_EXCHANGE_DHE_RSA; | 2633 SpawnedTestServer::SSLOptions::KEY_EXCHANGE_DHE_RSA; |
2633 ASSERT_TRUE(StartTestServer(ssl_options)); | 2634 ASSERT_TRUE(StartTestServer(ssl_options)); |
2634 | 2635 |
2635 // Normal handshakes with DHE do not work. | 2636 // Normal handshakes with DHE do not work, with or without DHE enabled. |
2636 SSLConfig ssl_config; | 2637 SSLConfig ssl_config; |
2637 int rv; | 2638 int rv; |
2638 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); | 2639 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); |
2639 EXPECT_EQ(ERR_SSL_VERSION_OR_CIPHER_MISMATCH, rv); | 2640 EXPECT_EQ(ERR_SSL_VERSION_OR_CIPHER_MISMATCH, rv); |
2640 | 2641 |
2641 // Enabling deprecated ciphers works fine. | 2642 ssl_config.dhe_enabled = true; |
| 2643 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); |
| 2644 EXPECT_EQ(ERR_SSL_VERSION_OR_CIPHER_MISMATCH, rv); |
| 2645 |
| 2646 // Enabling deprecated ciphers gives DHE a dedicated error code. |
| 2647 ssl_config.dhe_enabled = false; |
2642 ssl_config.deprecated_cipher_suites_enabled = true; | 2648 ssl_config.deprecated_cipher_suites_enabled = true; |
2643 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); | 2649 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); |
| 2650 EXPECT_EQ(ERR_SSL_OBSOLETE_CIPHER, rv); |
| 2651 |
| 2652 // Enabling both deprecated ciphers and DHE restores it. |
| 2653 ssl_config.dhe_enabled = true; |
| 2654 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); |
2644 EXPECT_EQ(OK, rv); | 2655 EXPECT_EQ(OK, rv); |
2645 } | 2656 } |
2646 | 2657 |
2647 // Tests that enabling deprecated ciphers shards the session cache. | 2658 // Tests that enabling deprecated ciphers shards the session cache. |
2648 TEST_F(SSLClientSocketTest, DeprecatedShardSessionCache) { | 2659 TEST_F(SSLClientSocketTest, DeprecatedShardSessionCache) { |
2649 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); | 2660 ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions())); |
2650 | 2661 |
2651 // Prepare a normal and deprecated SSL config. | 2662 // Prepare a normal and deprecated SSL config. |
2652 SSLConfig ssl_config; | 2663 SSLConfig ssl_config; |
2653 SSLConfig deprecated_ssl_config; | 2664 SSLConfig deprecated_ssl_config; |
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3330 SSLInfo ssl_info; | 3341 SSLInfo ssl_info; |
3331 ASSERT_TRUE(sock_->GetSSLInfo(&ssl_info)); | 3342 ASSERT_TRUE(sock_->GetSSLInfo(&ssl_info)); |
3332 | 3343 |
3333 EXPECT_EQ(ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN, rv); | 3344 EXPECT_EQ(ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN, rv); |
3334 EXPECT_TRUE(sock_->IsConnected()); | 3345 EXPECT_TRUE(sock_->IsConnected()); |
3335 | 3346 |
3336 EXPECT_FALSE(ssl_info.pkp_bypassed); | 3347 EXPECT_FALSE(ssl_info.pkp_bypassed); |
3337 } | 3348 } |
3338 | 3349 |
3339 } // namespace net | 3350 } // namespace net |
OLD | NEW |