diff -r 000000000000 -r 164170e6151a secsrv_plat/cms_api/inc/CCMSX509AttributeCertificateInfo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/secsrv_plat/cms_api/inc/CCMSX509AttributeCertificateInfo.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,373 @@ +/* +* 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: X.509 AttributeCertificateInfo type +* +*/ + + + +#ifndef CCMSX509AttributeCertificateInfo_H +#define CCMSX509AttributeCertificateInfo_H + +#include "CCMSSequence.h" + +// FORWARD DECLARATIONS +class CCMSX509GeneralNames; +class CCMSX509IssuerSerial; +class CCMSX509AlgorithmIdentifier; +class CCMSAttribute; + +// Extensions +class MCMSX509AttributeCertificateInfoExtension; + +// CLASS DECLARATION +/** +* X.509 AttributeCertificateInfo type module +* +* ASN.1 definition: +* AttributeCertificateInfo ::= SEQUENCE { +* version Version DEFAULT v1, +* subject +* CHOICE {baseCertificateID [0] IssuerSerial, -- associated +* with a Public Key Certificate-- +* subjectName [1] GeneralNames}, -- associated with a name +* issuer GeneralNames, -- CA issuing the attribute +* certificate +* signature AlgorithmIdentifier, +* serialNumber CertificateSerialNumber, +* attCertValidityPeriod AttCertValidityPeriod, +* attributes SEQUENCE OF Attribute, +* issuerUniqueID UniqueIdentifier OPTIONAL, +* extensions Extensions OPTIONAL +* } +* +* CertificateSerialNumber ::= INTEGER +* +* AttCertValidityPeriod ::= SEQUENCE { +* notBeforeTime GeneralizedTime, +* notAfterTime GeneralizedTime +* } +* +* @lib cms.lib +* @since 3.0 +*/ +class CCMSX509AttributeCertificateInfo : public CCMSSequence + { + + private: + /** + * Container for certificate data + */ + NONSHARABLE_CLASS( CAttributeCertificateData ) : public CBase + { + public: // destructor + ~CAttributeCertificateData(); + public: // data + // version + TInt iVersion; + + // subject value, owned + CCMSX509IssuerSerial* iBaseCertificateID; + // subject value, owned + CCMSX509GeneralNames* iSubjectName; + + // issuer, owned + CCMSX509GeneralNames* iIssuer; + // signature, owned + CCMSX509AlgorithmIdentifier* iSignature; + // serialNumber + TInt iSerialNumber; + + // attCertValidityPeriod not before time + TTime iNotBeforeTime; + // attCertValidityPeriod not after time + TTime iNotAfterTime; + + // attributes, owned + CArrayPtr< CCMSAttribute >* iAttributes; + + // issuerUniqueID, optional, owned + TDesC8* iIssuerUniqueID; + }; + + public: // Constructors and destructor + /** + * Two-phased constructor. + */ + IMPORT_C static CCMSX509AttributeCertificateInfo* NewL(); + + /** + * Two-phased constructor. Copies of the parameters are made. + * + * @param aBaseCertificateID subject, associated with a Public + * Key Certificate + * @param aIssuer CA issuing the attribute certificate + * @param aSignature signature value + * @param aSerialNumber serialNumber value + * @param aNotBeforeTime attCertValidityPeriod value + * @param aNotAfterTime attCertValidityPeriod value + * @param aAttributes attributes value + */ + IMPORT_C static CCMSX509AttributeCertificateInfo* NewL( + const CCMSX509IssuerSerial& aBaseCertificateID, + const CCMSX509GeneralNames& aIssuer, + const CCMSX509AlgorithmIdentifier& aSignature, + const TInt aSerialNumber, + const TTime& aNotBeforeTime, + const TTime& aNotAfterTime, + const CArrayPtr< CCMSAttribute >& aAttributes ); + + /** + * Two-phased constructor. Copies of the parameters are made. + * + * @param aSubjectName subject, associated with a name + * @param aIssuer CA issuing the attribute certificate + * @param aSignature signature value + * @param aSerialNumber serialNumber value + * @param aNotBeforeTime attCertValidityPeriod value + * @param aNotAfterTime attCertValidityPeriod value + * @param aAttributes attributes value + */ + IMPORT_C static CCMSX509AttributeCertificateInfo* NewL( + const CCMSX509GeneralNames& aSubjectName, + const CCMSX509GeneralNames& aIssuer, + const CCMSX509AlgorithmIdentifier& aSignature, + const TInt aSerialNumber, + const TTime& aNotBeforeTime, + const TTime& aNotAfterTime, + const CArrayPtr< CCMSAttribute >& aAttributes ); + + + /** + * Destructor. + */ + virtual ~CCMSX509AttributeCertificateInfo(); + + public: // New functions + /** + * Getter for Version. + * @since 3.0 + * @return Version value + */ + IMPORT_C TInt Version() const; + + /** + * Getter for baseCertifiedID (subject value) + * @since 3.0 + * @return X.509 IssuerSerial value, or NULL if subject is not + * baseCertificateID + */ + IMPORT_C const CCMSX509IssuerSerial* BaseCertificateID() const; + + /** + * Getter for subjectName (subject value) + * @since 3.0 + * @return X.509 GeneralNames value, or NULL if subject + * is not subjectName + */ + IMPORT_C const CCMSX509GeneralNames* SubjectName() const; + + /** + * Getter for issuer. + * @since 3.0 + * @return X.509 GeneralNames value + */ + IMPORT_C const CCMSX509GeneralNames& Issuer() const; + + /** + * Getter for signature. + * @since 3.0 + * @return X.509 AlgorithmIdentifier value + */ + IMPORT_C const CCMSX509AlgorithmIdentifier& Signature() const; + + /** + * Getter for serialNumber. + * @since 3.0 + * @return X.509 CertificateSerialNumber value + */ + IMPORT_C TInt SerialNumber() const; + + /** + * Getter for notBeforeTime (part of attCertValidityPeriod). + * @since 3.0 + * @return notBeforeTime value + */ + IMPORT_C const TTime& NotBeforeTime() const; + + /** + * Getter for notAfterTime (part of attCertValidityPeriod). + * @since 3.0 + * @return notAfterTime value + */ + IMPORT_C const TTime& NotAfterTime() const; + + /** + * Getter for attributes + * @since 3.0 + * @return attribute array + */ + IMPORT_C const CArrayPtr< CCMSAttribute >& Attributes() const; + + /** + * Getter for issuerUniqueID + * @since 3.0 + * @return X.509 UniqueIdentifier (BIT STRING), or NULL if + * issuerUniqueID is absent. + */ + IMPORT_C const TDesC8* IssuerUniqueID() const; + + /** + * Setter for Version + * @since 3.0 + * @param aVersion Version value. + */ + IMPORT_C void SetVersion( const TInt aVersion ); + + /** + * Setter for baseCertificateID. Creates a copy. Deletes also + * subjectName value. + * @since 3.0 + * @param aBaseCertificateID subject value, associated with a + * Public Key Certificate + */ + IMPORT_C void SetBaseCertificateIDL( + const CCMSX509IssuerSerial& aBaseCertificateID ); + + /** + * Setter for subjectName. Creates a copy. Deletes also + * baseCertificateID value. + * @since 3.0 + * @param aSubjectName subject value, associated with a name + */ + IMPORT_C void SetSubjectNameL( + const CCMSX509GeneralNames& aSubjectName ); + + /** + * Setter for issuer. Creates a copy. + * @since 3.0 + * @param aIssuer X.509 GeneralNames value + */ + IMPORT_C void SetIssuerL( const CCMSX509GeneralNames& aIssuer ); + + /** + * Setter for signature. Creates a copy. + * @since 3.0 + * @param aSignature X.509 AlgorithmIdentifier value + */ + IMPORT_C void + SetSignatureL( const CCMSX509AlgorithmIdentifier& aSignature ); + + /** + * Setter for serialNumber. + * @since 3.0 + * @param aSerialNumber X.509 CertificateSerialNumber value + */ + IMPORT_C void SetSerialNumber( const TInt aSerialNumber ); + + /** + * Setter for notBeforeTime (part of attCertValidityPeriod). + * Creates a copy + * @since 3.0 + * @param aNotBeforeTime notBeforeTime value + */ + IMPORT_C void SetNotBeforeTimeL( const TTime& aNotBeforeTime ); + + /** + * Setter for notAfterTime (part of attCertValidityPeriod). + * Creates a copy. + * @since 3.0 + * @param aNotAfterTime notAfterTime value + */ + IMPORT_C void SetNotAfterTimeL( const TTime& aNotAfterTime ); + + /** + * Setter for attributes. Creates a copy. + * @since 3.0 + * @param aAttributes attribute array + */ + IMPORT_C void + SetAttributesL( const CArrayPtr< CCMSAttribute >& aAttributes ); + + /** + * Setter for issuerUniqueID. Creates a copy. + * @since 3.0 + * @param aIssuerUniqueID X.509 UniqueIdentifier (BIT STRING) + */ + IMPORT_C void SetIssuerUniqueIDL( const TDesC8& aIssuerUniqueID ); + + 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( + const CCMSX509IssuerSerial& aBaseCertificateID, + const CCMSX509GeneralNames& aIssuer, + const CCMSX509AlgorithmIdentifier& aSignature, + const TInt aSerialNumber, + const TTime& aNotBeforeTime, + const TTime& aNotAfterTime, + const CArrayPtr< CCMSAttribute >& aAttributes ); + + /** + * Protected construction to allow derivation + */ + IMPORT_C void ConstructL( + const CCMSX509GeneralNames& aSubjectName, + const CCMSX509GeneralNames& aIssuer, + const CCMSX509AlgorithmIdentifier& aSignature, + const TInt aSerialNumber, + const TTime& aNotBeforeTime, + const TTime& aNotAfterTime, + const CArrayPtr< CCMSAttribute >& aAttributes ); + + /** + * Protected construction to allow derivation + */ + IMPORT_C void ConstructL( ); + + /** + * C++ default constructor. + */ + IMPORT_C CCMSX509AttributeCertificateInfo( ); + + private: // Data + // Contains all members, owned + CAttributeCertificateData* iData; + + // Reserved for extensions + MCMSX509AttributeCertificateInfoExtension* iReserved; + + }; + +#endif // CCMSX509AttributeCertificateInfo_H + +// End of File