23 #include "../../log.h"
25 #include <openssl/err.h>
27 #include <Security/SecCertificate.h>
28 #include <Security/SecTrustSettings.h>
30 using namespace digidoc;
41 INFO(
"Loaded %d certificates into certificate store.", sk_X509_num(
d->stack));
53 if(SecTrustSettingsCopyCertificates(trustSettings, &certs))
56 CFIndex
size = CFArrayGetCount(certs);
57 for(CFIndex
i = 0;
i <
size; ++
i)
59 SecCertificateRef cert = SecCertificateRef(CFArrayGetValueAtIndex(certs,
i));
61 if(SecCertificateGetData(cert, &data))
63 WARN(
"Error retrieving a CA certificate from the KeyStore");
67 const unsigned char *pBytes = (
const unsigned char*)data.Data;
68 X509 *c = d2i_X509(0, &pBytes, data.Length);
71 WARN(
"Cant add cert %ld to X509_STORE, %s", ASN1_INTEGER_get(X509_get_serialNumber(c)), ERR_reason_error_string(ERR_get_error()));
75 sk_X509_push(d->stack, c);
76 if(!X509_STORE_add_cert(d->store, c))
77 WARN(
"Cant add cert %ld to X509_STORE, %s", ASN1_INTEGER_get(X509_get_serialNumber(c)), ERR_reason_error_string(ERR_get_error()));