cryptoservices/certificateandkeymgmt/inc/pkcs7encrypteddataobject.h
changeset 8 35751d3474b7
parent 0 2c201484c85f
--- a/cryptoservices/certificateandkeymgmt/inc/pkcs7encrypteddataobject.h	Tue Jul 21 01:04:32 2009 +0100
+++ b/cryptoservices/certificateandkeymgmt/inc/pkcs7encrypteddataobject.h	Thu Sep 10 14:01:51 2009 +0300
@@ -1,195 +1,193 @@
-/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-
-
-
-/**
- @file
- @publishedPartner
- @released 
-*/
-
-#ifndef __PKCS7_ENCRYPTED_DATA_OBJECT_H__
-#define __PKCS7_ENCRYPTED_DATA_OBJECT_H__
-
-#include <asn1dec.h>
-#include <signed.h>
-#include <pbedata.h>
-#include <asnpkcs.h>
-#include <pkcs7contentinfo_v2.h>
-#include <pkcs12kdf.h>
-
-/**
- A representation of a PKCS7 (Encrypted data) entity
- This class decodes the PKCS7 Encrypted Data content. 
- It provides various exported methods which will 
- return the values present in the EncryptedData ::= SEQUENCE.
- */
-class CPKCS7EncryptedDataObject : public CBase
-	{
-public:
-	enum TContentType
-	/**
-	 Identifies the type of ContentType present in the EncryptedContentInfo ::= SEQUENCE
-	 */
-		{
-	    EPkcs7Data = 1
-		};  
-		
-   	/**
-	 Creates a new PKCS#7 EncryptedData object. 
-	 @param     aContentInfo contains a reference to CPKCS7ContentInfo.
-	 @return    A pointer to the newly allocated object.
-	 */
-	IMPORT_C static CPKCS7EncryptedDataObject* NewL(const CPKCS7ContentInfo& aContentInfo);
-	
-	/**
-	 Destructor.
-	 */
-	virtual ~CPKCS7EncryptedDataObject();
-    /**
-     Provides access to the version number within the EncryptedData SEQUENCE.
-     Version is the syntax version number.It shall be 0 for this version of the standard
-	 @return    The version number
-	 */ 
-    IMPORT_C TInt Version() const;
-    
-	/**
-	 Provides access to the ContentType present within the EncryptedContentInfo. 
-	 ContentType indicates the type of content.This is represented using the OID.
-     @return    ContentType present in the EncryptedContentInfo structure.
-     */ 
-    IMPORT_C CPKCS7EncryptedDataObject::TContentType ContentType() const;
-    
-    /**
-     Provides access to the encryptedContent within the EncryptedContentInfo SEQUENCE.
-     encryptedContent is OPTIONAL in EncryptedContentInfo SEQUENCE
-     This will return a NULL pointer in case there is no encryptedContent
-	 @return    The encryptedContent
-     */
-	IMPORT_C const TDesC8& EncryptedContentInfoData() const;
-	
-    /**
-     Provides access to the contentEncryptionAlgorithm within the 
-     EncryptedContentInfo SEQUENCE.
-	 @return    A CPBEncryptParms object which has the Encrypt Parameters 
-     			EncryptedContent present in EncryptedContentInfo Sequence
-     */
-    IMPORT_C const CPBEncryptParms& EncryptParams() const;
-    
-    /**
-	 This method decrypts the encrypted information. The caller assumes 
-	 ownership of the returned object.
-	 @param     aPassword is the password used for decryption.
-	 @return    The plaintext data obtained after decryption.
-	 @leave     KErrNotSupported if otherthan pkcs12 pbeIds used.
-	 @leave     KErrGeneral if decrypt descriptor length is less than 0.
-	 @see		PKCS12KDF, TPBPassword, CPBEncryptElement, CPBDecryptor.
-	 */
-	IMPORT_C HBufC8* DecryptDataL(const TDesC& aPassword) const;
-	
-private:
-	/**
-	 Constructor.
-	 */
-    CPKCS7EncryptedDataObject(void);
-    
-    /**
-     Copy Constructor.
-     @param aEncryptedDataObject A CPKCS7EncryptedDataObject object.
-     */
-    CPKCS7EncryptedDataObject(const CPKCS7EncryptedDataObject& aEncryptedDataObject);
-    
-    /**
-	 Assignment operator.
-	 @param aEncryptedDataObject A CPKCS7EncryptedDataObject object.
-	 @return A reference to CPKCS7EncryptedDataObject class.
-	 */
-	CPKCS7EncryptedDataObject& operator=(const CPKCS7EncryptedDataObject& aEncryptedDataObject);
-    
-    /**    	
-     This decrypt the encrypted data. Below is the ASN1 syntax.
-	 
-	 EncryptedData ::= SEQUENCE
-	  	 {
-	     version                Version,
-	     encryptedContentInfo   EncryptedContentInfo
-	  	 } 
-	 EncryptedContentInfo ::= SEQUENCE 
-	  	 {
-	     contentType                 PKCS7-CONTENT-TYPE.&id({PKCS7ContentTable}),
-	     contentEncryptionAlgorithm  ContentEncryptionAlgorithmIdentifier,
-	     encryptedContent            [0]  ENCRYPTED{PKCS7-CONTENT-TYPE.&Type({PKCS7ContentTable}{@.contentType})} OPTIONAL
-	  	 }
-	 EncryptedContent ::= OCTET STRING
-	 
-	 ContentInfo ::= SEQUENCE 
-	  	{
-	    contentType ContentType,
-	    content[0] EXPLICIT ANY DEFINED BY contentType OPTIONAL 
-	  	}
-	 ContentType ::= OBJECT IDENTIFIER
-	 
-	 @param 	aContentInfo Contains a reference to  CPKCS7ContentInfo
-	 @leave		KErrArgument if the data is not valid PKCS#7 EncryptedData Structure.
-	 @see       CPKCS7ContentInfo
-     */
-	void ConstructL(const CPKCS7ContentInfo& aContentInfo);
-	
-	/**
-     Provides access to the Encrypt Parameters present within the 
-     ContentEncryptionAlgorithm Sequence. Below is the ASN1 Syntax.
-     
-     ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-     AlgorithmIdentifier: A type that identifies an algorithm (by object identifier) and associated parameters
-     AlgorithmIdentifier ::= SEQUENCE 
-               {
-               algorithm   ALGORITHM.&id({SupportedAlgorithms}),
-               parameters  ALGORITHM.&Type({SupportedAlgorithms}{@ algorithm}) OPTIONAL
-               }
-
-	 @param     aBinaryData  which is the ContentEncryptionAlgorithmIdentifier
-	            and is AlgorithIdentifier Type.
-	            AlgorithmIdentifier: A type that identifies an 
-	            algorithm (by object identifier) and associated parameters.
-     @return    Encrypt Parameters. This Identifies the 
-	            content-encryption algorithm (and any associated parameters) 
-	            under which the content is encrypted.
-	 @leave     KErrArgument if the data is not valid PKCS#7 ContentEncryptionAlgorithm 
-	 			sequence.
-	 @see 	    CPBEncryptParms, TASN1DecPKCS5.
-     */ 
-    CPBEncryptParms* DecodeContentEncryptionAlgorithmL(const TDesC8& aBinaryData) const;
-    
-	
-private:
-     /** version is the syntax version number in PKCS#7 EncryptedData ::= SEQUENCE*/
-     TInt iVersion;
-     
-	 /** Indicates the type of content in PKCS7 EncryptedContentInfo Sequence */
-	 TContentType iContentType;
-	 
-	 /** Identifies the content-encryption algorithm (and any associated parameters) 
-	     under which the content is encrypted */
-     CPBEncryptParms* iEncryptParams;
-          
-	 /** Contains the encrypted content */
-	 TPtrC8 iEncryptedContent;
-};
- 
-#endif //__PKCS7_ENCRYPTED_DATA_OBJECT_H__
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+/**
+ @file
+ @publishedPartner
+ @released 
+*/
+
+#ifndef __PKCS7_ENCRYPTED_DATA_OBJECT_H__
+#define __PKCS7_ENCRYPTED_DATA_OBJECT_H__
+
+#include <asn1dec.h>
+#include <signed.h>
+#include <pbedata.h>
+#include <asnpkcs.h>
+#include <pkcs7contentinfo_v2.h>
+#include <pkcs12kdf.h>
+
+/**
+ A representation of a PKCS7 (Encrypted data) entity
+ This class decodes the PKCS7 Encrypted Data content. 
+ It provides various exported methods which will 
+ return the values present in the EncryptedData ::= SEQUENCE.
+ */
+class CPKCS7EncryptedDataObject : public CBase
+	{
+public:
+	enum TContentType
+	/**
+	 Identifies the type of ContentType present in the EncryptedContentInfo ::= SEQUENCE
+	 */
+		{
+	    EPkcs7Data = 1
+		};  
+		
+   	/**
+	 Creates a new PKCS#7 EncryptedData object. 
+	 @param     aContentInfo contains a reference to CPKCS7ContentInfo.
+	 @return    A pointer to the newly allocated object.
+	 */
+	IMPORT_C static CPKCS7EncryptedDataObject* NewL(const CPKCS7ContentInfo& aContentInfo);
+	
+	/**
+	 Destructor.
+	 */
+	virtual ~CPKCS7EncryptedDataObject();
+    /**
+     Provides access to the version number within the EncryptedData SEQUENCE.
+     Version is the syntax version number.It shall be 0 for this version of the standard
+	 @return    The version number
+	 */ 
+    IMPORT_C TInt Version() const;
+    
+	/**
+	 Provides access to the ContentType present within the EncryptedContentInfo. 
+	 ContentType indicates the type of content.This is represented using the OID.
+     @return    ContentType present in the EncryptedContentInfo structure.
+     */ 
+    IMPORT_C CPKCS7EncryptedDataObject::TContentType ContentType() const;
+    
+    /**
+     Provides access to the encryptedContent within the EncryptedContentInfo SEQUENCE.
+     encryptedContent is OPTIONAL in EncryptedContentInfo SEQUENCE
+     This will return a NULL pointer in case there is no encryptedContent
+	 @return    The encryptedContent
+     */
+	IMPORT_C const TDesC8& EncryptedContentInfoData() const;
+	
+    /**
+     Provides access to the contentEncryptionAlgorithm within the 
+     EncryptedContentInfo SEQUENCE.
+	 @return    A CPBEncryptParms object which has the Encrypt Parameters 
+     			EncryptedContent present in EncryptedContentInfo Sequence
+     */
+    IMPORT_C const CPBEncryptParms& EncryptParams() const;
+    
+    /**
+	 This method decrypts the encrypted information. The caller assumes 
+	 ownership of the returned object.
+	 @param     aPassword is the password used for decryption.
+	 @return    The plaintext data obtained after decryption.
+	 @leave     KErrNotSupported if otherthan pkcs12 pbeIds used.
+	 @leave     KErrGeneral if decrypt descriptor length is less than 0.
+	 @see		PKCS12KDF, TPBPassword, CPBEncryptElement, CPBDecryptor.
+	 */
+	IMPORT_C HBufC8* DecryptDataL(const TDesC& aPassword) const;
+	
+private:
+	/**
+	 Constructor.
+	 */
+    CPKCS7EncryptedDataObject(void);
+    
+    /**
+     Copy Constructor.
+     @param aEncryptedDataObject A CPKCS7EncryptedDataObject object.
+     */
+    CPKCS7EncryptedDataObject(const CPKCS7EncryptedDataObject& aEncryptedDataObject);
+    
+    /**
+	 Assignment operator.
+	 @param aEncryptedDataObject A CPKCS7EncryptedDataObject object.
+	 @return A reference to CPKCS7EncryptedDataObject class.
+	 */
+	CPKCS7EncryptedDataObject& operator=(const CPKCS7EncryptedDataObject& aEncryptedDataObject);
+    
+    /**    	
+     This decrypt the encrypted data. Below is the ASN1 syntax.
+	 
+	 EncryptedData ::= SEQUENCE
+	  	 {
+	     version                Version,
+	     encryptedContentInfo   EncryptedContentInfo
+	  	 } 
+	 EncryptedContentInfo ::= SEQUENCE 
+	  	 {
+	     contentType                 PKCS7-CONTENT-TYPE.&id({PKCS7ContentTable}),
+	     contentEncryptionAlgorithm  ContentEncryptionAlgorithmIdentifier,
+	     encryptedContent            [0]  ENCRYPTED{PKCS7-CONTENT-TYPE.&Type({PKCS7ContentTable}{@.contentType})} OPTIONAL
+	  	 }
+	 EncryptedContent ::= OCTET STRING
+	 
+	 ContentInfo ::= SEQUENCE 
+	  	{
+	    contentType ContentType,
+	    content[0] EXPLICIT ANY DEFINED BY contentType OPTIONAL 
+	  	}
+	 ContentType ::= OBJECT IDENTIFIER
+	 
+	 @param 	aContentInfo Contains a reference to  CPKCS7ContentInfo
+	 @leave		KErrArgument if the data is not valid PKCS#7 EncryptedData Structure.
+	 @see       CPKCS7ContentInfo
+     */
+	void ConstructL(const CPKCS7ContentInfo& aContentInfo);
+	
+	/**
+     Provides access to the Encrypt Parameters present within the 
+     ContentEncryptionAlgorithm Sequence. Below is the ASN1 Syntax.
+     
+     ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+     AlgorithmIdentifier: A type that identifies an algorithm (by object identifier) and associated parameters
+     AlgorithmIdentifier ::= SEQUENCE 
+               {
+               algorithm   ALGORITHM.&id({SupportedAlgorithms}),
+               parameters  ALGORITHM.&Type({SupportedAlgorithms}{@ algorithm}) OPTIONAL
+               }
+
+	 @param     aBinaryData  which is the ContentEncryptionAlgorithmIdentifier
+	            and is AlgorithIdentifier Type.
+	            AlgorithmIdentifier: A type that identifies an 
+	            algorithm (by object identifier) and associated parameters.
+     @return    Encrypt Parameters. This Identifies the 
+	            content-encryption algorithm (and any associated parameters) 
+	            under which the content is encrypted.
+	 @leave     KErrArgument if the data is not valid PKCS#7 ContentEncryptionAlgorithm 
+	 			sequence.
+	 @see 	    CPBEncryptParms, TASN1DecPKCS5.
+     */ 
+    CPBEncryptParms* DecodeContentEncryptionAlgorithmL(const TDesC8& aBinaryData) const;
+    
+	
+private:
+     /** version is the syntax version number in PKCS#7 EncryptedData ::= SEQUENCE*/
+     TInt iVersion;
+     
+	 /** Indicates the type of content in PKCS7 EncryptedContentInfo Sequence */
+	 TContentType iContentType;
+	 
+	 /** Identifies the content-encryption algorithm (and any associated parameters) 
+	     under which the content is encrypted */
+     CPBEncryptParms* iEncryptParams;
+          
+	 /** Contains the encrypted content */
+	 TPtrC8 iEncryptedContent;
+};
+ 
+#endif //__PKCS7_ENCRYPTED_DATA_OBJECT_H__