diff -r bad0cc58d154 -r c74b3d9f6b9e eapol/eapol_framework/eapol_symbian/am/type/ttls_pap/symbian/inc/eap_ttls_pap_active.h --- /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 +#include +#include +#include +#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* 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* 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