--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/secsrv_plat/cms_api/inc/CCMSX509Certificate.h Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,363 @@
+/*
+* 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 Certificate type
+*
+*/
+
+
+
+#ifndef CCMSX509Certificate_H
+#define CCMSX509Certificate_H
+
+#include "CCMSX509Signed.h"
+
+// FORWARD DECLARATIONS
+class CCMSX509AlgorithmIdentifier;
+class CCMSX509SubjectPublicKeyInfo;
+class CX500DistinguishedName;
+class CCMSX509Validity;
+class CX509CertExtension;
+class CX509Certificate;
+
+// Extensions
+class MCMSX509CertificateExtension;
+
+// CLASS DECLARATION
+/**
+* X.509 CertificateInfo type module
+*
+* ASN.1 definition:
+* -- basic certificate definition
+* Certificate ::=
+* SIGNED
+* {SEQUENCE {version [0] Version DEFAULT v1,
+* serialNumber CertificateSerialNumber,
+* signature AlgorithmIdentifier,
+* issuer Name,
+* validity Validity,
+* subject Name,
+* subjectPublicKeyInfo SubjectPublicKeyInfo,
+* issuerUniqueIdentifier [1] IMPLICIT UniqueIdentifier OPTIONAL,
+* -- if present, version must be v2 or v3
+* subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL,
+* -- if present, version must be v2 or v3
+* extensions [3] Extensions OPTIONAL
+* }} -- If present, version must be v3
+*
+* @lib cms.lib
+* @since 3.0
+*/
+class CCMSX509Certificate : public CCMSX509Signed
+ {
+
+ private:
+ /**
+ * Container for certificate data
+ */
+ NONSHARABLE_CLASS( CCertificateData ) : public CBase
+ {
+ public: // destructor
+ ~CCertificateData();
+
+ public: // data
+ // version
+ TInt iVersion;
+
+ // serialNumber, owned
+ HBufC8* iSerialNumber;
+
+ // signature AlgorithmIdentifier, owned
+ CCMSX509AlgorithmIdentifier* iSignature;
+
+ // issuer Name, owned
+ CX500DistinguishedName* iIssuer;
+
+ // validity, owned
+ CCMSX509Validity* iValidity;
+
+ // subject Name, owned
+ CX500DistinguishedName* iSubject;
+
+ // subjectPublicKeyInfo, owned
+ CCMSX509SubjectPublicKeyInfo* iSubjectPublicKeyInfo;
+
+ // issuerUniqueIdentifier UniqueIdentifier ::= BIT STRING, owned
+ HBufC8* iIssuerUniqueIdentifier;
+
+ // subjectUniqueIdentifier UniqueIdentifier, owned
+ HBufC8* iSubjectUniqueIdentifier;
+ };
+
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CCMSX509Certificate* NewL();
+
+ /**
+ * Two-phased constructor. Copies the data from the
+ * CX509Certificate parameter.
+ *
+ * @param aCertificate Certificate from which the data is
+ * copied.
+ */
+ IMPORT_C static CCMSX509Certificate* NewL(
+ const CX509Certificate& aCertificate );
+
+ /**
+ * Two-phased constructor. Copies of the parameters are made.
+ *
+ * @param aSerialNumber CertificateSerialNumber value
+ * @param aSignature AlgorithmIdentifier value
+ * @param aIssuer Name value
+ * @param aValidity Validity value
+ * @param aSubject Name value
+ * @param aSubjectPublicKeyInfo SubjectPublicKeyInfo value
+ * @param aAlgorithmIdentifier identifies the algorithm used in
+ * the signature
+ * @param aEncrypted must be the result of applying a hashing
+ * procedure to the DER-encoded octets of a value of
+ * toBeSigned and then applying an encipherment
+ * procedure to those octets
+ */
+ IMPORT_C static CCMSX509Certificate* NewL(
+ const TDesC8& aSerialNumber,
+ const CCMSX509AlgorithmIdentifier& aSignature,
+ const CX500DistinguishedName& aIssuer,
+ const CCMSX509Validity& aValidity,
+ const CX500DistinguishedName& aSubject,
+ const CCMSX509SubjectPublicKeyInfo& aSubjectPublicKeyInfo,
+ const CCMSX509AlgorithmIdentifier& aAlgorithmIdentifier,
+ const TDesC8& aEncrypted
+ );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCMSX509Certificate();
+
+ public: // New functions
+ /**
+ * Getter for the version.
+ * @since 3.0
+ * @return Version
+ */
+ IMPORT_C TInt Version() const;
+
+ /**
+ * Getter for the serialNumber.
+ * @since 3.0
+ * @return CertificateSerialNumber
+ */
+ IMPORT_C const TDesC8& SerialNumber() const;
+
+ /**
+ * Getter for the signature.
+ * @since 3.0
+ * @return AlgorithmIdentifier
+ */
+ IMPORT_C const CCMSX509AlgorithmIdentifier& Signature() const;
+
+ /**
+ * Getter for the issuer.
+ * @since 3.0
+ * @return X.500 DistinguishedName of the issuer of the certificate.
+ */
+ IMPORT_C const CX500DistinguishedName& Issuer() const;
+
+ /**
+ * Getter for the validity.
+ * @since 3.0
+ * @return Validity
+ */
+ IMPORT_C const CCMSX509Validity& Validity() const;
+
+ /**
+ * Getter for the subject.
+ * @since 3.0
+ * @return X.500 DistinguishedName of the subject of the certificate.
+ */
+ IMPORT_C const CX500DistinguishedName& Subject() const;
+
+ /**
+ * Getter for the subjectPublicKeyInfo.
+ * @since 3.0
+ * @return SubjectPublicKeyInfo
+ */
+ IMPORT_C const CCMSX509SubjectPublicKeyInfo&
+ SubjectPublicKeyInfo() const;
+
+ /**
+ * Getter for the issuerUniqueIdentifier.
+ * @since 3.0
+ * @return UniqueIdentifier or NULL
+ */
+ IMPORT_C const TDesC8*
+ IssuerUniqueIdentifier() const;
+
+ /**
+ * Getter for the subjectUniqueIdentifier.
+ * @since 3.0
+ * @return UniqueIdentifier or NULL
+ */
+ IMPORT_C const TDesC8*
+ SubjectUniqueIdentifier() const;
+
+ /**
+ * Setter for the version.
+ * @since 3.0
+ * @param aVersion Version
+ */
+ IMPORT_C void SetVersion( const TInt aVersion );
+
+ /**
+ * Setter for the serialNumber.
+ * @since 3.0
+ * @param aSerialNumber CertificateSerialNumber
+ */
+ IMPORT_C void SetSerialNumberL( const TDesC8& aSerialNumber );
+
+ /**
+ * Setter for the signature.
+ * @since 3.0
+ * @param aSignature AlgorithmIdentifier
+ */
+ IMPORT_C void
+ SetSignatureL( const CCMSX509AlgorithmIdentifier& aSignature );
+
+ /**
+ * Setter for the issuer.
+ * @since 3.0
+ * @param aIssuer The X.500 DistinguishedName of the issuer of
+ * the certificate
+ */
+ IMPORT_C void
+ SetIssuerL( const CX500DistinguishedName& aIssuer );
+
+ /**
+ * Setter for the validity.
+ * @since 3.0
+ * @param aValidity Validity
+ */
+ IMPORT_C void
+ SetValidityL( const CCMSX509Validity& aValidity );
+
+ /**
+ * Setter for the Subject.
+ * @since 3.0
+ * @param aSubject X.500 DistinguishedName of the subject of
+ * the certificate
+ */
+ IMPORT_C void
+ SetSubjectL( const CX500DistinguishedName& aSubject );
+
+ /**
+ * Setter for the SubjectPublicKeyInfo.
+ * @since 3.0
+ * @param aSubjectPublicKeyInfo SubjectPublicKeyInfo
+ */
+ IMPORT_C void SetSubjectPublicKeyInfoL(
+ const CCMSX509SubjectPublicKeyInfo& aSubjectPublicKeyInfo );
+
+ /**
+ * Setter for the issuerUniqueIdentifier. Also makes sure
+ * version is v2 or v3 (integer values 1 and 2).
+ * @since 3.0
+ * @param aIssuerUniqueIdentifier UniqueIdentifier (BIT STRING)
+ */
+ IMPORT_C void SetIssuerUniqueIdentifierL(
+ const TDesC8& aIssuerUniqueIdentifier );
+
+ /**
+ * Setter for the subjectUniqueIdentifier. Also makes sure
+ * version is v2 or v3 (integer values 1 and 2).
+ * @since 3.0
+ * @param aSubjectUniqueIdentifier UniqueIdentifier (BIT STRING)
+ */
+ IMPORT_C void SetSubjectUniqueIdentifierL(
+ const TDesC8& aSubjectUniqueIdentifier );
+
+ /**
+ * Returns ASN1 encoder for the ToBeSigned part.
+ * @since 3.0
+ * @return ASN1 encoder for the ToBeSigned part.
+ */
+ IMPORT_C CASN1EncBase* ToBeSignedEncoderLC() const;
+
+ 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 TDesC8& aSerialNumber,
+ const CCMSX509AlgorithmIdentifier& aSignature,
+ const CX500DistinguishedName& aIssuer,
+ const CCMSX509Validity& aValidity,
+ const CX500DistinguishedName& aSubject,
+ const CCMSX509SubjectPublicKeyInfo& aSubjectPublicKeyInfo,
+ const CCMSX509AlgorithmIdentifier& aAlgorithmIdentifier,
+ const TDesC8& aEncrypted
+ );
+
+ /**
+ * Protected construction to allow derivation
+ */
+ IMPORT_C void ConstructL( );
+
+ /**
+ * Protected construction to allow derivation.
+ */
+ IMPORT_C void ConstructL( const CX509Certificate& aCertificate );
+
+ /**
+ * C++ default constructor.
+ */
+ IMPORT_C CCMSX509Certificate( );
+
+ private: // New functions
+
+ /**
+ * Copies the data from the CX509Certificate object.
+ */
+ void SetDataL( const CX509Certificate& aCertificate );
+
+ private: // Data
+ // Contains the actual data, owned
+ CCertificateData* iData;
+
+ // Reserved for extensions
+ MCMSX509CertificateExtension* iReserved;
+
+ };
+
+#endif // CCMSX509Certificate_H
+
+// End of File