cryptomgmtlibs/cryptotokenfw/inc/secdlgImplDefs.h
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/cryptotokenfw/inc/secdlgImplDefs.h	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,343 @@
+/*
+* Copyright (c) 2001-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 __SECDLGIMPLDEFS_H__
+#define __SECDLGIMPLDEFS_H__
+
+#include <e32std.h>
+
+#include <secdlg.h>
+
+/** */
+// KUidSecurityDialogNotifier is named KUidWIMDialogNotifier in the UID database
+const TUid KUidSecurityDialogNotifier = { 0x101F3CBB };
+
+/** */
+typedef TUint TSecurityDialogNotification;
+
+/** */
+typedef TPckgBuf<TSecurityDialogNotification> TSecurityDialogNotificationBuf;
+
+
+/**
+ * Defines the operations provided by the security dialog. 
+ *
+ * It is used to identify the operation when transferring over to the notifier plugin.
+ */
+enum TSecurityDialogOperation
+	{
+	/** Secure connection */
+	ESecureConnection = 0x01,
+	/** Sign text */
+	ESignText = 0x02,
+	/** Enter PIN */
+	EEnterPIN = 0x04,
+	/** Enable PIN */
+	EEnablePIN = 0x08,
+	/** Disable PIN */
+	EDisablePIN = 0x10,
+	/** Change PIN */
+	EChangePIN = 0x20,
+	/** Unblock PIN */
+	EUnblockPIN = 0x40,
+	/** PIN blocked */
+	EPINBlocked = 0x80,
+	/** Total blocked */
+	ETotalBlocked = 0x100,
+	/** Unblock PIN in clear */
+	EUnblockPINInClear = 0x200,
+	/** ServerAuthenticationFailure */
+	EServerAuthenticationFailure = 0x400
+	};
+
+/** */
+const TInt KSecurityDialogOperationMask = 0xFFFF;
+const TInt KServerNameBuf    = 0xFF;  // 0xFF  = 255
+const TInt KEncodedCertBuf   = 0x400; // 0x400 = 1024
+
+/** Security dialog error condition */
+enum TSecurityDialogErrorCondition
+	{
+	/** Incorrect PIN value */
+	EPINValueIncorrect = 0x10000000
+	};
+
+/** */
+//Passed back in TRequestStatus, if client agrees to authenticate/ The client TRequeststatus never gets set to this
+const TInt KClientAuthenticationRequested = 1;	
+
+/**
+ * Class used with corresponding TPckgBuf to build buffer for the
+ * Server Authentication Failure Dialog operation.
+ */
+class TServerAuthenticationFailureInput
+	{
+public:
+	/** EServerAuthenticationFailure */
+	TSecurityDialogNotification iOperation;
+	
+	/** Server name */
+	TInt iServerNameLength;
+
+	/** Encoded Certificate */
+	TInt iEncodedCertLength;
+
+	/** Failure Reason */
+	TValidationError iFailureReason;
+	};
+
+/** */
+typedef TPckgBuf<TServerAuthenticationFailureInput> TServerAuthenticationFailureInputBuf;
+
+/**
+ * The input buffer for the secure connection and sign text operations.
+ */
+class TSignInput
+	{
+public:
+	/**  */
+	TSecurityDialogNotification iOperation;
+	
+	/**  */
+	TUint iVariableDataSize;
+	
+	/**  */
+	TUint iCertHandleArrayTotal;
+	
+	/** 
+	 * Whether to do client authentication 
+	 *
+	 * Used only for secure connection dialog
+	 */
+	TBool iDoClientAuthentication;
+	
+	/** The connection type */
+	MSecurityDialog::TConnectionType iConnectionType;
+	};
+
+/** */
+typedef TPckgBuf<TSignInput> TSignInputBuf;
+
+/** */
+typedef TPckgBuf<TCTTokenObjectHandle> TCTTokenObjectHandleBuf;
+
+
+/**
+ * Input data for the EEnterPIN, EChangePIN, EPINBlocked operations.
+ */
+class TPINInput
+	{
+public:
+	/**  */
+	TSecurityDialogNotification iOperation;
+
+	/** Information associated with the PIN */
+	TPINParams iPIN;
+	};
+
+/** */
+typedef TPckgBuf<TPINInput> TPINInputBuf;
+
+
+
+/**
+ * Input data for the EUnblockPIN operation.
+ */
+class TUnblockPINInput
+	{
+public:
+	TSecurityDialogNotification iOperation;
+	TPINParams iPIN;
+	TPINParams iUnblockPIN;
+	};
+
+/** */
+typedef TPckgBuf<TUnblockPINInput> TUnblockPINInputBuf;
+
+/**
+ * Output from the EServerAuthenticationFailure operations.
+ */
+ /** Security dialog error condition */
+enum TServerAuthenticationFailureDialogResult
+	{	
+	EContinue = 0x01,
+	EStop     = 0x02
+	}; 
+/** */
+typedef TPckgBuf<TServerAuthenticationFailureDialogResult> TServerAuthenticationFailureOutputBuf;
+
+/**
+ * Output from the EChangePIN and EUnblockPIN operations.
+ */
+class TTwoPINOutput
+	{
+public:
+	// This could be for the current PIN or the unblocking PIN
+	TPINValue iPINValueToCheck;
+	TPINValue iNewPINValue;
+	};
+
+/** */
+typedef TPckgBuf<TTwoPINOutput> TTwoPINOutputBuf;
+
+/** */
+typedef TPckgBuf<TPINValue> TPINValueBuf;
+
+
+
+/**
+ * Output from the EUnblockPINInClear operation.
+ */
+class TUnblockPINInClearOutput
+	{
+public:
+	// This could be for the current PIN or the unblocking PIN
+	TUnblockPINValue iPINValueToCheck;
+	TPINValue iNewPINValue;
+	};
+
+/** */
+typedef TPckgBuf<TUnblockPINInClearOutput> TUnblockPINInClearOutputBuf;
+
+
+/**
+ * This class is used by the reference implementation of the security dialog,
+ * CRefSecurityDialog, to pack the notifier buffer for the Server
+ * Authentication Failure Dialog operation, and by the notifier server plugin
+ * to unpack the buffer.
+ */
+
+class CServerAuthenticationFailureInput : public CBase
+	{
+public:
+
+	virtual ~CServerAuthenticationFailureInput();
+
+	/**	
+	 * @internalComponent
+	 * 
+	* Static constructor function that uses the data passed in the call to
+	* MSecurityDialog::ServerAuthenticationFailure to instantiate the object.
+	*
+	* Depending on the value of aCreateOwnBuffers, the object can allocate
+	* new buffers with copies of the server name and encoded cert data, or it
+	* can use pointers to the buffers for the existing descriptors.  It should
+	* only use the existing buffers if they won't be freed before an input
+	* buffer for the notifier is created using PackBufferL.
+	*
+	* @param aServerName		Name of the server with the certificate that
+	*							failed authentication.
+	* @param aFailureReason		Reason for certificate authentication failure.
+	* @param aEncodedCert		Encoded X509 Certificate data.
+	* @param aCreateOwnBuffers	Indicates whether new heap buffers are needed.
+	*
+	* @return					The new CServerAuthenticationFailureInput
+	*							object. */
+
+	static CServerAuthenticationFailureInput* NewL(const TDesC8& aServerName,const TValidationError& aFailureReason, const TDesC8& aEncodedCert, const TBool aCreateOwnBuffers = EFalse);
+	/** @internalComponent */
+	static CServerAuthenticationFailureInput* NewLC(const TDesC8& aServerName,const TValidationError& aFailureReason, const TDesC8& aEncodedCert, const TBool aCreateOwnBuffers = EFalse);
+
+	/**	
+	* Static constructor function that constructs the object using the data
+	* in a supplied buffer.  This can be used in the implementation of a
+	* plugin for the extended notifier framework; the buffer supplied to the
+	* notifier for this dialog operation will be in the correct format to
+	* construct the class with this function.
+	*
+	* Depending on the value of aCreateOwnBuffers, new buffers can be
+	* allocated to hold copies of the server name and encoded cert data, or
+	* the object can use pointers to the data positions within the input
+	* buffer.  It should only use the existing buffer if it will persist
+	* until the data is no longer needed.
+	*
+	* @param aBuffer			A data buffer containing the data needed
+	*							for the dialog.
+	* @param aCreateOwnBuffers	Indicates whether new heap buffers are
+	*							needed.
+	*
+	* @return					The new CServerAuthenticationFailureInput
+	*							object. */
+
+	IMPORT_C static CServerAuthenticationFailureInput* NewL(const TDesC8& aBuffer, const TBool aCreateOwnBuffers = EFalse);
+	IMPORT_C static CServerAuthenticationFailureInput* NewLC(const TDesC8& aBuffer, const TBool aCreateOwnBuffers = EFalse);
+	
+
+	/**
+	* Gets the reason for validation failure.	
+	*
+	* @return	The failure reason. */
+	IMPORT_C TValidationError FailureReason();
+
+	/**
+	* Sets the supplied TPtrC8 to point to the buffer for the server name.	
+	*
+	* @param aServerNamePtr	A reference to a TPtrC8 to set to point to
+	*						the server name data. */
+	IMPORT_C void GetServerName(TPtrC8& aServerNamePtr);
+
+	/**
+	* Sets the supplied TPtrC8 to point to the buffer for the encoded cert.	
+	*
+	* @param aServerNamePtr	A reference to a TPtrC8 to set to point to
+	*						the encoded cert data. */
+	IMPORT_C void GetEncodedCert(TPtrC8& aEncodedCertPtr);
+	
+	/**
+	 * @internalComponent
+	 * 
+	* Allocates and fills a heap buffer with the data to be sent to the
+	* notifier server.  Ownership of this buffer passes to the calling
+	* method.
+	*
+	* @return	The allocated buffer. */
+
+	HBufC8* PackBufferL() const;
+	 
+private:
+	CServerAuthenticationFailureInput();
+	
+	void ConstructL(const TDesC8& aServerName,const TValidationError& aFailureReason, const TDesC8& aEncodedCert, const TBool aCreateOwnBuffers = EFalse);
+	void ConstructL(const TDesC8& aBuffer, const TBool aCreateOwnBuffers = EFalse);
+
+private:
+	/** EServerAuthenticationFailure */
+	TSecurityDialogNotification iOperation;
+
+	/** Failure Reason */
+	TValidationError iFailureReason;
+
+	/** Server name */
+	HBufC8* iServerName;
+	TPtrC8 iServerNamePtr;
+
+	/** Encoded Certificate */
+	HBufC8* iEncodedCert;
+	TPtrC8 iEncodedCertPtr;
+
+	};
+
+#endif