// Copyright 2020 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SERVICES_NETWORK_SCT_AUDITING_SCT_AUDITING_CACHE_H_ #define SERVICES_NETWORK_SCT_AUDITING_SCT_AUDITING_CACHE_H_ #include <optional> #include "base/component_export.h" #include "base/containers/lru_cache.h" #include "base/timer/timer.h" #include "net/base/hash_value.h" #include "net/base/host_port_pair.h" #include "net/cert/sct_auditing_delegate.h" #include "net/cert/signed_certificate_timestamp_and_status.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/network/public/mojom/network_service.mojom.h" #include "services/network/public/proto/sct_audit_report.pb.h" #include "url/gurl.h" namespace net { class X509Certificate; } namespace network { class NetworkContext; // SCTAuditingCache is the main entrypoint for new SCT auditing reports. A // single SCTAuditingCache should be shared among all contexts that want to // deduplicate reports and use a single sampling mechanism. Currently, one // SCTAuditingCache is created and owned by the NetworkService and shared // across all NetworkContexts. // // SCTAuditingCache tracks SCTs seen during CT verification. The cache supports // a configurable sample rate to reduce load, and deduplicates SCTs seen more // than once. The cache evicts least-recently-used entries after it reaches its // capacity. // // Once the SCTAuditingCache has selected a report to be sampled, it creates a // new SCTAuditingReporter and passes it to the SCTAuditingHandler for the // NetworkContext that triggered the report. The actual reporting and retrying // logic is handled by one SCTAuditingReporter per report. Pending reporters are // owned by the SCTAuditingHandler. // // The SCTAuditingCache allows the embedder to configure SCT auditing via the // network service's ConfigureSCTAuditing() API. // // Note: The SCTAuditingCache's deduplication cache is not persisted to disk. // Pending reports that are persisted to disk by SCTAuditingHandler do not // repopulate the deduplication cache when loaded. Not persisting the dedupe // cache slightly increases the probability weight of sampling and sending SCTs // from sites a user commonly visits (i.e., those they are likely to visit in // every session). class COMPONENT_EXPORT(NETWORK_SERVICE) SCTAuditingCache { … }; } // namespace network #endif // SERVICES_NETWORK_SCT_AUDITING_SCT_AUDITING_CACHE_H_