--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/certificateandkeymgmt/inc/cmssigneridentifier.h Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,211 @@
+/*
+* Copyright (c) 2006-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 CMSSIGNERIDENTIFIER_H
+#define CMSSIGNERIDENTIFIER_H
+
+#include <e32base.h>
+#include <pkcs7issuerserial.h>
+
+class CX500DistinguishedName;
+class CX509SubjectKeyIdExt;
+class CASN1EncSequence;
+class CASN1EncBase;
+
+
+/**
+ A representation of a RFC2630 (SignerIdentifier) entity.
+ */
+class CCmsSignerIdentifier : public CBase
+ {
+public:
+
+ /**
+ The SignerIdentifier type.
+ */
+ enum TSignerIdentifierType
+ {
+ /** The SignerIdentifier type is issuerAndSerialNumber. */
+ EIssuerAndSerialNumber,
+ /** The SignerIdentifier type is subjectKeyIdentifier. */
+ ESubjectKeyIdentifier
+ };
+
+ /**
+ * @internalComponent
+ *
+ * Creates a CMS SignerIdentifier as defined in RFC2630.
+ * @param aIssuerAndSerialNumber An IssuerAndSerialNumber instance used to construct
+ * this object. Ownership of aIssuerAndSerialNumber is transferred to the newly
+ * created CCmsSignerIdentifier object. If construction fails, ownership is
+ * not transferred. The caller needs to push aIssuerAndSerialNumber onto the cleanup stack before calling
+ * this method, and pop it off the cleanup stack after successful construction.
+ * @return The fully constructed object.
+ **/
+ static CCmsSignerIdentifier* NewL(CPKCS7IssuerAndSerialNumber* aIssuerAndSerialNumber);
+
+ /**
+ * @internalComponent
+ *
+ * Creates a CMS SignerIdentifier as defined in RFC2630, and leaves it on the cleanup stack.
+ * @param aIssuerAndSerialNumber An IssuerAndSerialNumber instance used to construct
+ * this object. Ownership of aIssuerAndSerialNumber is transferred to the newly
+ * created CCmsSignerIdentifier object. If construction fails, ownership is
+ * not transferred. The caller needs to push aIssuerAndSerialNumber onto the cleanup stack before calling
+ * this method, and pop it off the cleanup stack after successful construction.
+ * @return The fully constructed object.
+ **/
+ static CCmsSignerIdentifier* NewLC(CPKCS7IssuerAndSerialNumber* aIssuerAndSerialNumber);
+
+ /**
+ * @internalComponent
+ *
+ * Creates a CMS SignerIdentifier as defined in RFC2630.
+ * @param aSubjectKeyIdExt A buffer that contains the subject key identifier.
+ * Ownership of aSubjectKeyIdExt is transferred to the newly
+ * created CCmsSignerIdentifier object. If construction fails, ownership is
+ * not transferred. The caller needs to push aSubjectKeyIdExt onto the cleanup stack before calling
+ * this method, and pop it off the cleanup stack after successful construction.
+ * @return The fully constructed object.
+ **/
+ static CCmsSignerIdentifier* NewL(HBufC8* aSubjectKeyIdExt);
+
+ /**
+ * @internalComponent
+ *
+ * Creates a CMS SignerIdentifier as defined in RFC2630, and leaves it on the cleanup stack.
+ * @param aSubjectKeyIdExt A buffer that contains the subject key identifier.
+ * Ownership of aSubjectKeyIdExt is transferred to the newly
+ * created CCmsSignerIdentifier object. If construction fails, ownership is
+ * not transferred. The caller needs to push aSubjectKeyIdExt onto the cleanup stack before calling
+ * this method, and pop it off the cleanup stack after successful construction.
+ * @return The fully constructed object
+ **/
+ static CCmsSignerIdentifier* NewLC(HBufC8* aSubjectKeyIdExt);
+
+ /**
+ * @internalComponent
+ *
+ * Creates a CMS SignerIdentifier as defined in RFC2630.
+ * @param aRawData A buffer that contains the encoded CMS signer identifier.
+ * @return The fully constructed object.
+ **/
+ static CCmsSignerIdentifier* NewL(const TDesC8& aRawData);
+
+ /**
+ * @internalComponent
+ *
+ * Creates a CMS SignerIdentifier as defined in RFC2630, and leaves it on the cleanup stack.
+ * @param aRawData A buffer that contains the encoded CMS signer identifier.
+ * @return The fully constructed object.
+ **/
+ static CCmsSignerIdentifier* NewLC(const TDesC8& aRawData);
+
+ /**
+ Destructor
+ */
+ IMPORT_C ~CCmsSignerIdentifier();
+
+ /**
+ * @internalComponent
+ *
+ * Creates the ASN1 sequence of the signer identifier object and leaves it on the cleanup stack.
+ * @return ASN1 sequence of this object.
+ */
+ CASN1EncBase* EncodeASN1DERLC() const;
+
+ /**
+ Returns the issuer and serial name.
+ @return The CPKCS7IssuerAndSerialNumber reference. NULL if the signer
+ identifier type is subjectKeyIdentifier. The signer identifier type can be retrieved
+ using SignerIdentifierType().
+ */
+ IMPORT_C const CPKCS7IssuerAndSerialNumber* IssuerAndSerialNumber() const;
+
+ /**
+ Returns the subject key identifier.
+ @return The subject key identifier reference. KNullDesC8 if the signer
+ identifier type is issuerAndSerialNumber. The signer identifier type can
+ be retrieved using SignerIdentifierType().
+ */
+ IMPORT_C const TDesC8& SubjectKeyIdentifier() const;
+
+ /**
+ Returns the type of the signer identifier.
+ @return The type of the signer identifier. See the TSignerIdentifierType enum.
+ */
+ IMPORT_C TInt SignerIdentifierType() const;
+
+protected:
+ /**
+ * @internalComponent
+ *
+ * Default constructor
+ **/
+ CCmsSignerIdentifier();
+
+ /**
+ * @internalComponent
+ *
+ * Constructor for encoding.
+ * @param aIssuerAndSerialNumber The issuer and serial number.
+ **/
+ CCmsSignerIdentifier(CPKCS7IssuerAndSerialNumber* aIssuerAndSerialNumber);
+
+ /**
+ * @internalComponent
+ *
+ * Constructor for encoding
+ * @param aSubjectKeyIdExt the subject key identifier extension
+ **/
+ CCmsSignerIdentifier(HBufC8* aSubjectKeyIdExt);
+
+ /**
+ * @internalComponent
+ *
+ * Second phase constructor for encoding
+ * @param aRawData the raw data
+ **/
+ void ConstructL(const TDesC8& aRawData);
+
+private:
+ /**
+ The type of the signer identifier.
+ */
+ TSignerIdentifierType iSignerIdentifierType;
+
+ /**
+ The issuer and serial number
+ */
+ CPKCS7IssuerAndSerialNumber* iIssuerAndSerialNumber;
+
+ /**
+ The subject key identifier.
+ */
+ HBufC8* iSubjectKeyIdExt;
+ };
+
+#endif //CMSSIGNERIDENTIFIER_H