diff -r 000000000000 -r 164170e6151a secsrv_plat/cms_api/inc/CCMSX509CertificateList.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/secsrv_plat/cms_api/inc/CCMSX509CertificateList.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,238 @@ +/* +* Copyright (c) 2002 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: +* +*/ + + + +#ifndef CCMSX509CertificateList_H +#define CCMSX509CertificateList_H + +// INCLUDES +#include "CCMSSequence.h" +#include + +// FORWARD DECLARATIONS +class CCMSX509AlgorithmIdentifier; +// Extension +class MCMSX509CertificateList; + +// CLASS DECLARATION +/** + * These two classes are containers for CertificateList data + */ +class CCMSX509RevokedCertificate : public CBase + { + public: // Constructor and destructor + /** + * C++ default constructor. + */ + IMPORT_C CCMSX509RevokedCertificate(); + + /** + * Destructor. + */ + virtual ~CCMSX509RevokedCertificate(); + + public: // Data + TInt iUserCertificateSerialNumber; + TTime iRevokationDate; + // Owned extensions + CArrayPtrFlat< CX509CertExtension >* iExtensions; + }; + +class CCMSX509CertificateListParameters : public CBase + { + public: // Constructor and destructor + /** + * C++ default constructor. + */ + IMPORT_C CCMSX509CertificateListParameters(); + + /** + * Destructor. + */ + virtual ~CCMSX509CertificateListParameters(); + + public: // Data + TInt iVersion; + // Signature algorithm, owned + CCMSX509AlgorithmIdentifier* iSignatureAlgorithm; + // Issuer, owned + CX500DistinguishedName* iIssuer; + TTime iThisUpdate; + TTime iNextUpdate; + // Owned revoked certificates + CArrayPtrFlat< CCMSX509RevokedCertificate >* iRevokedCertificates; + // Owned extensions + CArrayPtrFlat< CX509CertExtension >* iExtensions; + // Owned signature + HBufC8* iSignature; + }; + +// CLASS DECLARATION +/** +* X509 CertificateList +* +* CertificateList ::= SEQUENCE { +* tbsCertList TBSCertList, +* signatureAlgorithm AlgorithmIdentifier, +* signature BIT STRING } +* +* TBSCertList ::= SEQUENCE { +* version Version OPTIONAL, +* -- if present, shall be v2 +* signature AlgorithmIdentifier, +* issuer Name, +* thisUpdate Time, +* nextUpdate Time OPTIONAL, +* revokedCertificates SEQUENCE OF SEQUENCE { +* userCertificate CertificateSerialNumber, +* revocationDate Time, +* crlEntryExtensions Extensions OPTIONAL +* -- if present, shall be v2 +* } OPTIONAL, +* crlExtensions [0] Extensions OPTIONAL +* -- if present, shall be v2 -- } +* +* Name ::= CHOICE { -- only one possibility for now -- +* rdnSequence RDNSequence } +* +* RDNSequence ::= SEQUENCE OF RelativeDistinguishedName +* +* RelativeDistinguishedName ::= +* SET SIZE (1 .. MAX) OF AttributeTypeAndValue +* +* Version ::= INTEGER { v1(0), v2(1), v3(2) } +* +* CertificateSerialNumber ::= INTEGER +* +* Time ::= CHOICE { +* utcTime UTCTime, +* generalTime GeneralizedTime } +* +* @lib cms.lib +* @since 2.8 +*/ +class CCMSX509CertificateList : public CCMSSequence + { + public: // Constructors and destructor + /** + * Two-phased constructor. + * Leaves newly created instance in CleanupStack + */ + IMPORT_C static CCMSX509CertificateList* NewLC(); + + /** + * Two-phased constructor. + * Leaves newly created instance in CleanupStack + * @param aSigningCertificate Signing certificate + * @param aRevokedCertificates List of revoked certificates + */ + IMPORT_C static CCMSX509CertificateList* NewLC( + const CX509Certificate& aSigningCertificate, + const CArrayPtrFlat& aRevokedCertificates ); + /** + * Two-phased constructor. + * Leaves newly created instance in CleanupStack + * @param aParameters Parameters used for creating list, + * ownership transferred + */ + IMPORT_C static CCMSX509CertificateList* NewLC( + CCMSX509CertificateListParameters& aParameters ); + /** + * Destructor. + */ + virtual ~CCMSX509CertificateList(); + + public: // New functions + + /** + * Getter for CertificateList parameters + * @since 2,8 + * @return Signing certificate in CX509Certificate reference + */ + IMPORT_C const CCMSX509CertificateListParameters& + Parameters() const; + + /** + * Setter for CertificateList parameters, takes ownership + * @since 2.8 + * @param aSigningCertificate X.509 certificate to be set as signing + */ + IMPORT_C void SetParametersL( + CCMSX509CertificateListParameters& aSigningCertificate ); + + + public: // Functions from base classes + + /** + * From MCMSModule + * @since 2.8 + * @param aRawData raw-data to be parsed in this instance + */ + void DecodeL( const TDesC8& aRawData ); + + /** + * From MCMSModule + * @since 2.8 + * @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( const CX509Certificate& aSigningCertificate, + const CArrayPtrFlat& aRevokedCertificates ); + + /** + * C++ default constructor. + */ + IMPORT_C CCMSX509CertificateList(); + + private: // New functions + + /** + * Encodes Extensions + */ + CASN1EncSequence* EncodeExtensionsLC( + const CArrayPtrFlat* aExtensions ) const; + + /** + * Decodes Extensions + */ + CArrayPtrFlat* DecodeExtensionsL( + const TASN1DecGeneric* aExtensions ); + + + private: // Data + // List parameters, owned + CCMSX509CertificateListParameters* iParams; + + // Reserved for extensions + MCMSX509CertificateList* iReserved; + }; + +#endif // CCMSX509CertificateList_H + +// End of File