vici: Support pinning end entity and CA certificates to connections

This commit is contained in:
Martin Willi
2014-05-07 14:13:37 +02:00
parent e6e975ff9d
commit b57739f721
2 changed files with 62 additions and 0 deletions
+37
View File
@@ -961,6 +961,41 @@ CALLBACK(parse_group, bool,
return parse_id(cfg, AUTH_RULE_GROUP, v);
}
/**
* Parse a certificate; add as auth rule to config
*/
static bool parse_cert(auth_cfg_t *cfg, auth_rule_t rule, chunk_t v)
{
certificate_t *cert;
cert = lib->creds->create(lib->creds, CRED_CERTIFICATE, CERT_X509,
BUILD_BLOB_PEM, v, BUILD_END);
if (cert)
{
cfg->add(cfg, rule, cert);
return TRUE;
}
return FALSE;
}
/**
* Parse subject certificates
*/
CALLBACK(parse_certs, bool,
auth_cfg_t *cfg, chunk_t v)
{
return parse_cert(cfg, AUTH_RULE_SUBJECT_CERT, v);
}
/**
* Parse CA certificates
*/
CALLBACK(parse_cacerts, bool,
auth_cfg_t *cfg, chunk_t v)
{
return parse_cert(cfg, AUTH_RULE_CA_CERT, v);
}
/**
* Parse revocation status
*/
@@ -1146,6 +1181,8 @@ CALLBACK(auth_li, bool,
{
parse_rule_t rules[] = {
{ "groups", parse_group, auth->cfg },
{ "certs", parse_certs, auth->cfg },
{ "cacerts", parse_cacerts, auth->cfg },
};
return parse_rules(rules, countof(rules), name, value,