Index: chrome/browser/ui/webui/net_internals_ui.cc |
=================================================================== |
--- chrome/browser/ui/webui/net_internals_ui.cc (revision 80507) |
+++ chrome/browser/ui/webui/net_internals_ui.cc (working copy) |
@@ -16,6 +16,7 @@ |
#include "base/path_service.h" |
#include "base/string_number_conversions.h" |
#include "base/string_piece.h" |
+#include "base/string_split.h" |
#include "base/string_util.h" |
#include "base/utf_string_conversions.h" |
#include "base/values.h" |
@@ -1065,6 +1066,8 @@ |
result->SetBoolean("subdomains", state.include_subdomains); |
result->SetBoolean("preloaded", state.preloaded); |
result->SetString("domain", state.domain); |
+ result->SetString("cert_pins", |
+ JoinString(state.cert_pins, ',')); |
} |
} |
} |
@@ -1074,7 +1077,7 @@ |
void NetInternalsMessageHandler::IOThreadImpl::OnHSTSAdd( |
const ListValue* list) { |
- // |list| should be: [<domain to query>, <include subdomains>]. |
+ // |list| should be: [<domain to query>, <include subdomains>, <cert pins>]. |
std::string domain; |
CHECK(list->GetString(0, &domain)); |
if (!IsStringASCII(domain)) { |
@@ -1084,6 +1087,8 @@ |
} |
bool include_subdomains; |
CHECK(list->GetBoolean(1, &include_subdomains)); |
+ std::string cert_pins_str; |
+ CHECK(list->GetString(2, &cert_pins_str)); |
net::TransportSecurityState* transport_security_state = |
context_getter_->GetURLRequestContext()->transport_security_state(); |
@@ -1093,6 +1098,18 @@ |
net::TransportSecurityState::DomainState state; |
state.expiry = state.created + base::TimeDelta::FromDays(1000); |
state.include_subdomains = include_subdomains; |
+ state.cert_pins.clear(); |
+ if (!cert_pins_str.empty()) { |
+ std::vector<std::string> cert_pins; |
+ base::SplitString(cert_pins_str, ',', &cert_pins); |
+ std::vector<std::string>::const_iterator i = cert_pins.begin(); |
+ for (; i != cert_pins.end(); ++i) { |
+ std::string pin = *i; |
+ RemoveChars(pin, " \t\r\n", &pin); |
+ StringToLowerASCII(&pin); |
+ state.cert_pins.push_back(pin); |
+ } |
+ } |
transport_security_state->EnableHost(domain, state); |
} |