library.c \
asn1/asn1.c asn1/asn1_parser.c asn1/oid.c bio/bio_reader.c bio/bio_writer.c \
collections/blocking_queue.c collections/enumerator.c collections/hashtable.c \
-collections/linked_list.c \
-crypto/crypters/crypter.c crypto/hashers/hasher.c crypto/pkcs9.c \
+collections/linked_list.c crypto/crypters/crypter.c crypto/hashers/hasher.c \
crypto/proposal/proposal_keywords.c crypto/proposal/proposal_keywords_static.c \
crypto/prfs/prf.c crypto/prfs/mac_prf.c \
crypto/rngs/rng.c crypto/prf_plus.c crypto/signers/signer.c \
collections/blocking_queue.h collections/enumerator.h collections/hashtable.h \
collections/linked_list.h \
crypto/crypters/crypter.h crypto/hashers/hasher.h crypto/mac.h \
-crypto/pkcs9.h crypto/proposal/proposal_keywords.h \
-crypto/proposal/proposal_keywords_static.h \
+crypto/proposal/proposal_keywords.h crypto/proposal/proposal_keywords_static.h \
crypto/prfs/prf.h crypto/prfs/mac_prf.h crypto/rngs/rng.h crypto/nonce_gen.h \
crypto/prf_plus.h crypto/signers/signer.h crypto/signers/mac_signer.h \
crypto/crypto_factory.h crypto/crypto_tester.h crypto/diffie_hellman.h \
pkcs7_signed_data.h pkcs7_signed_data.c \
pkcs7_enveloped_data.h pkcs7_enveloped_data.c \
pkcs7_data.h pkcs7_data.c \
+ pkcs7_attributes.h pkcs7_attributes.c \
pkcs7_plugin.h pkcs7_plugin.c
libstrongswan_pkcs7_la_LDFLAGS = -module -avoid-version
#include <asn1/asn1_parser.h>
#include <collections/linked_list.h>
-#include "pkcs9.h"
+#include "pkcs7_attributes.h"
-typedef struct private_pkcs9_t private_pkcs9_t;
+typedef struct private_pkcs7_attributes_t private_pkcs7_attributes_t;
typedef struct attribute_t attribute_t;
/**
- * Private data of a pkcs9_t attribute list.
+ * Private data of a pkcs7_attributes_t attribute list.
*/
-struct private_pkcs9_t {
+struct private_pkcs7_attributes_t {
/**
* Public interface
*/
- pkcs9_t public;
+ pkcs7_attributes_t public;
/**
* DER encoding of PKCS#9 attributes
/**
* Build encoding of the attribute list
*/
-static void build_encoding(private_pkcs9_t *this)
+static void build_encoding(private_pkcs7_attributes_t *this)
{
enumerator_t *enumerator;
attribute_t *attribute;
free(chunks);
}
-METHOD(pkcs9_t, get_encoding, chunk_t,
- private_pkcs9_t *this)
+METHOD(pkcs7_attributes_t, get_encoding, chunk_t,
+ private_pkcs7_attributes_t *this)
{
if (!this->encoding.len)
{
return this->encoding;
}
-METHOD(pkcs9_t, get_attribute, chunk_t,
- private_pkcs9_t *this, int oid)
+METHOD(pkcs7_attributes_t, get_attribute, chunk_t,
+ private_pkcs7_attributes_t *this, int oid)
{
enumerator_t *enumerator;
chunk_t value = chunk_empty;
return chunk_empty;
}
-METHOD(pkcs9_t, add_attribute, void,
- private_pkcs9_t *this, int oid, chunk_t value)
+METHOD(pkcs7_attributes_t, add_attribute, void,
+ private_pkcs7_attributes_t *this, int oid, chunk_t value)
{
this->attributes->insert_last(this->attributes,
attribute_create(oid, value));
chunk_free(&this->encoding);
}
-METHOD(pkcs9_t, destroy, void,
- private_pkcs9_t *this)
+METHOD(pkcs7_attributes_t, destroy, void,
+ private_pkcs7_attributes_t *this)
{
this->attributes->destroy_function(this->attributes,
(void*)attribute_destroy);
/*
* Described in header.
*/
-pkcs9_t *pkcs9_create(void)
+pkcs7_attributes_t *pkcs7_attributes_create(void)
{
- private_pkcs9_t *this;
+ private_pkcs7_attributes_t *this;
INIT(this,
.public = {
/**
* Parse a PKCS#9 attribute list
*/
-static bool parse_attributes(chunk_t chunk, int level0, private_pkcs9_t* this)
+static bool parse_attributes(chunk_t chunk, int level0,
+ private_pkcs7_attributes_t* this)
{
asn1_parser_t *parser;
chunk_t object;
/*
* Described in header.
*/
-pkcs9_t *pkcs9_create_from_chunk(chunk_t chunk, u_int level)
+pkcs7_attributes_t *pkcs7_attributes_create_from_chunk(chunk_t chunk,
+ u_int level)
{
- private_pkcs9_t *this = (private_pkcs9_t*)pkcs9_create();
+ private_pkcs7_attributes_t *this;
+ this = (private_pkcs7_attributes_t*)pkcs7_attributes_create();
this->encoding = chunk_clone(chunk);
if (!parse_attributes(chunk, level, this))
{
*/
/**
- * @defgroup pkcs9 pkcs9
- * @{ @ingroup crypto
+ * @defgroup pkcs7_attributes pkcs7_attributes
+ * @{ @ingroup pkcs7
*/
-#ifndef PKCS9_H_
-#define PKCS9_H_
+#ifndef PKCS7_ATTRIBUTES_H_
+#define PKCS7_ATTRIBUTES_H_
-typedef struct pkcs9_t pkcs9_t;
+typedef struct pkcs7_attributes_t pkcs7_attributes_t;
#include <library.h>
/**
- * PKCS#9 attribute lists.
+ * PKCS#7 attribute lists, aka PKCS#9.
*/
-struct pkcs9_t {
+struct pkcs7_attributes_t {
/**
* Gets ASN.1 encoding of PKCS#9 attribute list.
*
* @return ASN.1 encoded PKCSI#9 list
*/
- chunk_t (*get_encoding) (pkcs9_t *this);
+ chunk_t (*get_encoding) (pkcs7_attributes_t *this);
/**
* Gets a PKCS#9 attribute from the list.
* @param oid OID of the attribute
* @return value of the attribute (internal data)
*/
- chunk_t (*get_attribute) (pkcs9_t *this, int oid);
+ chunk_t (*get_attribute) (pkcs7_attributes_t *this, int oid);
/**
* Adds a PKCS#9 attribute.
* @param oid OID of the attribute
* @param value value of the attribute, with ASN1 type (gets owned)
*/
- void (*add_attribute) (pkcs9_t *this, int oid, chunk_t value);
+ void (*add_attribute) (pkcs7_attributes_t *this, int oid, chunk_t value);
/**
* Destroys the PKCS#9 attribute list.
*/
- void (*destroy) (pkcs9_t *this);
+ void (*destroy) (pkcs7_attributes_t *this);
};
/**
- * Read a PKCS#9 attribute list from a DER encoded chunk.
+ * Read a PKCS#7 attribute list (aka PKCS#9) from a DER encoded chunk.
*
* @param chunk chunk containing DER encoded data
* @param level ASN.1 parsing start level
* @return created pkcs9 attribute list, or NULL if invalid.
*/
-pkcs9_t *pkcs9_create_from_chunk(chunk_t chunk, u_int level);
+pkcs7_attributes_t *pkcs7_attributes_create_from_chunk(chunk_t chunk, u_int level);
/**
- * Create an empty PKCS#9 attribute list
+ * Create an empty PKCS#7 attribute list, aka PKCS#9.
*
* @return created pkcs9 attribute list.
*/
-pkcs9_t *pkcs9_create(void);
+pkcs7_attributes_t *pkcs7_attributes_create(void);
#endif /** PKCS9_H_ @}*/
*/
#include "pkcs7_signed_data.h"
+#include "pkcs7_attributes.h"
#include <time.h>
#include <asn1/oid.h>
#include <asn1/asn1.h>
#include <asn1/asn1_parser.h>
-#include <crypto/pkcs9.h>
#include <credentials/sets/mem_cred.h>
#include <credentials/certificates/x509.h>
#include <credentials/keys/private_key.h>
/**
* Signed attributes of signerInfo
*/
- pkcs9_t *attributes;
+ pkcs7_attributes_t *attributes;
/**
* Serial of signing certificate
break;
case PKCS7_AUTH_ATTRIBUTES:
*object.ptr = ASN1_SET;
- info->attributes = pkcs9_create_from_chunk(object, level+1);
+ info->attributes = pkcs7_attributes_create_from_chunk(
+ object, level+1);
*object.ptr = ASN1_CONTEXT_C_0;
break;
case PKCS7_DIGEST_ALGORITHM:
* Generate a new PKCS#7 signed-data container
*/
static bool generate(private_pkcs7_signed_data_t *this, private_key_t *key,
- certificate_t *cert, hash_algorithm_t alg, pkcs9_t *pkcs9)
+ certificate_t *cert, hash_algorithm_t alg,
+ pkcs7_attributes_t *pkcs9)
{
chunk_t authenticatedAttributes = chunk_empty;
chunk_t encryptedDigest = chunk_empty;
hash_algorithm_t alg = HASH_SHA1;
private_key_t *key = NULL;
certificate_t *cert = NULL;
- pkcs9_t *pkcs9;
+ pkcs7_attributes_t *pkcs9;
chunk_t value;
int oid;
- pkcs9 = pkcs9_create();
+ pkcs9 = pkcs7_attributes_create();
while (TRUE)
{
#include <asn1/asn1.h>
#include <asn1/asn1_parser.h>
#include <asn1/oid.h>
-#include <crypto/pkcs9.h>
#include <crypto/rngs/rng.h>
#include <crypto/hashers/hasher.h>