cryptoservices/certificateandkeymgmt/inc/x509constraintext.h
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/certificateandkeymgmt/inc/x509constraintext.h	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,230 @@
+/*
+* 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