| Index: chrome/browser/ui/webui/net_internals/net_internals_ui.cc
|
| ===================================================================
|
| --- chrome/browser/ui/webui/net_internals/net_internals_ui.cc (revision 165283)
|
| +++ chrome/browser/ui/webui/net_internals/net_internals_ui.cc (working copy)
|
| @@ -1100,19 +1100,33 @@
|
| connection_tester_->RunAllTests(url);
|
| }
|
|
|
| -void SPKIHashesToString(const net::HashValueVector& hashes,
|
| - std::string* string) {
|
| - for (net::HashValueVector::const_iterator
|
| - i = hashes.begin(); i != hashes.end(); ++i) {
|
| - base::StringPiece hash_str(reinterpret_cast<const char*>(i->data()),
|
| - i->size());
|
| - std::string encoded;
|
| - base::Base64Encode(hash_str, &encoded);
|
| +std::string HashesToBase64String(const net::HashValueVector& hashes) {
|
| + std::string str;
|
| + for (size_t i = 0; i != hashes.size(); ++i) {
|
| + if (i != 0)
|
| + str += ",";
|
| + str += hashes[i].ToString();
|
| + }
|
| + return str;
|
| +}
|
|
|
| - if (i != hashes.begin())
|
| - *string += ",";
|
| - *string += net::TransportSecurityState::HashValueLabel(*i) + encoded;
|
| +bool Base64StringToHashes(const std::string& hashes_str,
|
| + net::HashValueVector* hashes) {
|
| + hashes->clear();
|
| + if (hashes_str.empty())
|
| + return true;
|
| + std::vector<std::string> vector_hash_str;
|
| + base::SplitString(hashes_str, ',', &vector_hash_str);
|
| +
|
| + for (size_t i = 0; i != vector_hash_str.size(); ++i) {
|
| + std::string hash_str;
|
| + RemoveChars(vector_hash_str[i], " \t\r\n", &hash_str);
|
| + net::HashValue hash;
|
| + if (!hash.FromString(hash_str))
|
| + return false;
|
| + hashes->push_back(hash);
|
| }
|
| + return true;
|
| }
|
|
|
| void NetInternalsMessageHandler::IOThreadImpl::OnHSTSQuery(
|
| @@ -1143,13 +1157,12 @@
|
| result->SetDouble("dynamic_spki_hashes_expiry",
|
| state.dynamic_spki_hashes_expiry.ToDoubleT());
|
|
|
| - std::string hashes;
|
| - SPKIHashesToString(state.static_spki_hashes, &hashes);
|
| - result->SetString("static_spki_hashes", hashes);
|
| + std::string hashes_str;
|
| + hashes_str = HashesToBase64String(state.static_spki_hashes);
|
| + result->SetString("static_spki_hashes", hashes_str);
|
|
|
| - hashes.clear();
|
| - SPKIHashesToString(state.dynamic_spki_hashes, &hashes);
|
| - result->SetString("dynamic_spki_hashes", hashes);
|
| + hashes_str = HashesToBase64String(state.dynamic_spki_hashes);
|
| + result->SetString("dynamic_spki_hashes", hashes_str);
|
| }
|
| }
|
| }
|
| @@ -1180,22 +1193,8 @@
|
| net::TransportSecurityState::DomainState state;
|
| state.upgrade_expiry = state.created + base::TimeDelta::FromDays(1000);
|
| state.include_subdomains = include_subdomains;
|
| - if (!hashes_str.empty()) {
|
| - std::vector<std::string> type_and_b64s;
|
| - base::SplitString(hashes_str, ',', &type_and_b64s);
|
| - for (std::vector<std::string>::const_iterator
|
| - i = type_and_b64s.begin(); i != type_and_b64s.end(); ++i) {
|
| - std::string type_and_b64;
|
| - RemoveChars(*i, " \t\r\n", &type_and_b64);
|
| - net::HashValue hash;
|
| - if (!net::TransportSecurityState::ParsePin(type_and_b64, &hash))
|
| - continue;
|
| -
|
| - state.dynamic_spki_hashes.push_back(hash);
|
| - }
|
| - }
|
| -
|
| - transport_security_state->EnableHost(domain, state);
|
| + if (Base64StringToHashes(hashes_str, &state.dynamic_spki_hashes))
|
| + transport_security_state->EnableHost(domain, state);
|
| }
|
|
|
| void NetInternalsMessageHandler::IOThreadImpl::OnHSTSDelete(
|
|
|