| Index: net/url_request/url_request_unittest.cc
|
| diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
|
| index 7c08b7f8988a3ec8662ba14d03048eacb09143a7..24fe7872b6d11fc5da2e358121ef13bf9f80c6b0 100644
|
| --- a/net/url_request/url_request_unittest.cc
|
| +++ b/net/url_request/url_request_unittest.cc
|
| @@ -8710,21 +8710,33 @@ TEST_F(HTTPSFallbackTest, TLSv1NoFallback) {
|
| SpawnedTestServer::SSLOptions::TLS_INTOLERANT_TLS1_1;
|
|
|
| ASSERT_NO_FATAL_FAILURE(DoFallbackTest(ssl_options));
|
| + ExpectFailure(ERR_SSL_VERSION_OR_CIPHER_MISMATCH);
|
| +}
|
| +
|
| +// Tests the TLS 1.1 fallback doesn't happen but 1.2-intolerance is detected.
|
| +TEST_F(HTTPSFallbackTest, TLSv1_1NoFallback) {
|
| + SpawnedTestServer::SSLOptions ssl_options(
|
| + SpawnedTestServer::SSLOptions::CERT_OK);
|
| + ssl_options.tls_intolerant =
|
| + SpawnedTestServer::SSLOptions::TLS_INTOLERANT_TLS1_2;
|
| +
|
| + ASSERT_NO_FATAL_FAILURE(DoFallbackTest(ssl_options));
|
| ExpectFailure(ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION);
|
| }
|
|
|
| -// Tests the TLS 1.1 fallback.
|
| +// Tests the TLS 1.1 fallback when explicitly enabled.
|
| TEST_F(HTTPSFallbackTest, TLSv1_1Fallback) {
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_OK);
|
| ssl_options.tls_intolerant =
|
| SpawnedTestServer::SSLOptions::TLS_INTOLERANT_TLS1_2;
|
|
|
| + set_fallback_min_version(SSL_PROTOCOL_VERSION_TLS1_1);
|
| ASSERT_NO_FATAL_FAILURE(DoFallbackTest(ssl_options));
|
| ExpectConnection(SSL_CONNECTION_VERSION_TLS1_1);
|
| }
|
|
|
| -// Tests that the TLS 1.1 fallback triggers on closed connections.
|
| +// Tests that the TLS 1.1 fallback, if enabled, triggers on closed connections.
|
| TEST_F(HTTPSFallbackTest, TLSv1_1FallbackClosed) {
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_OK);
|
| @@ -8733,6 +8745,7 @@ TEST_F(HTTPSFallbackTest, TLSv1_1FallbackClosed) {
|
| ssl_options.tls_intolerance_type =
|
| SpawnedTestServer::SSLOptions::TLS_INTOLERANCE_CLOSE;
|
|
|
| + set_fallback_min_version(SSL_PROTOCOL_VERSION_TLS1_1);
|
| ASSERT_NO_FATAL_FAILURE(DoFallbackTest(ssl_options));
|
| ExpectConnection(SSL_CONNECTION_VERSION_TLS1_1);
|
| }
|
| @@ -8740,7 +8753,7 @@ TEST_F(HTTPSFallbackTest, TLSv1_1FallbackClosed) {
|
| // This test is disabled on Android because the remote test server doesn't cause
|
| // a TCP reset.
|
| #if !defined(OS_ANDROID)
|
| -// Tests fallback to TLS 1.1 on connection reset.
|
| +// Tests fallback to TLS 1.1, if enabled, on connection reset.
|
| TEST_F(HTTPSFallbackTest, TLSv1_1FallbackReset) {
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_OK);
|
| @@ -8749,13 +8762,15 @@ TEST_F(HTTPSFallbackTest, TLSv1_1FallbackReset) {
|
| ssl_options.tls_intolerance_type =
|
| SpawnedTestServer::SSLOptions::TLS_INTOLERANCE_RESET;
|
|
|
| + set_fallback_min_version(SSL_PROTOCOL_VERSION_TLS1_1);
|
| ASSERT_NO_FATAL_FAILURE(DoFallbackTest(ssl_options));
|
| ExpectConnection(SSL_CONNECTION_VERSION_TLS1_1);
|
| }
|
| #endif // !OS_ANDROID
|
|
|
| -// Tests that we don't fallback on handshake failure with servers that implement
|
| -// TLS_FALLBACK_SCSV. Also ensure that the original error code is reported.
|
| +// Tests that we don't fallback, even if enabled, on handshake failure with
|
| +// servers that implement TLS_FALLBACK_SCSV. Also ensure that the original error
|
| +// code is reported.
|
| TEST_F(HTTPSFallbackTest, FallbackSCSV) {
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_OK);
|
| @@ -8767,6 +8782,7 @@ TEST_F(HTTPSFallbackTest, FallbackSCSV) {
|
| // connections are rejected.
|
| ssl_options.fallback_scsv_enabled = true;
|
|
|
| + set_fallback_min_version(SSL_PROTOCOL_VERSION_TLS1_1);
|
| ASSERT_NO_FATAL_FAILURE(DoFallbackTest(ssl_options));
|
|
|
| // ERR_SSL_VERSION_OR_CIPHER_MISMATCH is how the server simulates version
|
| @@ -8776,8 +8792,9 @@ TEST_F(HTTPSFallbackTest, FallbackSCSV) {
|
| ExpectFailure(ERR_SSL_VERSION_OR_CIPHER_MISMATCH);
|
| }
|
|
|
| -// Tests that we don't fallback on connection closed with servers that implement
|
| -// TLS_FALLBACK_SCSV. Also ensure that the original error code is reported.
|
| +// Tests that we don't fallback, even if enabled, on connection closed with
|
| +// servers that implement TLS_FALLBACK_SCSV. Also ensure that the original error
|
| +// code is reported.
|
| TEST_F(HTTPSFallbackTest, FallbackSCSVClosed) {
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_OK);
|
| @@ -8791,6 +8808,7 @@ TEST_F(HTTPSFallbackTest, FallbackSCSVClosed) {
|
| // connections are rejected.
|
| ssl_options.fallback_scsv_enabled = true;
|
|
|
| + set_fallback_min_version(SSL_PROTOCOL_VERSION_TLS1_1);
|
| ASSERT_NO_FATAL_FAILURE(DoFallbackTest(ssl_options));
|
|
|
| // The original error should be replayed on rejected fallback.
|
| @@ -8802,7 +8820,7 @@ TEST_F(HTTPSRequestTest, FallbackProbeNoCache) {
|
| SpawnedTestServer::SSLOptions ssl_options(
|
| SpawnedTestServer::SSLOptions::CERT_OK);
|
| ssl_options.tls_intolerant =
|
| - SpawnedTestServer::SSLOptions::TLS_INTOLERANT_TLS1_1;
|
| + SpawnedTestServer::SSLOptions::TLS_INTOLERANT_TLS1_2;
|
| ssl_options.tls_intolerance_type =
|
| SpawnedTestServer::SSLOptions::TLS_INTOLERANCE_CLOSE;
|
| ssl_options.record_resume = true;
|
| @@ -8815,14 +8833,13 @@ TEST_F(HTTPSRequestTest, FallbackProbeNoCache) {
|
|
|
| SSLClientSocket::ClearSessionCache();
|
|
|
| - // Make a connection that does a probe fallback to TLSv1 but fails because
|
| - // TLSv1 fallback is disabled. We don't wish a session for this connection to
|
| - // be inserted locally.
|
| + // Make a connection that does a probe fallback to TLSv1.1 but fails because
|
| + // fallback is disabled. We don't wish a session for this connection to be
|
| + // inserted locally.
|
| {
|
| TestDelegate delegate;
|
| FallbackTestURLRequestContext context(true);
|
|
|
| - context.set_fallback_min_version(SSL_PROTOCOL_VERSION_TLS1_2);
|
| context.Init();
|
| scoped_ptr<URLRequest> request(context.CreateRequest(
|
| test_server.GetURL("/"), DEFAULT_PRIORITY, &delegate));
|
| @@ -8837,11 +8854,11 @@ TEST_F(HTTPSRequestTest, FallbackProbeNoCache) {
|
| request->status().error());
|
| }
|
|
|
| - // Now allow TLSv1 fallback connections and request the session cache log.
|
| + // Now allow TLSv1.1 fallback connections and request the session cache log.
|
| {
|
| TestDelegate delegate;
|
| FallbackTestURLRequestContext context(true);
|
| - context.set_fallback_min_version(SSL_PROTOCOL_VERSION_TLS1);
|
| + context.set_fallback_min_version(SSL_PROTOCOL_VERSION_TLS1_1);
|
|
|
| context.Init();
|
| scoped_ptr<URLRequest> request(context.CreateRequest(
|
| @@ -8853,7 +8870,7 @@ TEST_F(HTTPSRequestTest, FallbackProbeNoCache) {
|
| EXPECT_EQ(1, delegate.response_started_count());
|
| EXPECT_NE(0, delegate.bytes_received());
|
| EXPECT_EQ(
|
| - SSL_CONNECTION_VERSION_TLS1,
|
| + SSL_CONNECTION_VERSION_TLS1_1,
|
| SSLConnectionStatusToVersion(request->ssl_info().connection_status));
|
| EXPECT_TRUE(request->ssl_info().connection_status &
|
| SSL_CONNECTION_VERSION_FALLBACK);
|
|
|