| Index: net/tools/transport_security_state_generator/pinsets.cc
|
| diff --git a/net/tools/transport_security_state_generator/pinsets.cc b/net/tools/transport_security_state_generator/pinsets.cc
|
| index a9e7446aebc201163c74038e7ff6f0bddab6b1a9..16cb1ff45d2801176d8886cee40a028a95babbbe 100644
|
| --- a/net/tools/transport_security_state_generator/pinsets.cc
|
| +++ b/net/tools/transport_security_state_generator/pinsets.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "net/tools/transport_security_state_generator/pinsets.h"
|
|
|
| +#include "base/stl_util.h"
|
| #include "net/tools/transport_security_state_generator/spki_hash.h"
|
|
|
| namespace net {
|
| @@ -23,6 +24,34 @@ void Pinsets::RegisterPinset(std::unique_ptr<Pinset> pinset) {
|
| pinset->name(), std::move(pinset)));
|
| }
|
|
|
| +void Pinsets::FilterPinsets(const std::set<std::string>& except_these) {
|
| + base::EraseIf(
|
| + pinsets_,
|
| + [except_these](
|
| + const std::pair<const std::string, std::unique_ptr<Pinset>>& pinset) {
|
| + return except_these.find(pinset.first) == except_these.cend();
|
| + });
|
| +
|
| + // Assemble the list of SPKI hashes that are still required.
|
| + std::set<std::string> required_spki_hashes;
|
| + for (const auto& pinset : pinsets_) {
|
| + for (const auto& spki_hash : pinset.second->static_spki_hashes()) {
|
| + required_spki_hashes.insert(spki_hash);
|
| + }
|
| +
|
| + for (const auto& spki_hash : pinset.second->bad_static_spki_hashes()) {
|
| + required_spki_hashes.insert(spki_hash);
|
| + }
|
| + }
|
| +
|
| + base::EraseIf(spki_hashes_,
|
| + [required_spki_hashes](
|
| + const std::pair<std::string, SPKIHash>& spki_hash) {
|
| + return required_spki_hashes.find(spki_hash.first) ==
|
| + required_spki_hashes.cend();
|
| + });
|
| +}
|
| +
|
| } // namespace transport_security_state
|
|
|
| } // namespace net
|
|
|