use credential builder API to parse trusted public keys

This commit is contained in:
Martin Willi
2009-08-26 11:23:52 +02:00
parent d1b3e8607e
commit 64e77e8fbb
@@ -214,13 +214,6 @@ static pubkey_cert_t *pubkey_cert_create(public_key_t *key)
return &this->public; return &this->public;
} }
static pubkey_cert_t *pubkey_cert_create_from_chunk(chunk_t blob)
{
public_key_t *key = pubkey_public_key_load(chunk_clone(blob));
return (key)? pubkey_cert_create(key) : NULL;
}
typedef struct private_builder_t private_builder_t; typedef struct private_builder_t private_builder_t;
/** /**
* Builder implementation for key loading * Builder implementation for key loading
@@ -250,6 +243,7 @@ static void add(private_builder_t *this, builder_part_t part, ...)
{ {
if (!this->key) if (!this->key)
{ {
public_key_t *key;
va_list args; va_list args;
switch (part) switch (part)
@@ -257,14 +251,20 @@ static void add(private_builder_t *this, builder_part_t part, ...)
case BUILD_BLOB_ASN1_DER: case BUILD_BLOB_ASN1_DER:
{ {
va_start(args, part); va_start(args, part);
this->key = pubkey_cert_create_from_chunk(va_arg(args, chunk_t)); key = lib->creds->create(lib->creds, CRED_PUBLIC_KEY, KEY_ANY,
va_arg(args, chunk_t));
if (key)
{
this->key = pubkey_cert_create(key);
}
va_end(args); va_end(args);
return; return;
} }
case BUILD_PUBLIC_KEY: case BUILD_PUBLIC_KEY:
{ {
va_start(args, part); va_start(args, part);
this->key = pubkey_cert_create(va_arg(args, public_key_t*)); key = va_arg(args, public_key_t*);
pubkey_cert_create(key->get_ref(key));
va_end(args); va_end(args);
return; return;
} }