applayerprotocols/httptransportfw/inc/framework/csecuritypolicy.h
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httptransportfw/inc/framework/csecuritypolicy.h	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,176 @@
+// Copyright (c) 2002-2009 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:
+//
+
+/**
+ @file csecuritypolicy.h
+ @warning : This file may contain Rose Model ID comments - please do not delete
+*/
+
+#ifndef __CSECURITYPOLICY_H__
+#define __CSECURITYPOLICY_H__
+
+// System includes
+#include <e32base.h>
+#include <ecom/ecom.h>
+#include <stringpool.h>
+#include <ssl.h>
+#include <wsp/wsptypes.h>
+
+
+//##ModelId=3C4C37E401CE
+class MSecurityPolicy
+/**
+The Security Policy Interface.  This interface class must be the base 
+class of a security policy plug-in.
+@publishedAll
+@released
+*/
+	{
+public:
+
+/** Intended Usage:	Ask the client to accept or reject a certificate. Not
+					applicable to TLS, as the SSL layer does this itself.
+					The call is asynchronous, returning the result via the TRequestStatus.
+	@param			aServerCert		(in) A structure containing the certificate details.
+	@param			aStatus			(out) A status flag used to indicate errors. A value of 0 is used to indicate
+									that the cert is untrusted and 1 that it is trusted
+*/
+	//##ModelId=3C4C37E4020B
+	virtual void ValidateUntrustedServerCert(TCertInfo& aServerCert, TRequestStatus& aStatus) const = 0;
+
+/** Intended Usage:	Cancel a previous request to ask the client to accept or reject
+					an untrusted WTLS server certificate.
+*/
+	//##ModelId=3C4C37E4020A
+	virtual void CancelValidateUntrustedServerCert() = 0;
+
+
+/** Intended Usage:	Obtain an array of WTLS cipher suites.  Not applicable to TLS clients.
+	@return			An array of cipher suites, consisting of paired bulk encryption
+					algorithms and MAC algorithms.  The array must be ordered with
+					strongest cipher suites at the start.
+*/
+	//##ModelId=3C4C37E40201
+	virtual const RArray<TWtlsCipherSuite>& GetWtlsCipherSuites() =0;
+
+/** Intended Usage:	Obtain a list of TLS cipher suites.  Not applicable to WTLS
+					clients.
+	@return			An descriptor containing a list of the TLS cipher suites. Each cipher suite is a 2 byte pair
+*/
+	//##ModelId=3C4C37E40200
+	virtual const TDesC8& GetTlsCipherSuites() = 0;
+
+/** Intended Usage:	Obtain the WTLS key exchange suites.  Not applicable
+					to TLS clients.
+	@return			An array of the WTLS key exchange suites.  The array must be ordered
+					with authenticating key exchange suites at the start followed by
+					anonymous key exchange suites if desired.  Within each group of keys
+					longer keys should precede shorter ones.
+*/
+	//##ModelId=3C4C37E401FA
+	virtual const RArray<TWtlsKeyExchangeSuite>& GetWtlsKeyExchangeSuites() = 0;
+
+/** Intended Usage:	Obtain arbitrary, named security policy properties, in a generic
+					'stringified' form.
+	@param			aPropertyName	(in) The policy property name.
+	@param			aPropertyValue	(out) The property value. Parsing of the value is
+									left to the caller. The caller must close the
+									RString.
+	@return			An error code: KErrNone if the property exists or KErrNotFound if
+					it doesn't.
+*/
+	//##ModelId=3C4C37E401F7
+	virtual TInt GetNamedPolicyProperty(RStringF aPropertyName, RString& aPropertyValue) = 0;
+
+protected:
+/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
+ */
+	//##ModelId=3C4C37E401F6
+	virtual void Reserved1() =0;
+
+/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
+ */
+	//##ModelId=3C4C37E401EC
+	virtual void Reserved2() =0;
+	};
+
+//##ModelId=3C4C37C50300
+class CSecurityPolicy : public CBase, public MSecurityPolicy
+/** 
+The Security Policy Plug-in API.  This ECOM interface class must be implemented
+by each instance of a security policy plug-in.
+@publishedAll
+@released
+*/
+	{
+public: // methods
+
+/** Intended Usage:	Factory construction - instantiates the plug-in.
+	@param			aStringPool		(in) An open string pool reference that can be used by the plugin.
+	@return			The constructed plug-in.
+*/
+	//##ModelId=3C4C37C503C8
+	inline static CSecurityPolicy* NewL(RStringPool aStringPool);
+
+/** Intended Usage:	Class destructor.
+*/
+	//##ModelId=3C4C37C503BE
+	inline virtual ~CSecurityPolicy();
+
+
+protected: // methods
+
+/** Intended Usage:	Normal constructor. Creates an instance of the plug-in base.
+	@param			aStrPool		(in) An open string pool reference that can be used by the plugin.
+	@return			The constructed plug-in base.
+*/
+	//##ModelId=3C4C37C503B5
+	inline CSecurityPolicy(RStringPool aStrPool);
+
+
+/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
+ */
+	//##ModelId=3C4C37C503B4
+	inline virtual void Reserved1();
+
+/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
+ */
+	//##ModelId=3C4C37C503AD
+	inline virtual void Reserved2();
+
+protected: // attributes
+
+	/** The stringpool reference
+	*/
+	//##ModelId=3C4C37C503AA
+	RStringPool iStrPool;
+
+private: // attributes
+	#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+	/** D'tor Key identification required for ECOM
+	*/
+	#else
+	/** D'tor Key identification required for ECOM
+		@internalAll
+	*/
+	#endif	//SYMBIAN_ENABLE_SPLIT_HEADERS
+
+	//##ModelId=3C4C37C50396
+	TUid iDtor_ID_Key;
+	};
+
+#include <http/framework/csecuritypolicy.inl>
+
+#endif // __CSECURITYPOLICY_H__