From: Martin Willi Date: Tue, 27 Nov 2012 16:35:30 +0000 (+0100) Subject: Add an enumerator for PKCS#7 contained certificates X-Git-Tag: 5.0.2dr4~73 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9e967d7dda60d9da2a4dc0c8c059af033f4cb18a;p=thirdparty%2Fstrongswan.git Add an enumerator for PKCS#7 contained certificates --- diff --git a/src/libstrongswan/credentials/containers/pkcs7.h b/src/libstrongswan/credentials/containers/pkcs7.h index 68125cdc0d..d79650e745 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 d0e7e1c759..06816095c8 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 d9bff41e55..6c57ca71e8 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 5ec5684f42..1fffdc3a53 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(),