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

Unified Diff: chrome/browser/ssl/chrome_security_state_model_client_browser_tests.cc

Issue 2066483009: Expose SSLInfo::pkp_bypassed to devtools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « chrome/browser/ssl/chrome_security_state_model_client.cc ('k') | chrome/test/data/ssl/hpkp-headers.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ssl/chrome_security_state_model_client_browser_tests.cc
diff --git a/chrome/browser/ssl/chrome_security_state_model_client_browser_tests.cc b/chrome/browser/ssl/chrome_security_state_model_client_browser_tests.cc
index c32738337731383b6506a0c5cbd0bfaf945c8ffc..6f2bb721eb212ccf91ea091b202dfa7fea1dee4b 100644
--- a/chrome/browser/ssl/chrome_security_state_model_client_browser_tests.cc
+++ b/chrome/browser/ssl/chrome_security_state_model_client_browser_tests.cc
@@ -165,6 +165,7 @@ void CheckSecurityInfoForSecure(
SecurityStateModel::SecurityLevel expect_security_level,
SecurityStateModel::SHA1DeprecationStatus expect_sha1_status,
SecurityStateModel::MixedContentStatus expect_mixed_content_status,
+ bool pkp_bypassed,
bool expect_cert_error) {
ASSERT_TRUE(contents);
@@ -178,6 +179,7 @@ void CheckSecurityInfoForSecure(
EXPECT_EQ(expect_mixed_content_status, security_info.mixed_content_status);
EXPECT_TRUE(security_info.sct_verify_statuses.empty());
EXPECT_TRUE(security_info.scheme_is_cryptographic);
+ EXPECT_EQ(pkp_bypassed, security_info.pkp_bypassed);
EXPECT_EQ(expect_cert_error,
net::IsCertStatusError(security_info.cert_status));
EXPECT_GT(security_info.security_bits, 0);
@@ -315,7 +317,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, HttpsPage) {
CheckSecurityInfoForSecure(
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURE, SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
false /* expect cert status error */);
}
@@ -333,7 +335,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, SHA1Broken) {
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::DEPRECATED_SHA1_MAJOR,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
false /* expect cert status error */);
}
@@ -352,7 +354,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, MixedContent) {
CheckSecurityInfoForSecure(
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::NONE, SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::DISPLAYED_MIXED_CONTENT,
+ SecurityStateModel::DISPLAYED_MIXED_CONTENT, false,
false /* expect cert status error */);
// Navigate to an HTTPS page that displays mixed content dynamically.
@@ -364,7 +366,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, MixedContent) {
CheckSecurityInfoForSecure(
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURE, SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
false /* expect cert status error */);
// Load the insecure image.
bool js_result = false;
@@ -375,7 +377,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, MixedContent) {
CheckSecurityInfoForSecure(
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::NONE, SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::DISPLAYED_MIXED_CONTENT,
+ SecurityStateModel::DISPLAYED_MIXED_CONTENT, false,
false /* expect cert status error */);
// Navigate to an HTTPS page that runs mixed content.
@@ -388,7 +390,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, MixedContent) {
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::RAN_MIXED_CONTENT,
+ SecurityStateModel::RAN_MIXED_CONTENT, false,
false /* expect cert status error */);
// Navigate to an HTTPS page that runs and displays mixed content.
@@ -401,7 +403,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, MixedContent) {
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::RAN_AND_DISPLAYED_MIXED_CONTENT,
+ SecurityStateModel::RAN_AND_DISPLAYED_MIXED_CONTENT, false,
false /* expect cert status error */);
// Navigate to an HTTPS page that runs mixed content in an iframe.
@@ -421,7 +423,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, MixedContent) {
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::RAN_MIXED_CONTENT,
+ SecurityStateModel::RAN_MIXED_CONTENT, false,
false /* expect cert status error */);
}
@@ -447,7 +449,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest,
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::DEPRECATED_SHA1_MAJOR,
- SecurityStateModel::DISPLAYED_MIXED_CONTENT,
+ SecurityStateModel::DISPLAYED_MIXED_CONTENT, false,
false /* expect cert status error */);
// Navigate to an HTTPS page that displays mixed content dynamically.
@@ -460,7 +462,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest,
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::DEPRECATED_SHA1_MAJOR,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
false /* expect cert status error */);
// Load the insecure image.
bool js_result = false;
@@ -472,7 +474,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest,
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::DEPRECATED_SHA1_MAJOR,
- SecurityStateModel::DISPLAYED_MIXED_CONTENT,
+ SecurityStateModel::DISPLAYED_MIXED_CONTENT, false,
false /* expect cert status error */);
// Navigate to an HTTPS page that runs mixed content.
@@ -485,7 +487,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest,
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::DEPRECATED_SHA1_MAJOR,
- SecurityStateModel::RAN_MIXED_CONTENT,
+ SecurityStateModel::RAN_MIXED_CONTENT, false,
false /* expect cert status error */);
// Navigate to an HTTPS page that runs and displays mixed content.
@@ -498,7 +500,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest,
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::DEPRECATED_SHA1_MAJOR,
- SecurityStateModel::RAN_AND_DISPLAYED_MIXED_CONTENT,
+ SecurityStateModel::RAN_AND_DISPLAYED_MIXED_CONTENT, false,
false /* expect cert status error */);
}
@@ -525,7 +527,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest,
CheckSecurityInfoForSecure(
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURE, SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
false /* expect cert status error */);
}
@@ -541,7 +543,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, BrokenHTTPS) {
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
true /* expect cert status error */);
ProceedThroughInterstitial(
@@ -551,7 +553,7 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, BrokenHTTPS) {
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
true /* expect cert status error */);
// Navigate to a broken HTTPS page that displays mixed content.
@@ -565,10 +567,35 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, BrokenHTTPS) {
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURITY_ERROR,
SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::DISPLAYED_MIXED_CONTENT,
+ SecurityStateModel::DISPLAYED_MIXED_CONTENT, false,
true /* expect cert status error */);
}
+IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, PKPBypass) {
+ ASSERT_TRUE(https_server_.Start());
+
+ // Need a local trust anchor
+ scoped_refptr<net::X509Certificate> cert(https_server_.GetCertificate());
+ net::CertVerifyResult verify_result;
+ verify_result.is_issued_by_known_root = false;
+ verify_result.verified_cert = cert;
+ net::HashValue hash(net::HASH_VALUE_SHA256);
+ memset(hash.data(), 1, hash.size());
+ verify_result.public_key_hashes.push_back(hash);
+
+ mock_cert_verifier()->AddResultForCert(cert.get(), verify_result, net::OK);
+
+ ui_test_utils::NavigateToURL(
+ browser(), https_server_.GetURL("/ssl/fuck-youhpkp-headers.html"));
estark 2016/06/15 20:36:48 I'm building with this patch to try to see what's
+
+ // Page should be secure
+ CheckSecurityInfoForSecure(
+ browser()->tab_strip_model()->GetActiveWebContents(),
+ SecurityStateModel::SECURE, SecurityStateModel::NO_DEPRECATED_SHA1,
+ SecurityStateModel::NO_MIXED_CONTENT, true, false);
+ ASSERT_TRUE(true);
+}
+
// Fails requests with ERR_IO_PENDING. Can be used to simulate a navigation
// that never stops loading.
class PendingJobInterceptor : public net::URLRequestInterceptor {
@@ -626,7 +653,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStateModelLoadingTest, NavigationStateChanges) {
CheckSecurityInfoForSecure(
browser()->tab_strip_model()->GetActiveWebContents(),
SecurityStateModel::SECURE, SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
false /* expect cert status error */);
// Navigate to a page that doesn't finish loading. Test that the
@@ -658,14 +685,14 @@ IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, AddedTab) {
EXPECT_TRUE(content::WaitForLoadStop(new_contents));
CheckSecurityInfoForSecure(new_contents, SecurityStateModel::SECURE,
SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
false /* expect cert status error */);
browser()->tab_strip_model()->InsertWebContentsAt(0, new_contents,
TabStripModel::ADD_NONE);
CheckSecurityInfoForSecure(new_contents, SecurityStateModel::SECURE,
SecurityStateModel::NO_DEPRECATED_SHA1,
- SecurityStateModel::NO_MIXED_CONTENT,
+ SecurityStateModel::NO_MIXED_CONTENT, false,
false /* expect cert status error */);
}
@@ -696,6 +723,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStyleChangedTest, SecurityStyleChangedObserver) {
EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size());
EXPECT_EQ(0u, observer.latest_explanations().secure_explanations.size());
EXPECT_FALSE(observer.latest_explanations().scheme_is_cryptographic);
+ EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
EXPECT_FALSE(observer.latest_explanations().ran_insecure_content);
EXPECT_FALSE(observer.latest_explanations().displayed_insecure_content);
@@ -717,6 +745,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStyleChangedTest, SecurityStyleChangedObserver) {
CheckSecureExplanations(mixed_content_explanation.secure_explanations,
VALID_CERTIFICATE, browser());
EXPECT_TRUE(mixed_content_explanation.scheme_is_cryptographic);
+ EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
EXPECT_TRUE(mixed_content_explanation.displayed_insecure_content);
EXPECT_FALSE(mixed_content_explanation.ran_insecure_content);
EXPECT_EQ(content::SECURITY_STYLE_UNAUTHENTICATED,
@@ -736,6 +765,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStyleChangedTest, SecurityStyleChangedObserver) {
CheckSecureExplanations(observer.latest_explanations().secure_explanations,
INVALID_CERTIFICATE, browser());
EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
+ EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
EXPECT_FALSE(observer.latest_explanations().displayed_insecure_content);
EXPECT_FALSE(observer.latest_explanations().ran_insecure_content);
@@ -751,6 +781,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStyleChangedTest, SecurityStyleChangedObserver) {
CheckSecureExplanations(observer.latest_explanations().secure_explanations,
VALID_CERTIFICATE, browser());
EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
+ EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
EXPECT_FALSE(observer.latest_explanations().displayed_insecure_content);
EXPECT_FALSE(observer.latest_explanations().ran_insecure_content);
@@ -763,6 +794,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStyleChangedTest, SecurityStyleChangedObserver) {
CheckSecureExplanations(observer.latest_explanations().secure_explanations,
INVALID_CERTIFICATE, browser());
EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
+ EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
EXPECT_FALSE(observer.latest_explanations().displayed_insecure_content);
EXPECT_FALSE(observer.latest_explanations().ran_insecure_content);
@@ -779,6 +811,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStyleChangedTest, SecurityStyleChangedObserver) {
CheckSecureExplanations(observer.latest_explanations().secure_explanations,
INVALID_CERTIFICATE, browser());
EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
+ EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
EXPECT_FALSE(observer.latest_explanations().displayed_insecure_content);
EXPECT_FALSE(observer.latest_explanations().ran_insecure_content);
}
@@ -811,6 +844,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStyleChangedTest,
CheckSecureExplanations(observer.latest_explanations().secure_explanations,
VALID_CERTIFICATE, browser());
EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
+ EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
EXPECT_FALSE(observer.latest_explanations().displayed_insecure_content);
EXPECT_FALSE(observer.latest_explanations().ran_insecure_content);
@@ -835,6 +869,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStyleChangedTest,
CheckSecureExplanations(observer.latest_explanations().secure_explanations,
INVALID_CERTIFICATE, browser());
EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
+ EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
EXPECT_FALSE(observer.latest_explanations().displayed_insecure_content);
EXPECT_FALSE(observer.latest_explanations().ran_insecure_content);
@@ -853,6 +888,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStyleChangedTest,
CheckSecureExplanations(observer.latest_explanations().secure_explanations,
VALID_CERTIFICATE, browser());
EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
+ EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
EXPECT_FALSE(observer.latest_explanations().displayed_insecure_content);
EXPECT_FALSE(observer.latest_explanations().ran_insecure_content);
}
« no previous file with comments | « chrome/browser/ssl/chrome_security_state_model_client.cc ('k') | chrome/test/data/ssl/hpkp-headers.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698