// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_WEB_SESSION_SESSION_CERTIFICATE_POLICY_CACHE_IMPL_H_
#define IOS_WEB_SESSION_SESSION_CERTIFICATE_POLICY_CACHE_IMPL_H_
#include "ios/web/public/session/session_certificate_policy_cache.h"
#include "ios/web/session/session_certificate.h"
namespace net {
class X509Certificate;
}
namespace web {
namespace proto {
class CertificatesCacheStorage;
} // namespace proto
// Concrete implementation of SessionCertificatePolicyCache.
class SessionCertificatePolicyCacheImpl final
: public SessionCertificatePolicyCache {
public:
explicit SessionCertificatePolicyCacheImpl(BrowserState* browser_state);
~SessionCertificatePolicyCacheImpl() final;
// Creates a SessionCertificatePolicyCacheImpl from serialized representation.
SessionCertificatePolicyCacheImpl(
BrowserState* browser_state,
const proto::CertificatesCacheStorage& storage);
// Serializes the SessionCertificatePolicyCacheImpl into `storage`.
void SerializeToProto(proto::CertificatesCacheStorage& storage) const;
// SessionCertificatePolicyCache:
void UpdateCertificatePolicyCache() const final;
void RegisterAllowedCertificate(
const scoped_refptr<net::X509Certificate>& certificate,
const std::string& host,
net::CertStatus status) final;
private:
// Represents the allowed certificates.
SessionCertificateSet allowed_certs_;
};
} // namespace web
#endif // IOS_WEB_SESSION_SESSION_CERTIFICATE_POLICY_CACHE_IMPL_H_