aboutsummaryrefslogtreecommitdiffstats
path: root/src/pluto/builder.c
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2009-10-05 07:24:28 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2009-10-05 07:24:28 +0200
commitfc12e3cd2eccee07fa3b15d519a24673f15f277d (patch)
tree0068a60daf9c8303768b495feacda98c4cee7272 /src/pluto/builder.c
parent0ea9cbc6e9d0743e863de6d3d141761d5c5036c6 (diff)
downloadstrongswan-fc12e3cd2eccee07fa3b15d519a24673f15f277d.tar.bz2
strongswan-fc12e3cd2eccee07fa3b15d519a24673f15f277d.tar.xz
pluto now uses x509 plugin for attribute certificate handling
Diffstat (limited to 'src/pluto/builder.c')
-rw-r--r--src/pluto/builder.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/pluto/builder.c b/src/pluto/builder.c
index 8a90e05af..b8b9aac35 100644
--- a/src/pluto/builder.c
+++ b/src/pluto/builder.c
@@ -40,6 +40,7 @@
*/
static cert_t *builder_load_cert(certificate_type_t type, va_list args)
{
+ x509_flag_t flags = 0;
chunk_t blob = chunk_empty;
bool pgp = FALSE;
@@ -53,6 +54,9 @@ static cert_t *builder_load_cert(certificate_type_t type, va_list args)
case BUILD_BLOB_ASN1_DER:
blob = va_arg(args, chunk_t);
continue;
+ case BUILD_X509_FLAG:
+ flags |= va_arg(args, x509_flag_t);
+ continue;
case BUILD_END:
break;
default:
@@ -85,6 +89,7 @@ static cert_t *builder_load_cert(certificate_type_t type, va_list args)
x509cert->cert = lib->creds->create(lib->creds,
CRED_CERTIFICATE, CERT_X509,
BUILD_BLOB_ASN1_DER, blob,
+ BUILD_X509_FLAG, flags,
BUILD_END);
if (x509cert->cert)
{
@@ -128,9 +133,12 @@ static x509acert_t *builder_load_ac(certificate_type_t type, va_list args)
if (blob.ptr)
{
ac = malloc_thing(x509acert_t);
- *ac = empty_ac;
- if (parse_ac(chunk_clone(blob), ac) &&
- verify_x509acert(ac, FALSE))
+ ac->next = NULL;
+ ac->installed = UNDEFINED_TIME;
+ ac->ac = lib->creds->create(lib->creds,
+ CRED_CERTIFICATE, CERT_X509_AC,
+ BUILD_BLOB_ASN1_DER, blob, BUILD_END);
+ if (ac->ac && verify_x509acert(ac, FALSE))
{
return ac;
}