Chromium Code Reviews| Index: components/certificate_transparency/tree_state_tracker.h |
| diff --git a/components/certificate_transparency/tree_state_tracker.h b/components/certificate_transparency/tree_state_tracker.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2073cdf97775bddd472921af49fe9c88ee4027a9 |
| --- /dev/null |
| +++ b/components/certificate_transparency/tree_state_tracker.h |
| @@ -0,0 +1,58 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef COMPONENTS_CERTIFICATE_TRANSPARENCY_TREE_STATE_TRACKER_H_ |
| +#define COMPONENTS_CERTIFICATE_TRANSPARENCY_TREE_STATE_TRACKER_H_ |
| + |
| +#include <map> |
| +#include <string> |
| +#include <vector> |
| + |
| +#include "base/memory/linked_ptr.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "net/cert/ct_verifier.h" |
| + |
| +namespace net { |
| +class CTLogVerifier; |
| + |
| +namespace ct { |
| +struct SignedCertificateTimestamp; |
| +struct SignedTreeHead; |
| +} // namespace ct |
| + |
| +} // namespace net |
| + |
| +namespace certificate_transparency { |
| + |
| +class LogProofFetcher; |
| + |
| +// Tracks the state of the Merkle Trees of CT logs Chromium |
| +// knows about. For now, only stores Signed Tree Heads. |
|
Ryan Sleevi
2015/06/29 11:58:13
Comment nit: "For now" suggests there may be more,
|
| +class TreeStateTracker : public net::CTVerifier::Observer { |
| + public: |
| + TreeStateTracker(scoped_ptr<LogProofFetcher> fetcher, |
| + const std::vector<linked_ptr<net::CTLogVerifier>>& ct_logs); |
| + ~TreeStateTracker() override; |
| + |
| + void OnSCTVerified(const net::ct::SignedCertificateTimestamp* sct, |
| + net::CTLogVerifier* verifier) override; |
| + |
| + private: |
| + void RefreshSTHs(); |
| + void OnSTHFetched(const std::string& log_id, |
| + const net::ct::SignedTreeHead& unverified_sth); |
| + |
| + // Holds the latest STH fetched and verified for each log. |
| + std::map<std::string, net::ct::SignedTreeHead> sths_; |
| + // Fetcher for getting STHs and proofs from CT logs. |
| + scoped_ptr<LogProofFetcher> fetcher_; |
| + // List of CT logs to track. |
| + std::map<std::string, linked_ptr<net::CTLogVerifier>> ct_logs_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TreeStateTracker); |
| +}; |
| + |
| +} // namespace certificate_transparency |
| + |
| +#endif // COMPONENTS_CERTIFICATE_TRANSPARENCY_TREE_STATE_TRACKER_H_ |