Removed len argument from proposal_get_token()
[strongswan.git] / src / libstrongswan / crypto / pkcs7.h
index ce3a6ac..7c9a6b0 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * Copyright (C) 2005 Jan Hutter, Martin Willi
  * Copyright (C) 2002-2008 Andreas Steffen
- *
  * Hochschule fuer Technik Rapperswil, Switzerland
  *
  * This program is free software; you can redistribute it and/or modify it
  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * for more details.
- *
- * $Id$
  */
+
 /**
  * @defgroup pkcs7 pkcs7
  * @{ @ingroup crypto
 typedef struct pkcs7_t pkcs7_t;
 
 #include <library.h>
-#include <credentials/certificates/x509.h>
 #include <credentials/keys/private_key.h>
 #include <crypto/pkcs9.h>
 #include <crypto/crypters/crypter.h>
-#include <utils/iterator.h>
+#include <utils/enumerator.h>
 
 /**
  * PKCS#7 contentInfo object.
  */
 struct pkcs7_t {
+
        /**
         * Check if the PKCS#7 contentType is data
-        * 
+        *
         * @return                              TRUE if the contentType is data
         */
        bool (*is_data) (pkcs7_t *this);
 
        /**
         * Check if the PKCS#7 contentType is signedData
-        * 
+        *
         * @return                              TRUE if the contentType is signedData
         */
        bool (*is_signedData) (pkcs7_t *this);
 
        /**
         * Check if the PKCS#7 contentType is envelopedData
-        * 
+        *
         * @return                              TRUE if the contentType is envelopedData
         */
        bool (*is_envelopedData) (pkcs7_t *this);
 
        /**
         * Parse a PKCS#7 data content.
-        * 
+        *
         * @return                              TRUE if parsing was successful
         */
        bool (*parse_data) (pkcs7_t *this);
 
        /**
-        * Parse a PKCS#7 signedData content.
-        * 
+        * Parse a PKCS#7 signedData content.  The contained PKCS#7 data is parsed
+        * and verified.
+        *
         * @param cacert                cacert used to verify the signature
         * @return                              TRUE if parsing was successful
         */
-       bool (*parse_signedData) (pkcs7_t *this, x509_t *cacert);
+       bool (*parse_signedData) (pkcs7_t *this, certificate_t *cacert);
 
        /**
         * Parse a PKCS#7 envelopedData content.
-        * 
+        *
         * @param serialNumber  serialNumber of the request
         * @param key                   private key used to decrypt the symmetric key
         * @return                              TRUE if parsing was successful
         */
-       bool (*parse_envelopedData) (pkcs7_t *this, chunk_t serialNumber, private_key_t *key);
+       bool (*parse_envelopedData) (pkcs7_t *this, chunk_t serialNumber,
+                                                                private_key_t *key);
 
        /**
         * Returns the parsed data object
@@ -98,27 +97,34 @@ struct pkcs7_t {
        chunk_t (*get_contentInfo) (pkcs7_t *this);
 
        /**
-        * Create an iterator for the certificates.
-        * 
-        * @return                              iterator for the certificates
+        * Create an enumerator for the certificates.
+        *
+        * @return                              enumerator for the certificates
         */
-       iterator_t *(*create_certificate_iterator) (pkcs7_t *this);
+       enumerator_t *(*create_certificate_enumerator) (pkcs7_t *this);
 
        /**
         * Add a certificate.
-        * 
-        * @param cert                  certificate to be included
+        *
+        * @param cert                  certificate to be included (gets adopted)
         */
-       void (*set_certificate) (pkcs7_t *this, x509_t *cert);
+       void (*set_certificate) (pkcs7_t *this, certificate_t *cert);
 
        /**
         * Add authenticated attributes.
-        * 
-        * @param attributes    attributes to be included
+        *
+        * @param attributes    attributes to be included (gets adopted)
         */
        void (*set_attributes) (pkcs7_t *this, pkcs9_t *attributes);
 
        /**
+        * Get attributes.
+        *
+        * @return                              attributes (internal data)
+        */
+       pkcs9_t *(*get_attributes) (pkcs7_t *this);
+
+       /**
         * Build a data object
         *
         * @return                              TRUE if build was successful
@@ -130,10 +136,11 @@ struct pkcs7_t {
         *
         * @param cert                  receivers's certificate
         * @param alg                   encryption algorithm
+        * @param key_size              key size to use
         * @return                              TRUE if build was successful
         */
-       bool (*build_envelopedData) (pkcs7_t *this, x509_t *cert,
-                                                                encryption_algorithm_t alg);
+       bool (*build_envelopedData) (pkcs7_t *this, certificate_t *cert,
+                                                                encryption_algorithm_t alg, size_t key_size);
 
        /**
         * Build an signedData object
@@ -153,28 +160,19 @@ struct pkcs7_t {
 
 /**
  * Read a PKCS#7 contentInfo object from a DER encoded chunk.
- * 
+ *
  * @param chunk                chunk containing DER encoded data
  * @param level                ASN.1 parsing start level
- * @return                     created pkcs7_contentInfo object, or NULL if invalid.
+ * @return                     created pkcs7_contentInfo object, or NULL if invalid.
  */
 pkcs7_t *pkcs7_create_from_chunk(chunk_t chunk, u_int level);
 
 /**
  * Create a PKCS#7 contentInfo object
- * 
+ *
  * @param data                 chunk containing data
- * @return                             created pkcs7_contentInfo object.
+ * @return                             created pkcs7_contentInfo object.
  */
 pkcs7_t *pkcs7_create_from_data(chunk_t data);
 
-/**
- * Read a X.509 certificate from a DER encoded file.
- * 
- * @param filename     file containing DER encoded data
- * @param label                label describing kind of PKCS#7 file
- * @return                     created pkcs7_t object, or NULL if invalid.
- */
-pkcs7_t *pkcs7_create_from_file(const char *filename, const char *label);
-
 #endif /** PKCS7_H_ @}*/