From aa4d426b4d3527d7e166df1a05058c9a4a0f6683 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Fri, 30 Apr 2021 00:33:56 +0200 Subject: initial/final commit --- CA_store.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 CA_store.cpp (limited to 'CA_store.cpp') diff --git a/CA_store.cpp b/CA_store.cpp new file mode 100644 index 0000000..3bf7be3 --- /dev/null +++ b/CA_store.cpp @@ -0,0 +1,40 @@ +#include +#include + +#include "vmime/vmime.hpp" + +#include "utilities.h" + +using namespace vmime::security::cert; + +vmime::shared_ptr +windows_root_certs_verifier(void) +{ + vmime::shared_ptr vrf = + vmime::make_shared(); + std::vector> root_certs; + vmime::shared_ptr cert; + HCERTSTORE store; + PCCERT_CONTEXT context; + + store = CertOpenSystemStore(0, "ROOT"); + if (store == NULL) + FAIL(MSG_NO_ROOT_CA_STORE); + + context = NULL; + while (true) { + context = CertEnumCertificatesInStore(store, context); + if (context == NULL) + break; + + cert = vmime::security::cert::X509Certificate::import + (context->pbCertEncoded, context->cbCertEncoded); + if (cert) + root_certs.push_back(cert); + } + + CertCloseStore(store, 0); + vrf->setX509RootCAs(root_certs); + + return vrf; +} -- cgit v1.2.3