22 #if defined(_WIN32) && USE_NATIVE_CERTSTORE
24 #elif defined(__APPLE__) && USE_NATIVE_CERTSTORE
28 #include "../../Conf.h"
29 #include "../../log.h"
31 using namespace digidoc;
35 switch(X509_STORE_CTX_get_error(ctx))
37 case X509_V_ERR_CERT_HAS_EXPIRED:
return 1;
53 d->stack = sk_X509_new_null();
54 d->
store = X509_STORE_new();
64 sk_X509_pop_free(
d->stack, X509_free);
80 #
if defined(_WIN32) && USE_NATIVE_CERTSTORE
82 #elif defined(__APPLE__) && USE_NATIVE_CERTSTORE
145 for(
int i = 0;
i < sk_X509_num(d->stack); ++
i)
147 X509 *x = sk_X509_value(d->stack,
i);
148 if(X509_NAME_cmp(X509_get_subject_name(x), subject) == 0)
163 STACK_OF(X509)* digidoc::X509CertStore::findCerts(
const std::string &obj,
const std::string &name)
const throw(
IOException)
165 STACK_OF(X509) *result = sk_X509_new_null();
169 for(
int i = 0;
i < sk_X509_num(d->stack); ++
i)
171 X509Cert cert(sk_X509_value(d->stack,
i));
172 if(cert.isValid() && cert.getSubjectName(obj) == name)
173 sk_X509_push(result, cert.getX509());