support of cert payloads

This commit is contained in:
Andreas Steffen
2006-07-03 06:27:45 +00:00
parent 1d390631d7
commit 971218c3ae
27 changed files with 1082 additions and 634 deletions
+29 -14
View File
@@ -28,22 +28,25 @@
/**
* String mappings for cert_encoding_t.
*/
mapping_t cert_encoding_m[] = {
{PKCS7_WRAPPED_X509_CERTIFICATE, "PKCS7_WRAPPED_X509_CERTIFICATE"},
{PGP_CERTIFICATE, "PGP_CERTIFICATE"},
{DNS_SIGNED_KEY, "DNS_SIGNED_KEY"},
{X509_CERTIFICATE_SIGNATURE, "X509_CERTIFICATE_SIGNATURE"},
{KERBEROS_TOKEN, "KERBEROS_TOKEN"},
{CERTIFICATE_REVOCATION_LIST, "CERTIFICATE_REVOCATION_LIST"},
{AUTHORITY_REVOCATION_LIST, "AUTHORITY_REVOCATION_LIST"},
{SPKI_CERTIFICATE, "SPKI_CERTIFICATE"},
{X509_CERTIFICATE_ATTRIBUTE, "X509_CERTIFICATE_ATTRIBUTE"},
{RAW_SA_KEY, "RAW_SA_KEY"},
{HASH_AND_URL_X509_CERTIFICATE, "HASH_AND_URL_X509_CERTIFICATE"},
{HASH_AND_URL_X509_BUNDLE, "HASH_AND_URL_X509_BUNDLE"},
{MAPPING_END, NULL}
static const char *const cert_encoding_name[] = {
"CERT_NONE",
"CERT_PKCS7_WRAPPED_X509",
"CERT_PGP",
"CERT_DNS_SIGNED_KEY",
"CERT_X509_SIGNATURE",
"CERT_X509_KEY_EXCHANGE",
"CERT_KERBEROS_TOKENS",
"CERT_CRL",
"CERT_ARL",
"CERT_SPKI",
"CERT_X509_ATTRIBUTE",
"CERT_RAW_RSA_KEY",
"CERT_X509_HASH_AND_URL",
"CERT_X509_HASH_AND_URL_BUNDLE"
};
enum_names cert_encoding_names =
{ CERT_NONE, CERT_X509_HASH_AND_URL_BUNDLE, cert_encoding_name, NULL };
typedef struct private_cert_payload_t private_cert_payload_t;
@@ -277,3 +280,15 @@ cert_payload_t *cert_payload_create()
return (&(this->public));
}
/*
* Described in header
*/
cert_payload_t *cert_payload_create_from_x509(x509_t *cert)
{
cert_payload_t *this = cert_payload_create();
this->set_cert_encoding(this, CERT_X509_SIGNATURE);
this->set_data(this, cert->get_certificate(cert));
return this;
}
+25 -15
View File
@@ -24,6 +24,7 @@
#define CERT_PAYLOAD_H_
#include <types.h>
#include <crypto/x509.h>
#include <encoding/payloads/payload.h>
/**
@@ -42,18 +43,19 @@ typedef enum cert_encoding_t cert_encoding_t;
* @ingroup payloads
*/
enum cert_encoding_t {
PKCS7_WRAPPED_X509_CERTIFICATE = 1,
PGP_CERTIFICATE = 2,
DNS_SIGNED_KEY = 3,
X509_CERTIFICATE_SIGNATURE = 4,
KERBEROS_TOKEN = 6,
CERTIFICATE_REVOCATION_LIST = 7,
AUTHORITY_REVOCATION_LIST = 8,
SPKI_CERTIFICATE = 9,
X509_CERTIFICATE_ATTRIBUTE = 10,
RAW_SA_KEY = 11,
HASH_AND_URL_X509_CERTIFICATE = 12,
HASH_AND_URL_X509_BUNDLE = 13
CERT_NONE = 0,
CERT_PKCS7_WRAPPED_X509 = 1,
CERT_PGP = 2,
CERT_DNS_SIGNED_KEY = 3,
CERT_X509_SIGNATURE = 4,
CERT_KERBEROS_TOKEN = 6,
CERT_CRL = 7,
CERT_ARL = 8,
CERT_SPKI = 9,
CERT_X509_ATTRIBUTE = 10,
CERT_RAW_RSA_KEY = 11,
CERT_X509_HASH_AND_URL = 12,
CERT_X509_HASH_AND_URL_BUNDLE = 13
};
/**
@@ -61,8 +63,7 @@ enum cert_encoding_t {
*
* @ingroup payloads
*/
extern mapping_t cert_encoding_m[];
extern enum_names cert_encoding_names;
typedef struct cert_payload_t cert_payload_t;
@@ -145,11 +146,20 @@ struct cert_payload_t {
/**
* @brief Creates an empty cert_payload_t object.
*
* @return cert_payload_t object
* @return cert_payload_t object
*
* @ingroup payloads
*/
cert_payload_t *cert_payload_create(void);
/**
* @brief Creates a cert_payload_t object with an X.509 certificate.
*
* @param cert X.509 certificate
* @return cert_payload_t object
*
* @ingroup payloads
*/
cert_payload_t *cert_payload_create_from_x509(x509_t *cert);
#endif /* CERT_PAYLOAD_H_ */
+1 -1
View File
@@ -199,7 +199,7 @@ typedef struct payload_t payload_t;
* handling of all payloads.
*
* @b Constructors:
* - payload_create() with the payload to instanciate.
* - payload_create() with the payload to instantiate.
*
* @ingroup payloads
*/