secsrv_plat/cms_api/inc/CCMSAuthenticatedData.h
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secsrv_plat/cms_api/inc/CCMSAuthenticatedData.h	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,331 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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:  CMS AuthenticatedData type
+*
+*/
+
+
+
+#ifndef CCMSAuthenticatedData_H
+#define CCMSAuthenticatedData_H
+
+//  INCLUDES
+#include "CCMSSequence.h"
+#include "CCMSEncapsulatedContentInfo.h"
+#include "CCMSX509AlgorithmIdentifier.h"
+#include <badesca.h>
+
+// FORWARD DECLARATIONS
+// Extension
+
+class MCMSAuthenticatedDataExtension;
+class CCMSOriginatorInfo;
+class CCMSRecipientInfo;
+class CCMSAttribute;
+class CCMSCertificateChoices;
+class CCMSX509CertificateList;
+
+// CLASS DECLARATION
+/**
+*  AuthenticatedData type module
+*
+*  ASN.1 Definition:
+*
+*     AuthenticatedData ::= SEQUENCE {
+*        version CMSVersion,
+*        originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+*        recipientInfos RecipientInfos,
+*        macAlgorithm MessageAuthenticationCodeAlgorithm,
+*        digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
+*        encapContentInfo EncapsulatedContentInfo,
+*        authenticatedAttributes [2] IMPLICIT AuthAttributes OPTIONAL,
+*        mac MessageAuthenticationCode,
+*        unauthenticatedAttributes [3] IMPLICIT UnauthAttributes OPTIONAL }
+*
+*     AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
+*     UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
+* 
+*     RecipientInfos ::= SET OF RecipientInfo
+*
+*     MessageAuthenticationCode ::= OCTET STRING
+* 
+*     MessageAuthenticationCodeAlgorithm ::= AlgorithmIdentifier
+*     DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+*
+*  @lib cms.lib
+*  @since 3.0
+*/
+class CCMSAuthenticatedData : public CCMSSequence
+    {
+    private:
+        /**
+         * Container for the actual data
+         */
+        NONSHARABLE_CLASS( CAuthenticatedDataData ) : public CBase
+            {
+            public: // destructor
+                ~CAuthenticatedDataData();
+
+            public: // data
+                // version
+                TInt iVersion;
+
+                // originatorInfo, owned
+                CCMSOriginatorInfo* iOriginatorInfo;
+                
+                // recipientInfos, owned
+                CArrayPtr< CCMSRecipientInfo >* iRecipientInfos;
+
+                // macAlgorithm, owned
+                CCMSX509AlgorithmIdentifier* iMacAlgorithm;
+
+                // digestAlgorithm, owned
+                CCMSX509AlgorithmIdentifier* iDigestAlgorithm;
+
+                // encapContentInfo, owned
+                CCMSEncapsulatedContentInfo* iEncapContentInfo;
+
+                // authenticatedAttributes, owned
+                CArrayPtr< CCMSAttribute >* iAuthenticatedAttributes;
+
+                // mac, owned
+                HBufC8* iMac;
+
+                // unauthenticatedAttributes, owned
+                CArrayPtr< CCMSAttribute >* iUnauthenticatedAttributes;
+                
+            };
+        
+    public:  // Constructors and destructor
+		/**
+        * Two-phased constructor.
+        * NOTE: Encrypt will leave with KErrArgument if
+        * valid parameters are not set.
+        */
+        IMPORT_C static CCMSAuthenticatedData* NewLC();
+
+        /**
+        * Two-phased constructor.
+        * Takes ownership of all parameters, except aMac which is copied.
+        * Leaves newly created instance in CleanupStack
+        */
+        IMPORT_C static CCMSAuthenticatedData* NewLC(
+			CArrayPtr< CCMSRecipientInfo >* aRecipientInfos,
+            CCMSX509AlgorithmIdentifier* aMacAlgorithm,
+        	CCMSEncapsulatedContentInfo* aEncapContentInfo,
+        	const TDesC8& aMac );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CCMSAuthenticatedData();
+
+    public: // New functions
+        /**
+         * Getter for version
+         * @since 3.0
+         * @return CMSVersion
+         */
+        IMPORT_C TInt Version() const;
+
+        /**
+         * Getter for originatorInfo
+         * @since 3.0
+         * @return OriginatorInfo or NULL
+         */
+        IMPORT_C const CCMSOriginatorInfo* OriginatorInfo() const;
+        
+        /**
+         * Getter for recipientInfos.
+         * @since 3.0
+         * @return array of RecipientInfos
+         */
+        IMPORT_C const CArrayPtr< CCMSRecipientInfo >& RecipientInfos() const;
+
+        /**
+         * Getter for macAlgorithm. 
+         * @since 3.0
+         * @return MessageAuthenticationCodeAlgorithm
+         */
+        IMPORT_C const CCMSX509AlgorithmIdentifier& MacAlgorithm() const;
+
+        /**
+         * Getter for digestAlgorithm
+         * @since 3.0
+         * @return DigestAlgorithmIdentifier or NULL
+         */
+        IMPORT_C const CCMSX509AlgorithmIdentifier* DigestAlgorithm() const;
+
+        /**
+         * Getter for encapContentInfo
+         * @since 3.0
+         * @return EncapsulatedContentInfo
+         */
+        IMPORT_C const CCMSEncapsulatedContentInfo& EncapContentInfo() const;
+
+        /**
+         * Getter for authenticatedAttributes
+         * @since 3.0
+         * @return array of Attributes or NULL
+         */
+        IMPORT_C const CArrayPtr< CCMSAttribute >*
+        AuthenticatedAttributes() const;
+
+        /**
+         * Getter for mac
+         * @since 3.0
+         * @return MessageAuthenticationCode
+         */
+        IMPORT_C const TDesC8& Mac() const;
+
+        /**
+         * Getter for unauthenticatedAttributes
+         * @since 3.0
+         * @return  array of Attributes or NULL
+         */
+        IMPORT_C const CArrayPtr< CCMSAttribute >*
+        UnauthenticatedAttributes() const;
+
+        /**
+         * Setter for version. Default value is 0.
+         * @since 3.0
+         * @param aVersion CMSVersion value
+         */
+        IMPORT_C void SetVersion( TInt aVersion );
+        
+        /**
+         * Setter for originatorInfo. Takes ownership.
+         * @since 3.0
+         * @param aOriginatorInfo OriginatorInfo
+         */
+        IMPORT_C void SetOriginatorInfoL(
+            CCMSOriginatorInfo* aOriginatorInfo );
+
+        /**
+         * Setter for recipientInfos. Takes ownership. 
+         * @since 3.0
+         * @param aRecipientInfos array of RecipientInfos. There must
+         * be at least one element in the array, otherwise thois
+         * method will leave with KErrArgument
+         */
+        IMPORT_C void SetRecipientInfosL(
+            CArrayPtr< CCMSRecipientInfo >* aRecipientInfos );
+
+        /**
+         * Setter for macAlgorithm. Takes ownership.
+         * @since 3.0
+         * @param aMacAlgorithm MessageAuthenticationCodeAlgorithm. If
+         * this parameter is null, this method leaves with KErrArgument.
+         */
+        IMPORT_C void SetMacAlgorithmL(
+            CCMSX509AlgorithmIdentifier* aMacAlgorithm );
+
+        /**
+         * Setter for digestAlgorithm. Takes ownership.
+         * @since 3.0
+         * @param aDigestAlgorithm DigestAlgorithmIdentifier
+         */
+        IMPORT_C void SetDigestAlgorithmL(
+            CCMSX509AlgorithmIdentifier* aDigestAlgorithm );
+
+
+        /**
+         * Setter for encapContentInfo. Takes ownership.
+         * @since 3.0
+         * @param aEncapContentInfo EncapsulatedContentInfo. If this
+         * parameter is NULL, this method will leave with KErrArgument.
+         */
+        IMPORT_C void SetEncapContentInfoL(
+            CCMSEncapsulatedContentInfo* aEncapContentInfo );
+
+        /**
+         * Setter for authenticatedAttributes. Takes ownership.
+         * @since 3.0
+         * @param aAuthenticatedAttributes array of attributes.
+         */
+        IMPORT_C void SetAuthenticatedAttributesL(
+            CArrayPtr< CCMSAttribute >* aAuthenticatedAttributes );
+
+        /**
+         * Setter for mac. Creates a copy.
+         * @since 3.0
+         * @param aMac MessageAuthenticationCode
+         */
+        IMPORT_C void SetMacL( const TDesC8& aMac );
+
+        /**
+         * Setter for unauthenticatedAttributes. Takes ownership.
+         * @since 3.0
+         * @param aUnuthenticatedAttributes array of attributes.
+         */
+        IMPORT_C void SetUnauthenticatedAttributesL(
+            CArrayPtr< CCMSAttribute >* aUnauthenticatedAttributes );
+
+    public: // Functions from base classes
+
+	 	/**
+        * From MCMSModule
+        * @since 3.0
+        * @param aRawData raw-data to be parsed in this instance
+        */
+        void DecodeL( const TDesC8& aRawData );
+
+	 	/**
+        * From MCMSModule
+        * @since 3.0
+        * @return Returns ASN1 encoder and leaves it in CleanupStack
+        */
+        CASN1EncBase* EncoderLC() const;
+
+    protected:  // New functions
+
+	   /**
+        * Protected construction to allow derivation
+        */
+        IMPORT_C void ConstructL();
+
+	   /**
+        * Protected construction to allow derivation
+        */
+        IMPORT_C void ConstructL(
+			CArrayPtr< CCMSRecipientInfo >* aRecipientInfos,
+            CCMSX509AlgorithmIdentifier* aMacAlgorithm,
+        	CCMSEncapsulatedContentInfo* aEncapContentInfo,
+        	const TDesC8& aMac );
+        
+        /**
+        * C++ default constructor.
+        */
+        IMPORT_C CCMSAuthenticatedData();
+
+    private: // New functions
+
+        /**
+         * Decodes an attribute sequence.
+         */
+        CArrayPtrFlat< CCMSAttribute >* DecodeAttributesL(
+            TASN1DecGeneric* aAttributesDec );
+        
+    private:    // Data
+        // Contains the actual data, ownedw
+        CAuthenticatedDataData* iData;
+
+        // Reserved for extensions
+        MCMSAuthenticatedDataExtension* iReserved;
+        
+    };
+
+#endif      // CCMSAuthenticatedData_H
+
+// End of File