Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(177)

Unified Diff: net/http/transport_security_state_unittest.cc

Issue 433123003: Centralize the logic for checking public key pins (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: make IsBuildTimely and ReportUMAOnPinFailure static, as per wtc Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/http/transport_security_state_unittest.cc
diff --git a/net/http/transport_security_state_unittest.cc b/net/http/transport_security_state_unittest.cc
index 476ae94bd681cfcae362f53dcac998dea95dd9b5..930ae42fdc8af7451a19f64ed880a3f06d1872a5 100644
--- a/net/http/transport_security_state_unittest.cc
+++ b/net/http/transport_security_state_unittest.cc
@@ -37,6 +37,7 @@
namespace net {
class TransportSecurityStateTest : public testing::Test {
+ public:
virtual void SetUp() {
#if defined(USE_OPENSSL)
crypto::EnsureOpenSSLInit();
@@ -45,6 +46,14 @@ class TransportSecurityStateTest : public testing::Test {
#endif
}
+ static void DisableStaticPinning(TransportSecurityState* state) {
+ state->enable_static_pinning_ = false;
+ }
+
+ static void EnableStaticPinning(TransportSecurityState* state) {
wtc 2014/08/07 23:39:13 These methods (and the EnableStaticPinning test) s
Ryan Hamilton 2014/08/08 00:54:01 Done.
+ state->enable_static_pinning_ = true;
+ }
+
protected:
bool GetStaticDomainState(TransportSecurityState* state,
const std::string& host,
@@ -162,6 +171,19 @@ TEST_F(TransportSecurityStateTest, DeleteDynamicDataForHost) {
EXPECT_FALSE(state.GetDynamicDomainState("yahoo.com", &domain_state));
}
+TEST_F(TransportSecurityStateTest, EnableStaticPinning) {
+ TransportSecurityState state;
+ TransportSecurityState::DomainState domain_state;
+
+ EnableStaticPinning(&state);
+ EXPECT_TRUE(
+ state.GetStaticDomainState("chrome.google.com", true, &domain_state));
+
+ DisableStaticPinning(&state);
+ EXPECT_FALSE(
+ state.GetStaticDomainState("chrome.google.com", true, &domain_state));
+}
+
TEST_F(TransportSecurityStateTest, IsPreloaded) {
const std::string paypal = "paypal.com";
const std::string www_paypal = "www.paypal.com";
@@ -172,6 +194,7 @@ TEST_F(TransportSecurityStateTest, IsPreloaded) {
const std::string aypal = "aypal.com";
TransportSecurityState state;
+ EnableStaticPinning(&state);
Ryan Sleevi 2014/08/07 23:48:40 Let's make this test more explicit about the STS b
Ryan Hamilton 2014/08/08 00:54:00 Done.
TransportSecurityState::DomainState domain_state;
EXPECT_TRUE(GetStaticDomainState(&state, paypal, true, &domain_state));
@@ -186,6 +209,7 @@ TEST_F(TransportSecurityStateTest, IsPreloaded) {
TEST_F(TransportSecurityStateTest, PreloadedDomainSet) {
TransportSecurityState state;
+ EnableStaticPinning(&state);
Ryan Sleevi 2014/08/07 23:48:39 Remove this
Ryan Hamilton 2014/08/08 00:54:00 Done.
TransportSecurityState::DomainState domain_state;
// The domain wasn't being set, leading to a blank string in the
@@ -200,6 +224,7 @@ TEST_F(TransportSecurityStateTest, PreloadedDomainSet) {
static bool StaticShouldRedirect(const char* hostname) {
TransportSecurityState state;
+ TransportSecurityStateTest::EnableStaticPinning(&state);
Ryan Sleevi 2014/08/07 23:48:39 Definitely removed - would have caught this bug :)
Ryan Hamilton 2014/08/08 00:54:01 Done.
TransportSecurityState::DomainState domain_state;
return state.GetStaticDomainState(
hostname, true /* SNI ok */, &domain_state) &&
@@ -208,12 +233,14 @@ static bool StaticShouldRedirect(const char* hostname) {
static bool HasStaticState(const char* hostname) {
TransportSecurityState state;
+ TransportSecurityStateTest::EnableStaticPinning(&state);
Ryan Sleevi 2014/08/07 23:48:39 This should be removed, I think. At least from the
Ryan Hamilton 2014/08/08 00:54:00 Done.
TransportSecurityState::DomainState domain_state;
return state.GetStaticDomainState(hostname, true /* SNI ok */, &domain_state);
}
static bool HasStaticPublicKeyPins(const char* hostname, bool sni_enabled) {
TransportSecurityState state;
+ TransportSecurityStateTest::EnableStaticPinning(&state);
TransportSecurityState::DomainState domain_state;
if (!state.GetStaticDomainState(hostname, sni_enabled, &domain_state))
return false;
@@ -227,6 +254,7 @@ static bool HasStaticPublicKeyPins(const char* hostname) {
static bool OnlyPinningInStaticState(const char* hostname) {
TransportSecurityState state;
+ TransportSecurityStateTest::EnableStaticPinning(&state);
TransportSecurityState::DomainState domain_state;
if (!state.GetStaticDomainState(hostname, true /* SNI ok */, &domain_state))
return false;
@@ -238,6 +266,7 @@ static bool OnlyPinningInStaticState(const char* hostname) {
TEST_F(TransportSecurityStateTest, Preloaded) {
TransportSecurityState state;
+ EnableStaticPinning(&state);
Ryan Sleevi 2014/08/07 23:48:40 So, we should probably split this in two, with onl
Ryan Hamilton 2014/08/08 00:54:00 Done.
TransportSecurityState::DomainState domain_state;
// We do more extensive checks for the first domain.
@@ -495,6 +524,7 @@ TEST_F(TransportSecurityStateTest, LongNames) {
TEST_F(TransportSecurityStateTest, BuiltinCertPins) {
TransportSecurityState state;
+ EnableStaticPinning(&state);
TransportSecurityState::DomainState domain_state;
EXPECT_TRUE(
@@ -585,6 +615,8 @@ TEST_F(TransportSecurityStateTest, PinValidationWithoutRejectedCerts) {
}
TransportSecurityState state;
+ EnableStaticPinning(&state);
+
TransportSecurityState::DomainState domain_state;
EXPECT_TRUE(
state.GetStaticDomainState("blog.torproject.org", true, &domain_state));
@@ -597,6 +629,7 @@ TEST_F(TransportSecurityStateTest, PinValidationWithoutRejectedCerts) {
TEST_F(TransportSecurityStateTest, OptionalHSTSCertPins) {
TransportSecurityState state;
+ EnableStaticPinning(&state);
TransportSecurityState::DomainState domain_state;
EXPECT_FALSE(StaticShouldRedirect("www.google-analytics.com"));
@@ -629,6 +662,7 @@ TEST_F(TransportSecurityStateTest, OverrideBuiltins) {
EXPECT_FALSE(StaticShouldRedirect("www.google.com"));
TransportSecurityState state;
+ EnableStaticPinning(&state);
Ryan Sleevi 2014/08/07 23:48:39 This should be removed. This is an HSTS test.
Ryan Hamilton 2014/08/08 00:54:00 Done.
TransportSecurityState::DomainState domain_state;
const base::Time current_time(base::Time::Now());
const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000);

Powered by Google App Engine
This is Rietveld 408576698