diff options
author | Martin Willi <martin@revosec.ch> | 2012-11-27 17:35:30 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-12-19 10:32:08 +0100 |
commit | 9e967d7dda60d9da2a4dc0c8c059af033f4cb18a (patch) | |
tree | a0193b223dcf3d92804fc5c9cddb8484cf33339a /src | |
parent | 9afbe59953889e14aa3c3846b90ae49442f2c552 (diff) | |
download | strongswan-9e967d7dda60d9da2a4dc0c8c059af033f4cb18a.tar.bz2 strongswan-9e967d7dda60d9da2a4dc0c8c059af033f4cb18a.tar.xz |
Add an enumerator for PKCS#7 contained certificates
Diffstat (limited to 'src')
4 files changed, 17 insertions, 0 deletions
diff --git a/src/libstrongswan/credentials/containers/pkcs7.h b/src/libstrongswan/credentials/containers/pkcs7.h index 68125cdc0..d79650e74 100644 --- a/src/libstrongswan/credentials/containers/pkcs7.h +++ b/src/libstrongswan/credentials/containers/pkcs7.h @@ -48,6 +48,13 @@ struct pkcs7_t { */ bool (*get_attribute)(pkcs7_t *this, int oid, enumerator_t *enumerator, chunk_t *value); + + /** + * Create an enumerator over attached certificates. + * + * @return enumerator over certificate_t + */ + enumerator_t* (*create_cert_enumerator)(pkcs7_t *this); }; #endif /** PKCS7_H_ @}*/ diff --git a/src/libstrongswan/plugins/pkcs7/pkcs7_data.c b/src/libstrongswan/plugins/pkcs7/pkcs7_data.c index d0e7e1c75..06816095c 100644 --- a/src/libstrongswan/plugins/pkcs7/pkcs7_data.c +++ b/src/libstrongswan/plugins/pkcs7/pkcs7_data.c @@ -99,6 +99,7 @@ static private_pkcs7_data_t* create_empty() .destroy = _destroy, }, .get_attribute = (void*)return_false, + .create_cert_enumerator = (void*)enumerator_create_empty, }, ); diff --git a/src/libstrongswan/plugins/pkcs7/pkcs7_enveloped_data.c b/src/libstrongswan/plugins/pkcs7/pkcs7_enveloped_data.c index d9bff41e5..6c57ca71e 100644 --- a/src/libstrongswan/plugins/pkcs7/pkcs7_enveloped_data.c +++ b/src/libstrongswan/plugins/pkcs7/pkcs7_enveloped_data.c @@ -380,6 +380,7 @@ static private_pkcs7_enveloped_data_t* create_empty() .get_encoding = _get_encoding, .destroy = _destroy, }, + .create_cert_enumerator = (void*)enumerator_create_empty, .get_attribute = (void*)return_false, }, ); diff --git a/src/libstrongswan/plugins/pkcs7/pkcs7_signed_data.c b/src/libstrongswan/plugins/pkcs7/pkcs7_signed_data.c index 5ec5684f4..1fffdc3a5 100644 --- a/src/libstrongswan/plugins/pkcs7/pkcs7_signed_data.c +++ b/src/libstrongswan/plugins/pkcs7/pkcs7_signed_data.c @@ -330,6 +330,13 @@ METHOD(pkcs7_t, get_attribute, bool, return FALSE; } +METHOD(pkcs7_t, create_cert_enumerator, enumerator_t*, + private_pkcs7_signed_data_t *this) +{ + return this->creds->set.create_cert_enumerator(&this->creds->set, + CERT_ANY, KEY_ANY, NULL, FALSE); +} + METHOD(container_t, get_data, bool, private_pkcs7_signed_data_t *this, chunk_t *data) { @@ -375,6 +382,7 @@ static private_pkcs7_signed_data_t* create_empty() .destroy = _destroy, }, .get_attribute = _get_attribute, + .create_cert_enumerator = _create_cert_enumerator, }, .creds = mem_cred_create(), .signerinfos = linked_list_create(), |