Added support for CDPs to conftest
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
#include "hooks/hook.h"
|
#include "hooks/hook.h"
|
||||||
|
|
||||||
#include <threading/thread.h>
|
#include <threading/thread.h>
|
||||||
|
#include <credentials/certificates/x509.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Conftest globals struct
|
* Conftest globals struct
|
||||||
@@ -220,6 +221,48 @@ static bool load_keys(settings_t *settings, char *dir)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load certificate distribution points
|
||||||
|
*/
|
||||||
|
static void load_cdps(settings_t *settings)
|
||||||
|
{
|
||||||
|
enumerator_t *enumerator;
|
||||||
|
identification_t *id;
|
||||||
|
char *ca, *uri, *section;
|
||||||
|
x509_t *x509;
|
||||||
|
|
||||||
|
enumerator = settings->create_section_enumerator(settings, "cdps");
|
||||||
|
while (enumerator->enumerate(enumerator, §ion))
|
||||||
|
{
|
||||||
|
if (!strncaseeq(section, "crl", strlen("crl")))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "unknown cdp type '%s', ignored\n", section);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
uri = settings->get_str(settings, "cdps.%s.uri", NULL, section);
|
||||||
|
ca = settings->get_str(settings, "cdps.%s.ca", NULL, section);
|
||||||
|
if (!ca || !uri)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "cdp '%s' misses ca/uri, ignored\n", section);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
x509 = lib->creds->create(lib->creds, CRED_CERTIFICATE,
|
||||||
|
CERT_X509, BUILD_FROM_FILE, ca, BUILD_END);
|
||||||
|
if (!x509)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "loading cdp '%s' ca failed, ignored\n", section);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
id = identification_create_from_encoding(ID_KEY_ID,
|
||||||
|
x509->get_subjectKeyIdentifier(x509));
|
||||||
|
conftest->creds->add_cdp(conftest->creds, CERT_X509_CRL, id, uri);
|
||||||
|
DESTROY_IF((certificate_t*)x509);
|
||||||
|
id->destroy(id);
|
||||||
|
}
|
||||||
|
enumerator->destroy(enumerator);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load configured hooks
|
* Load configured hooks
|
||||||
*/
|
*/
|
||||||
@@ -448,6 +491,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
load_cdps(conftest->test);
|
||||||
if (!load_hooks())
|
if (!load_hooks())
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user