eapol/eapol_framework/eapol_symbian/am/type/ttls_pap/symbian/inc/eap_ttls_pap_active.h
branchRCL_3
changeset 46 c74b3d9f6b9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eapol/eapol_framework/eapol_symbian/am/type/ttls_pap/symbian/inc/eap_ttls_pap_active.h	Wed Sep 01 12:23:57 2010 +0100
@@ -0,0 +1,307 @@
+/*
+* Copyright (c) 2008 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:  Provide synch/asynch services used by the caller to show
+*                EAP-TTLS-PAP related notes.
+*
+*/
+
+/*
+* %version: 10 %
+*/
+
+#ifndef EAPTTLSPAPACTIVE_H
+#define EAPTTLSPAPACTIVE_H
+
+
+// INCLUDES
+#include <utf.h>
+#include <e32base.h>
+#include <EapTtlsPapNotifierStruct.h>
+#include <e32des16.h>
+#include "EapTtlsPapDbInfoStruct.h"
+#include "eap_status.h"
+
+// FORWARD DECLARATIONS
+class eap_am_type_tls_peap_symbian_c;
+class eap_variable_data_c;
+class eap_am_tools_symbian_c;
+
+// CLASS DECLARATION
+/**
+* CEapTtlsPapActive class.
+* 
+* Class provides synch/asynch services used by the caller.
+* These services includes:
+* - query for TTLS-PAP user name and password.
+*/
+NONSHARABLE_CLASS( CEapTtlsPapActive )
+    : public CActive
+    {
+    
+    public: 
+        /**
+        * State defines the type of service called.
+        */ 
+        enum TEapTtlsPapActiveState
+            {
+            EEapTtlsPapActiveQueryUserNameAndPassword,          /* 0 */
+            EEapTtlsPapActiveShowAuthQueryDialog,               /* 1 */
+            EEapTtlsPapActiveShowPapChallengeMsgDialog,         /* 2 */
+            EEapTtlsPapActiveShowPapChallengeReplyQueryDialog,  /* 3 */
+            // ...
+            EEapTtlsPapActiveStatesNumber                       /* 4 */ // keep always as last element
+            };
+                        
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        *
+        * @param aCaller Pointer AO owner.
+        */
+        static CEapTtlsPapActive* NewL(
+        	eap_am_type_tls_peap_symbian_c* aCaller,
+        	eap_am_tools_symbian_c* aAmTools );
+
+        /**
+        * Destructor.
+        */
+        ~CEapTtlsPapActive();
+        
+
+    public: // new
+
+        /**
+        * Start active object.
+        *
+        * @param aState State defines the type of service requested, see TEapTtlsPapActiveState.
+		* @return TBool ETrue - successful start, EFalse - starting failed.
+        */
+        TBool Start( TEapTtlsPapActiveState aState );
+                                   
+        /**
+        * Allocate server challenge.
+        * 
+        * Note, utf8->unicode conversion is needed.
+        * 
+        * @param aSrvChallenge Reference to server challenge.
+        */
+        eap_status_e UpdateSrvChallenge( const eap_variable_data_c& aSrvChallengeUtf8 );
+    
+    protected: // from CActive
+    
+        /**
+        * DoCancel from CActive
+        */    
+        virtual void DoCancel();
+      
+        /**
+        * RunL from CActive
+        */      
+        virtual void RunL();
+    
+    private: // new, for AO
+          
+        /**
+        * Complete query-user-name-and-password request.
+        */ 
+        void CompleteQueryUserNameAndPassword();
+
+        /**
+        * Complete query-user-name-and-password request
+        * with null server challenge.
+        */ 
+        void CompleteWithSrvChallengeNull();
+
+        /**
+        * Complete query-user-name-and-password request
+        * with not null server challenge.
+        */        
+        void CompleteWithSrvChallengeNotNull();
+        
+        /**
+        * Display authentication query dialog.
+        * 
+        * Note! The call is asynchronous, i.e., return is done immediately.
+        */
+        void StartAuthenticationQueryDialog();
+    
+        /**
+        * Complete start-authentication-query-dialog request.
+        * 
+        * If user accepts query, the caller is notified with EEapTtlsPapNotifierUserActionOk
+        * value. If user cancells the query,  EEapTtlsPapNotifierUserActionCancel
+        * is given to the caller.
+        */
+        void CompleteAuthenticationQueryDialog();
+        
+        /**
+        * Send server challenge data size to UI side.
+        * 
+        * Note! The call is asynchronous, i.e., return is done immediately.
+        */
+        void StartSrvChallengeSize();
+        
+        /**
+        * Complete start-srv-challenge-size request.
+        */        
+        void CompleteSrvChallengeSize();
+        
+        /**
+        * Display PAP challenge message dialog.
+        * 
+        * Note! The call is asynchronous, i.e., return is done immediately.
+        */
+        void StartPapChallengeMsgDialog();
+
+        /**
+        * Complete start-pap-challenge-msg-dialog request.
+        */
+        void CompletePapChallengeMsgDialog();
+
+        /**
+        * Display PAP challenge user reply query dialog.
+        * 
+        * Note! The call is asynchronous, i.e., return is done immediately.
+        */
+        void StartPapChallengeReplyQueryDialog();
+        
+        /**
+        * Complete start-pap-challenge-user-reply-query-dialog request.
+        */ 
+        void CompletePapChallengeReplyQueryDialog();
+    
+    private: // new, other   
+        
+        /**
+        * Take current time.
+        * 
+        * @return Current time, number of microseconds since midnight,
+        *         January 1st, 0 AD nominal Gregorian.
+        */ 
+        TInt64 GetCurrentTime();
+                
+        /**
+        * Cleans allocated memories and restores the initial object state.
+        */
+        void Clean();
+    
+    private: // private constructors
+
+        /**
+        * C++ default constructor.
+        *
+        * @param aCaller Pointer to AO owner.
+        */
+        CEapTtlsPapActive(
+        	eap_am_type_tls_peap_symbian_c* aCaller,
+        	eap_am_tools_symbian_c* aAmTools );
+        
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+    private: // data
+    
+        /**    
+        * Object of this class implements functionality
+        * of platform adaptation of Symbian.
+        *
+        *  Not owned.
+        */
+        eap_am_tools_symbian_c* iAmTools;
+    
+        /**
+        * User / owner of this AO.
+        * 
+        * Not owned.
+        */ 
+        eap_am_type_tls_peap_symbian_c* iCaller ;
+    
+        /**
+        * State defines the type of the requested service.
+        */ 
+        TEapTtlsPapActiveState iActiveState;
+            
+        /**
+        * Notifier. It acts as a service provider.
+        */
+        RNotifier iNotifier; 
+    
+        /**
+        * Data sent from AO to notifier plugin.
+        *
+        * If user name exists in database, it is sent to notifier.
+        * Also could be used later, if server challenge is sent to UI
+        * for displaying.
+        */
+        TPapUiNotifierInfo* iNotifierDataToUser;
+
+        /**
+        * Packaged data sent from AO to notifier plugin.
+        */
+        TPckg<TPapUiNotifierInfo>* iNotifierDataPckgToUser;	
+
+        /**
+        * Data from notifier plugin to AO.
+        * Structure includes UI dialog id, user action value,
+        * notifier buffer.
+        */
+        TPapUiNotifierInfo* iNotifierDataFromUser;
+
+	    /**
+        * Packaged data from notifier plugin to AO.
+        */
+	    TPckg<TPapUiNotifierInfo>* iNotifierDataPckgFromUser;	
+       
+	    /**
+	    * Stores user action. Possible values are
+	    * EPapNotifierUserActionOk and EPapNotifierUserActionCancel.
+	    */
+	    EPapNotifierUserAction iUserAction;
+	    	    
+	    /**
+	    * Server challenge in unicode format.
+	    */ 
+	    HBufC16* iSrvChallengeUnicode;
+	    
+	    /**
+	    * A pointer to the request status object.
+	    */
+	    TRequestStatus* iRequestStatus;
+
+	    /**
+	    * Structure contains database data for TTLS-PAP.
+	    */ 
+	    TTtlsPapDbInfo iTtlsPapDbInfo;
+	    
+	    /**
+	    * Flag is needed to read database only once.
+	    * ETrue - initialized, EFalse - not initialized.
+	    */ 
+	    TBool iIsTtlsPapDbInfoInitialized;
+	    
+	    /*
+	    * Boolean flag to make sure that if objects are deleted in cancel,
+	    * we don't use them anymore.
+	    */
+	    TBool iCancelCalled;
+	    
+    };
+
+    
+#endif // EAPTTLSPAPACTIVE_H
+
+// End of File