]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
added create_certificate_iterator() method
authorAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 12 Oct 2007 21:57:20 +0000 (21:57 -0000)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 12 Oct 2007 21:57:20 +0000 (21:57 -0000)
src/libstrongswan/crypto/pkcs7.c
src/libstrongswan/crypto/pkcs7.h

index 7fbc1e36f1a770df8609fc11060ee3a10236891a..6ccb0ef56f18a65601c608abfa9c4c9868ee6268 100644 (file)
@@ -618,12 +618,20 @@ static chunk_t get_data(private_pkcs7_t *this)
        return this->data;
 }
 
+/**
+ * Implements pkcs_t.create_crluri_iterator
+ */
+static iterator_t *create_certificate_iterator(const private_pkcs7_t *this)
+{
+       return this->certs->create_iterator(this->certs, TRUE);
+}
+
 /**
  * Implements pkcs7_t.destroy
  */
 static void destroy(private_pkcs7_t *this)
 {
-       this->certs->destroy(this->certs);
+       this->certs->destroy_offset(this->certs, offsetof(x509_t, destroy));
        free(this->data.ptr);
        free(this);
 }
@@ -690,6 +698,7 @@ pkcs7_t *pkcs7_create_from_chunk(chunk_t chunk, u_int level)
        this->public.parse_signedData = (bool (*) (pkcs7_t*,x509_t*))parse_signedData;
        this->public.parse_envelopedData = (bool (*) (pkcs7_t*,chunk_t,rsa_private_key_t*))parse_envelopedData;
        this->public.get_data = (chunk_t (*) (pkcs7_t*))get_data;
+       this->public.create_certificate_iterator = (iterator_t* (*) (pkcs7_t*))create_certificate_iterator;
        this->public.destroy = (void (*) (pkcs7_t*))destroy;
 
        if (!parse_contentInfo(chunk, level, this))
index c8473c529da3b5859286febc055c5a1970c25523..9886e77798f1e3d4896bf60982e3d6c345f56c3f 100644 (file)
@@ -32,12 +32,10 @@ typedef struct pkcs7_t pkcs7_t;
 #include <library.h>
 #include <crypto/x509.h>
 #include <crypto/rsa/rsa_private_key.h>
-
-/* Access structure for a PKCS#7 ContentInfo object */
-
+#include <utils/iterator.h>
 
 /**
- * @brief PKCS#7 ContentInfo object.
+ * @brief PKCS#7 contentInfo object.
  * 
  * @b Constructors:
  *  -pkcs7_create_from_chunk()
@@ -104,6 +102,14 @@ struct pkcs7_t {
         */
        chunk_t (*get_data) (pkcs7_t *this);
 
+       /**
+        * @brief Create an iterator for the certificates.
+        * 
+        * @param this                          calling object
+        * @return                                      iterator for the certificates
+        */
+       iterator_t *(*create_certificate_iterator) (pkcs7_t *this);
+
        /**
         * @brief Destroys the contentInfo object.
         *