make use of the pem helper plugin to load credentials
This commit is contained in:
@@ -1066,24 +1066,3 @@ pkcs7_t *pkcs7_create_from_data(chunk_t data)
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
/*
|
||||
* Described in header.
|
||||
*/
|
||||
pkcs7_t *pkcs7_create_from_file(const char *filename, const char *label)
|
||||
{
|
||||
bool pgp = FALSE;
|
||||
chunk_t chunk = chunk_empty;
|
||||
char cert_label[BUF_LEN];
|
||||
pkcs7_t *pkcs7;
|
||||
|
||||
snprintf(cert_label, BUF_LEN, "%s pkcs7", label);
|
||||
|
||||
if (!pem_asn1_load_file(filename, NULL, cert_label, &chunk, &pgp))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pkcs7 = pkcs7_create_from_chunk(chunk, 0);
|
||||
free(chunk.ptr);
|
||||
return pkcs7;
|
||||
}
|
||||
|
||||
@@ -166,13 +166,4 @@ pkcs7_t *pkcs7_create_from_chunk(chunk_t chunk, u_int level);
|
||||
*/
|
||||
pkcs7_t *pkcs7_create_from_data(chunk_t data);
|
||||
|
||||
/**
|
||||
* Read a X.509 certificate from a DER encoded file.
|
||||
*
|
||||
* @param filename file containing DER encoded data
|
||||
* @param label label describing kind of PKCS#7 file
|
||||
* @return created pkcs7_t object, or NULL if invalid.
|
||||
*/
|
||||
pkcs7_t *pkcs7_create_from_file(const char *filename, const char *label);
|
||||
|
||||
#endif /** PKCS7_H_ @}*/
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <asn1/oid.h>
|
||||
#include <asn1/asn1.h>
|
||||
#include <asn1/asn1_parser.h>
|
||||
#include <asn1/pem.h>
|
||||
#include <crypto/hashers/hasher.h>
|
||||
|
||||
typedef struct private_gcrypt_rsa_public_key_t private_gcrypt_rsa_public_key_t;
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include <asn1/oid.h>
|
||||
#include <asn1/asn1.h>
|
||||
#include <asn1/asn1_parser.h>
|
||||
#include <asn1/pem.h>
|
||||
#include <crypto/hashers/hasher.h>
|
||||
#include <pgp/pgp.h>
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "pubkey_public_key.h"
|
||||
|
||||
#include <debug.h>
|
||||
#include <asn1/pem.h>
|
||||
#include <asn1/oid.h>
|
||||
#include <asn1/asn1.h>
|
||||
#include <asn1/asn1_parser.h>
|
||||
@@ -137,21 +136,6 @@ static void add(private_builder_t *this, builder_part_t part, ...)
|
||||
va_end(args);
|
||||
return;
|
||||
}
|
||||
case BUILD_BLOB_PEM:
|
||||
{
|
||||
bool pgp;
|
||||
|
||||
va_start(args, part);
|
||||
blob = va_arg(args, chunk_t);
|
||||
blob = chunk_clone(blob);
|
||||
if (pem_to_bin(&blob, chunk_empty, &pgp) == SUCCESS)
|
||||
{
|
||||
this->key = pubkey_public_key_load(chunk_clone(blob));
|
||||
}
|
||||
free(blob.ptr);
|
||||
va_end(args);
|
||||
return;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include <asn1/oid.h>
|
||||
#include <asn1/asn1.h>
|
||||
#include <asn1/asn1_parser.h>
|
||||
#include <asn1/pem.h>
|
||||
#include <utils/identification.h>
|
||||
#include <utils/linked_list.h>
|
||||
#include <credentials/certificates/x509.h>
|
||||
@@ -966,33 +965,8 @@ static private_x509_ac_t* create_from_chunk(chunk_t chunk)
|
||||
return NULL;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* create X.509 crl from a file
|
||||
*/
|
||||
static private_x509_ac_t* create_from_file(char *path)
|
||||
{
|
||||
bool pgp = FALSE;
|
||||
chunk_t chunk;
|
||||
private_x509_ac_t *this;
|
||||
|
||||
if (!pem_asn1_load_file(path, NULL, &chunk, &pgp))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
this = create_from_chunk(chunk);
|
||||
|
||||
if (this == NULL)
|
||||
{
|
||||
DBG1(" could not parse loaded attribute certificate file '%s'", path);
|
||||
return NULL;
|
||||
}
|
||||
DBG1(" loaded attribute certificate file '%s'", path);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
typedef struct private_builder_t private_builder_t;
|
||||
/**
|
||||
* Builder implementation for certificate loading
|
||||
@@ -1042,13 +1016,6 @@ static void add(private_builder_t *this, builder_part_t part, ...)
|
||||
va_start(args, part);
|
||||
switch (part)
|
||||
{
|
||||
case BUILD_FROM_FILE:
|
||||
if (this->ac)
|
||||
{
|
||||
destroy(this->ac);
|
||||
}
|
||||
this->ac = create_from_file(va_arg(args, char*));
|
||||
break;
|
||||
case BUILD_BLOB_ASN1_DER:
|
||||
if (this->ac)
|
||||
{
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
#include <asn1/oid.h>
|
||||
#include <asn1/asn1.h>
|
||||
#include <asn1/asn1_parser.h>
|
||||
#include <asn1/pem.h>
|
||||
#include <crypto/hashers/hasher.h>
|
||||
#include <credentials/keys/private_key.h>
|
||||
#include <utils/linked_list.h>
|
||||
@@ -1184,31 +1183,6 @@ static private_x509_cert_t *create_from_chunk(chunk_t chunk)
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* create an X.509 certificate from a file
|
||||
*/
|
||||
static private_x509_cert_t *create_from_file(char *path)
|
||||
{
|
||||
bool pgp = FALSE;
|
||||
chunk_t chunk;
|
||||
private_x509_cert_t *this;
|
||||
|
||||
if (!pem_asn1_load_file(path, NULL, &chunk, &pgp))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
this = create_from_chunk(chunk);
|
||||
|
||||
if (this == NULL)
|
||||
{
|
||||
DBG1(" could not parse loaded certificate file '%s'",path);
|
||||
return NULL;
|
||||
}
|
||||
DBG1(" loaded certificate file '%s'", path);
|
||||
return this;
|
||||
}
|
||||
|
||||
typedef struct private_builder_t private_builder_t;
|
||||
/**
|
||||
* Builder implementation for certificate loading
|
||||
@@ -1362,9 +1336,6 @@ static void add(private_builder_t *this, builder_part_t part, ...)
|
||||
va_start(args, part);
|
||||
switch (part)
|
||||
{
|
||||
case BUILD_FROM_FILE:
|
||||
this->cert = create_from_file(va_arg(args, char*));
|
||||
break;
|
||||
case BUILD_BLOB_ASN1_DER:
|
||||
chunk = va_arg(args, chunk_t);
|
||||
this->cert = create_from_chunk(chunk_clone(chunk));
|
||||
|
||||
@@ -25,7 +25,6 @@ typedef struct revoked_t revoked_t;
|
||||
#include <asn1/oid.h>
|
||||
#include <asn1/asn1.h>
|
||||
#include <asn1/asn1_parser.h>
|
||||
#include <asn1/pem.h>
|
||||
#include <credentials/certificates/x509.h>
|
||||
#include <utils/linked_list.h>
|
||||
|
||||
@@ -605,47 +604,6 @@ static private_x509_crl_t* create_empty(void)
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* create an X.509 crl from a chunk
|
||||
*/
|
||||
static private_x509_crl_t* create_from_chunk(chunk_t chunk)
|
||||
{
|
||||
private_x509_crl_t *this = create_empty();
|
||||
|
||||
this->encoding = chunk;
|
||||
if (!parse(this))
|
||||
{
|
||||
destroy(this);
|
||||
return NULL;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* create an X.509 crl from a file
|
||||
*/
|
||||
static private_x509_crl_t* create_from_file(char *path)
|
||||
{
|
||||
bool pgp = FALSE;
|
||||
chunk_t chunk;
|
||||
private_x509_crl_t *this;
|
||||
|
||||
if (!pem_asn1_load_file(path, NULL, &chunk, &pgp))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
this = create_from_chunk(chunk);
|
||||
|
||||
if (this == NULL)
|
||||
{
|
||||
DBG1(" could not parse loaded crl file '%s'",path);
|
||||
return NULL;
|
||||
}
|
||||
DBG1(" loaded crl file '%s'", path);
|
||||
return this;
|
||||
}
|
||||
|
||||
typedef struct private_builder_t private_builder_t;
|
||||
/**
|
||||
* Builder implementation for certificate loading
|
||||
@@ -653,8 +611,8 @@ typedef struct private_builder_t private_builder_t;
|
||||
struct private_builder_t {
|
||||
/** implements the builder interface */
|
||||
builder_t public;
|
||||
/** loaded CRL */
|
||||
private_x509_crl_t *crl;
|
||||
/** CRL chunk to build from */
|
||||
chunk_t blob;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -662,8 +620,18 @@ struct private_builder_t {
|
||||
*/
|
||||
static private_x509_crl_t *build(private_builder_t *this)
|
||||
{
|
||||
private_x509_crl_t *crl = this->crl;
|
||||
private_x509_crl_t *crl = NULL;
|
||||
|
||||
if (this->blob.len && this->blob.ptr)
|
||||
{
|
||||
crl = create_empty();
|
||||
crl->encoding = chunk_clone(this->blob);
|
||||
if (!parse(crl))
|
||||
{
|
||||
destroy(crl);
|
||||
crl = NULL;
|
||||
}
|
||||
}
|
||||
free(this);
|
||||
return crl;
|
||||
}
|
||||
@@ -673,35 +641,19 @@ static private_x509_crl_t *build(private_builder_t *this)
|
||||
*/
|
||||
static void add(private_builder_t *this, builder_part_t part, ...)
|
||||
{
|
||||
if (!this->crl)
|
||||
{
|
||||
va_list args;
|
||||
chunk_t chunk;
|
||||
va_list args;
|
||||
|
||||
switch (part)
|
||||
{
|
||||
case BUILD_FROM_FILE:
|
||||
{
|
||||
va_start(args, part);
|
||||
this->crl = create_from_file(va_arg(args, char*));
|
||||
va_end(args);
|
||||
return;
|
||||
}
|
||||
case BUILD_BLOB_ASN1_DER:
|
||||
{
|
||||
va_start(args, part);
|
||||
chunk = va_arg(args, chunk_t);
|
||||
this->crl = create_from_chunk(chunk_clone(chunk));
|
||||
va_end(args);
|
||||
return;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (this->crl)
|
||||
switch (part)
|
||||
{
|
||||
destroy(this->crl);
|
||||
case BUILD_BLOB_ASN1_DER:
|
||||
{
|
||||
va_start(args, part);
|
||||
this->blob = va_arg(args, chunk_t);
|
||||
va_end(args);
|
||||
return;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
builder_cancel(&this->public);
|
||||
}
|
||||
@@ -717,13 +669,13 @@ builder_t *x509_crl_builder(certificate_type_t type)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
this = malloc_thing(private_builder_t);
|
||||
|
||||
this->crl = NULL;
|
||||
this->public.add = (void(*)(builder_t *this, builder_part_t part, ...))add;
|
||||
this->public.build = (void*(*)(builder_t *this))build;
|
||||
|
||||
this->blob = chunk_empty;
|
||||
|
||||
return &this->public;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user