diff options
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(), |