| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BSSL_PKI_CERT_ISSUER_SOURCE_STATIC_H_ |
| #define BSSL_PKI_CERT_ISSUER_SOURCE_STATIC_H_ |
| |
| #include <unordered_map> |
| #include <vector> |
| |
| #include <openssl/base.h> |
| |
| #include "cert_issuer_source.h" |
| |
| BSSL_NAMESPACE_BEGIN |
| |
| // Synchronously returns issuers from a pre-supplied set. |
| class OPENSSL_EXPORT CertIssuerSourceStatic : public CertIssuerSource { |
| public: |
| CertIssuerSourceStatic(); |
| |
| CertIssuerSourceStatic(const CertIssuerSourceStatic &) = delete; |
| CertIssuerSourceStatic &operator=(const CertIssuerSourceStatic &) = delete; |
| |
| ~CertIssuerSourceStatic() override; |
| |
| // Adds |cert| to the set of certificates that this CertIssuerSource will |
| // provide. |
| void AddCert(std::shared_ptr<const ParsedCertificate> cert); |
| |
| // Clears the set of certificates. |
| void Clear(); |
| |
| // Returns a vector containing all the certificates added to this source. |
| std::vector<std::shared_ptr<const ParsedCertificate>> Certs() const; |
| |
| size_t size() const { return intermediates_.size(); } |
| |
| // CertIssuerSource implementation: |
| void SyncGetIssuersOf(const ParsedCertificate *cert, |
| ParsedCertificateList *issuers) override; |
| void AsyncGetIssuersOf(const ParsedCertificate *cert, |
| std::unique_ptr<Request> *out_req) override; |
| |
| private: |
| // The certificates that the CertIssuerSourceStatic can return, keyed on the |
| // normalized subject value. |
| std::unordered_multimap<std::string_view, |
| std::shared_ptr<const ParsedCertificate>> |
| intermediates_; |
| }; |
| |
| BSSL_NAMESPACE_END |
| |
| #endif // BSSL_PKI_CERT_ISSUER_SOURCE_STATIC_H_ |