aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/cert/x509/certstor.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/cert/x509/certstor.h')
-rw-r--r--src/lib/cert/x509/certstor.h46
1 files changed, 45 insertions, 1 deletions
diff --git a/src/lib/cert/x509/certstor.h b/src/lib/cert/x509/certstor.h
index 55f6b8c93..56176739b 100644
--- a/src/lib/cert/x509/certstor.h
+++ b/src/lib/cert/x509/certstor.h
@@ -22,13 +22,25 @@ class BOTAN_DLL Certificate_Store
virtual ~Certificate_Store() {}
/**
- * Subject DN and (optionally) key identifier
+ * Find a certificate by Subject DN and (optionally) key identifier
+ * @param subject_dn the subject's distinguished name
+ * @param key_id an optional key id
+ * @return a matching certificate or nullptr otherwise
*/
virtual std::shared_ptr<const X509_Certificate>
find_cert(const X509_DN& subject_dn, const std::vector<byte>& key_id) const = 0;
+ /**
+ * Finds a CRL for the given certificate
+ * @param subject the subject certificate
+ * @return the CRL for subject or nullptr otherwise
+ */
virtual std::shared_ptr<const X509_CRL> find_crl_for(const X509_Certificate& subject) const;
+ /**
+ * @return whether the certificate is known
+ * @param cert certififcate to be searched
+ */
bool certificate_known(const X509_Certificate& cert) const
{
return find_cert(cert.subject_dn(), cert.subject_key_id()) != nullptr;
@@ -50,20 +62,43 @@ class BOTAN_DLL Certificate_Store_In_Memory : public Certificate_Store
*/
explicit Certificate_Store_In_Memory(const std::string& dir);
+ /**
+ * Adds given certificate to the store.
+ */
explicit Certificate_Store_In_Memory(const X509_Certificate& cert);
+ /**
+ * Create an empty store.
+ */
Certificate_Store_In_Memory() {}
+ /**
+ * Add a certificate to the store.
+ * @param cert certificate to be added
+ */
void add_certificate(const X509_Certificate& cert);
+ /**
+ * Add a certificate revocation list (CRL) to the store.
+ * @param crl CRL to be added
+ */
void add_crl(const X509_CRL& crl);
+ /**
+ * @return DNs for all certificates managed by the store
+ */
std::vector<X509_DN> all_subjects() const override;
+ /*
+ * Find a certificate by Subject DN and (optionally) key identifier
+ */
std::shared_ptr<const X509_Certificate> find_cert(
const X509_DN& subject_dn,
const std::vector<byte>& key_id) const override;
+ /**
+ * Finds a CRL for the given certificate
+ */
std::shared_ptr<const X509_CRL> find_crl_for(const X509_Certificate& subject) const override;
private:
// TODO: Add indexing on the DN and key id to avoid linear search
@@ -71,14 +106,23 @@ class BOTAN_DLL Certificate_Store_In_Memory : public Certificate_Store
std::vector<std::shared_ptr<X509_CRL>> m_crls;
};
+/**
+* FIXME add doc
+*/
class BOTAN_DLL Certificate_Store_Overlay : public Certificate_Store
{
public:
explicit Certificate_Store_Overlay(const std::vector<std::shared_ptr<const X509_Certificate>>& certs) :
m_certs(certs) {}
+ /**
+ * @return DNs for all certificates managed by the store
+ */
std::vector<X509_DN> all_subjects() const override;
+ /**
+ * Find a certificate by Subject DN and (optionally) key identifier
+ */
std::shared_ptr<const X509_Certificate> find_cert(
const X509_DN& subject_dn,
const std::vector<byte>& key_id) const override;