vpnengine/ikev1lib/inc/ikev1dialog.h
changeset 0 33413c0669b9
child 23 d1a0d37b52a1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vpnengine/ikev1lib/inc/ikev1dialog.h	Thu Dec 17 09:14:51 2009 +0200
@@ -0,0 +1,142 @@
+/*
+* 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 "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:   CIkeDialog class headers
+*
+*/
+
+#ifndef C_IKEV1DIALOG_H
+#define C_IKEV1DIALOG_H
+
+
+#include <e32base.h>
+#include <f32file.h>
+#include "vpnnotifierdefs.h"
+
+class CIkev1Dialog;
+class CIkev1PluginSession;
+class RFs;
+class MIkeDebug;
+
+/** 
+* IKE dialog complete
+* @internalComponent
+*/
+class MIkeDialogComplete
+{
+	public:
+		/** 
+         * IKE dialog completed 
+         * @internalComponent
+         * 
+         */
+		virtual TInt DialogCompleteL(CIkev1Dialog* aDialog, TAny* aUserInfo, HBufC8* aUsername, HBufC8* aSecret, HBufC8* aDomain)=0; 
+};
+
+
+
+NONSHARABLE_CLASS(CDialogTimeout) : public CTimer
+{
+public:
+    CDialogTimeout( MIkeDebug& aDebug );
+    ~CDialogTimeout();
+    void ConstructL(CIkev1Dialog* aDialog);
+    
+protected:
+    // will cancel the current dialog
+    void RunL();
+    void DoCancel();
+    
+protected: // data
+    CIkev1Dialog* iDialog; //Needed to cancel a dialog
+    
+private: // data
+    MIkeDebug& iDebug;
+};
+
+
+NONSHARABLE_CLASS(CIkev1Dialog) : public CActive
+{
+public:
+    static CIkev1Dialog* NewL( CIkev1PluginSession* aPluginSession,
+                               CIkev1Dialog** aToQueAnchor,
+                               MIkeDebug& aDebug );
+    CIkev1Dialog( MIkeDebug& aDebug );
+    ~CIkev1Dialog();
+
+    void GetAsyncUNPWDialogL(TAny *aUserInfo, MIkeDialogComplete* aCallback);
+    void GetAsyncUNAMEDialog(TAny *aUserInfo, MIkeDialogComplete* aCallback);    
+    void GetAsyncSecureidDialogL(TAny *aUserInfo, MIkeDialogComplete*  aCallback);
+    void GetAsyncSecureNextPinDialogL(TAny *aUserInfo, MIkeDialogComplete* aCallback);    
+    void GetAsyncRespDialog(TPtr8 aChallenge, TAny *aUserInfo, MIkeDialogComplete* aCallback);
+    void ShowErrorDialogL(TInt aDialogType, TAny *aUserInfo, MIkeDialogComplete*  aCallback);
+	void StoreUserNameL(TPtr8 aUserName);
+	void StartDialogL();
+	TInt GetSyncUNPWCacheDialog(TDes& aUserName, TDes& aPassword);
+	
+    static TInt GetSyncUNPWDialog(TDes& aUserName, TDes& aPassword);
+    static void PurgeDialogQueue(CIkev1Dialog* aQueuedDialog);
+	
+	inline CIkev1PluginSession* PluginSession() { return iPluginSession;}
+	inline CIkev1Dialog* NextDialog() { return iNext;}
+	inline MIkeDialogComplete* Callback() { return iCallback;}
+	inline TAny* UserInfo() { return iUserInfo;}		
+	
+protected:
+    // active object stuff, completion and cancel callback functions
+    void RunL();
+    void DoCancel();
+    
+private:
+    void ConstructL(CIkev1PluginSession* aPluginSession, CIkev1Dialog* *aToQueAnchor);
+    void LaunchDialogL();
+    TInt QueueDialog(CIkev1Dialog* aDialog);
+    void DeQueueDialog(CIkev1Dialog* aDialog);
+	HBufC8* CreateDialogInput(TIPSecDialogInfo& aDialogInfo, TBool aUserNameCache);
+	HBufC8* GetUserNameFromFile();
+	static TBool BuildEncryptionKey(const TDesC8& aSalt, TDes8& aEncryptionKey);		
+    static TInt LauchSyncDialog(const TDesC8& aInput, TDes8& aOutput);  
+    static HBufC8* ConvertPwdToOctetString(TDesC &aUnicodeBfr);
+    
+private:
+    CIkev1PluginSession*   iPluginSession;
+    RFs             iFs;
+    CIkev1Dialog**  iToQueAnchor;   // Waiting queue anchor
+    CIkev1Dialog*   iNext;          // For waiting queue
+    TAny*           iUserInfo;
+    MIkeDialogComplete* iCallback;
+    TInt           iDialogType;
+    CDialogTimeout* iTimeout;   
+    RNotifier      iNotifier;
+    HBufC8*        iInputData;
+    TPckgBuf<TIPSecDialogOutput> iResponseBuf;
+    MIkeDebug& iDebug;
+};
+
+/**--------------------------------------------------------------------------
+ *
+ * Structure TUserNameFileHdr
+ * User name (encrypted) cache file header.
+ * In this file is cached the last user name used in legacy
+ * authentication. 
+ *
+ *--------------------------------------------------------------------------*/
+#define USER_NAME_FILE_ID     0xcccccccc
+struct TUserNameFileHdr
+{
+	TUint8      iSalt[8];
+	TUint8      iIV[8];
+	TUint32     iFileId;
+};
+
+#endif // C_IKEV1DIALOG_H