Commit 9f3533f1 authored by David Benjamin's avatar David Benjamin Committed by Commit Bot

Switch the TLS13DowngradeEnforced test to a TEST_P

This test does not produce much output, but the debugging information
added to diagnose https://crbug.com/869227 caused this test to send too
much output. Switch it to a TEST_P to divide it back up.

Bug: 1017036
Change-Id: I54e5582859ae271401c69e3241f47bd5f12ff42e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879971
Auto-Submit: David Benjamin <davidben@chromium.org>
Reviewed-by: default avatarSteven Valdez <svaldez@chromium.org>
Commit-Queue: David Benjamin <davidben@chromium.org>
Cr-Commit-Position: refs/heads/master@{#709183}
parent e812f172
...@@ -5363,60 +5363,68 @@ TEST_F(SSLClientSocketTest, Tag) { ...@@ -5363,60 +5363,68 @@ TEST_F(SSLClientSocketTest, Tag) {
#endif // OS_ANDROID #endif // OS_ANDROID
} }
// Test downgrade enforcement behaves as expected. class TLS13DowngradeTest
// Failed on macOS. See https://crbug.com/1017036 : public SSLClientSocketTest,
#if defined(OS_MACOSX) public ::testing::WithParamInterface<
#define MAYBE_TLS13DowngradeEnforced DISABLED_TLS13DowngradeEnforced std::tuple<SpawnedTestServer::SSLOptions::TLSMaxVersion,
#else /* simulate_tls13_downgrade */ bool,
#define MAYBE_TLS13DowngradeEnforced TLS13DowngradeEnforced /* enable_for_local_anchors */ bool,
#endif /* known_root */ bool>> {
TEST_F(SSLClientSocketTest, MAYBE_TLS13DowngradeEnforced) { public:
for (auto tls_max_version : TLS13DowngradeTest() {}
{SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_0, ~TLS13DowngradeTest() {}
SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_1,
SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_2}) { SpawnedTestServer::SSLOptions::TLSMaxVersion tls_max_version() const {
for (bool downgrade : {false, true}) { return std::get<0>(GetParam());
SCOPED_TRACE(downgrade); }
SCOPED_TRACE(tls_max_version);
SpawnedTestServer::SSLOptions ssl_options; bool simulate_tls13_downgrade() const { return std::get<1>(GetParam()); }
ssl_options.simulate_tls13_downgrade = downgrade; bool enable_for_local_anchors() const { return std::get<2>(GetParam()); }
ssl_options.tls_max_version = tls_max_version; bool known_root() const { return std::get<3>(GetParam()); }
ASSERT_TRUE(StartTestServer(ssl_options)); };
scoped_refptr<X509Certificate> server_cert =
spawned_test_server()->GetCertificate(); INSTANTIATE_TEST_SUITE_P(
/* no prefix */,
for (bool enable_for_local_anchors : {false, true}) { TLS13DowngradeTest,
SCOPED_TRACE(enable_for_local_anchors); ::testing::Combine(
SSLContextConfig config; ::testing::Values(
config.version_max = SSL_PROTOCOL_VERSION_TLS1_3; SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_0,
config.tls13_hardening_for_local_anchors_enabled = SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_1,
enable_for_local_anchors; SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_2),
ssl_config_service_->UpdateSSLConfigAndNotify(config); ::testing::Values(false, true),
::testing::Values(false, true),
for (bool known_root : {false, true}) { ::testing::Values(false, true)));
SCOPED_TRACE(known_root);
CertVerifyResult verify_result; TEST_P(TLS13DowngradeTest, DowngradeEnforced) {
verify_result.is_issued_by_known_root = known_root; SpawnedTestServer::SSLOptions ssl_options;
verify_result.verified_cert = server_cert; ssl_options.simulate_tls13_downgrade = simulate_tls13_downgrade();
cert_verifier_->ClearRules(); ssl_options.tls_max_version = tls_max_version();
cert_verifier_->AddResultForCert(server_cert.get(), verify_result, ASSERT_TRUE(StartTestServer(ssl_options));
OK); scoped_refptr<X509Certificate> server_cert =
spawned_test_server()->GetCertificate();
bool should_enforce = known_root || enable_for_local_anchors;
SSLContextConfig config;
ssl_client_session_cache_->Flush(); config.version_max = SSL_PROTOCOL_VERSION_TLS1_3;
int rv; config.tls13_hardening_for_local_anchors_enabled = enable_for_local_anchors();
ASSERT_TRUE(CreateAndConnectSSLClientSocket(SSLConfig(), &rv)); ssl_config_service_->UpdateSSLConfigAndNotify(config);
if (should_enforce && downgrade) {
EXPECT_THAT(rv, IsError(ERR_TLS13_DOWNGRADE_DETECTED)); CertVerifyResult verify_result;
EXPECT_FALSE(sock_->IsConnected()); verify_result.is_issued_by_known_root = known_root();
} else { verify_result.verified_cert = server_cert;
EXPECT_THAT(rv, IsOk()); cert_verifier_->ClearRules();
EXPECT_TRUE(sock_->IsConnected()); cert_verifier_->AddResultForCert(server_cert.get(), verify_result, OK);
}
} bool should_enforce = known_root() || enable_for_local_anchors();
}
} ssl_client_session_cache_->Flush();
int rv;
ASSERT_TRUE(CreateAndConnectSSLClientSocket(SSLConfig(), &rv));
if (should_enforce && simulate_tls13_downgrade()) {
EXPECT_THAT(rv, IsError(ERR_TLS13_DOWNGRADE_DETECTED));
EXPECT_FALSE(sock_->IsConnected());
} else {
EXPECT_THAT(rv, IsOk());
EXPECT_TRUE(sock_->IsConnected());
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment