/** Copyright (c) 2005-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: * Symbian specific X509.v3 certificate extensions that constrain the* the devices, secure ids, vendor ids and capabilities for which * a software install signing certificate is valid.**//** @file @internalTechnology */#ifndef __X509CONSTRAINTEXT_H__#define __X509CONSTRAINTEXT_H__#include <e32base.h>#include <x509certext.h>class CX509IntListExt : public CX509ExtensionBase /** A Symbian specific X.509 v3 certificate extension that contains an arbitrary list of 32 bit integers. @internalTechnology@released*/ {public: /** Creates a new CX509IntListExt object from the binary (DER) encoded representation of a sequence of integers. @param aBinaryData The encoded binary representation. @return The new CX509IntListExt object. */ IMPORT_C static CX509IntListExt* NewL(const TDesC8& aBinaryData); /** Creates a new CX509IntListExt object from the binary (DER) encoded representation of a sequence of integers, and puts a pointer to it onto the cleanup stack. @param aBinaryData The encoded binary representation. @return The new CX509IntListExt object. */ IMPORT_C static CX509IntListExt* NewLC(const TDesC8& aBinaryData); /** Destructor. Frees all resources owned by the object. */ ~CX509IntListExt(); /** Gets a reference to the array of decoded integers. Ownership is not transferred. @return A reference to the array of decoded integers. */ IMPORT_C const RArray<TInt>& IntArray() const;protected: /** Second-phase constructor. * * @param aBinaryData The encoded binary representation. * @param aPos The position from which to start decoding. */ void ConstructL(const TDesC8& aBinaryData, TInt& aPos); /** Decodes the binary representation of a sequence of integers. @param aBinaryData The encoded binary representation. This is the same as passed to ConstructL(). @param aPos The position from which to start decoding. Note that the value passed points, in effect, to the content, bypassing the header data. */ void DoConstructL(const TDesC8& aBinaryData, TInt& aPos); private: /** The decoded array of integers. */ RArray<TInt> iIntArray; };class CX509Utf8StringListExt : public CX509ExtensionBase /** A Symbian specific X.509 v3 certificate extension that contains an arbitrary list of UTF-8 strings.@internalTechnology@released*/ {public: /** Creates a new CX509Utf8StringListExt object from the binary (DER) encoded representation of a sequence of integers. @param aBinaryData The encoded binary representation. @return The new CX509Utf8StringListExt object. */ IMPORT_C static CX509Utf8StringListExt* NewL(const TDesC8& aBinaryData); /** Creates a new CX509Utf8StringListExt object from the binary (DER) encoded representation of a sequence of integers, and puts a pointer to it onto the cleanup stack. @param aBinaryData The encoded binary representation. @return The new CX509Utf8StringListExt object. */ IMPORT_C static CX509Utf8StringListExt* NewLC(const TDesC8& aBinaryData); /** Destructor. Frees all resources owned by the object. */ ~CX509Utf8StringListExt(); /** Gets a reference to the array of decoded strings (UTF-16). Ownership is not transferred. @return A reference to the array of decoded strings in UTF-16. */ IMPORT_C const RPointerArray<HBufC>& StringArray() const;protected: /** Second-phase constructor. @param aBinaryData The encoded binary representation. @param aPos The position from which to start decoding. */ void ConstructL(const TDesC8& aBinaryData, TInt& aPos); /** Decodes the binary representation of a sequence of UTF-8 strings. The strings are converted and stored internal as UTF-8. @param aBinaryData The encoded binary representation. This is the same as passed to ConstructL(). @param aPos The position from which to start decoding. Note that the value passed points, in effect, to the content, bypassing the header data. */ void DoConstructL(const TDesC8& aBinaryData, TInt& aPos); private: /** The decoded array of strings in UTF-16. */ RPointerArray<HBufC> iStringArray; };/** A Symbian specific X.509 v3 certificate extension that contains a capability set encoded as a bit string.@internalTechnology@released*/class CX509CapabilitySetExt : public CX509ExtensionBase {public: /** Creates a new CX509CapabilitySetExt object from the binary (DER) encoded representation of a sequence of integers. @param aBinaryData The encoded binary representation. @return The new CX509CapabilitySetExt object. */ IMPORT_C static CX509CapabilitySetExt* NewL(const TDesC8& aBinaryData); /** Creates a new CX509CapabilitySetExt object from the binary (DER) encoded representation of a sequence of integers, and puts a pointer to it onto the cleanup stack. @param aBinaryData The encoded binary representation. @return The new CX509CapabilitySetExt object. */ IMPORT_C static CX509CapabilitySetExt* NewLC(const TDesC8& aBinaryData); /** Destructor. Frees all resources owned by the object. */ ~CX509CapabilitySetExt(); /** Gets a reference to the capability set. @return the capability set represented by the bit string. */ IMPORT_C const TCapabilitySet& CapabilitySet() const;protected: /** Second-phase constructor. @param aBinaryData The encoded binary representation. @param aPos The position from which to start decoding. */ void ConstructL(const TDesC8& aBinaryData, TInt& aPos); /** Constructs the a TCapabilitySet from a DER encoded bit string. @param aBinaryData The encoded binary representation. This is the same as passed to ConstructL(). @param aPos The position from which to start decoding. Note that the value passed points, in effect, to the content, bypassing the header data. */ void DoConstructL(const TDesC8& aBinaryData, TInt& aPos);private: /** The decoded capability set */ TCapabilitySet iCapabilitySet; };#endif