diff -r f5050f1da672 -r 04becd199f91 javaextensions/satsa/apdu/src.s60/cstspinmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/satsa/apdu/src.s60/cstspinmanager.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,292 @@ +/* +* 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 "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: + * +*/ + + +#ifndef CSTSPINMANAGER_H +#define CSTSPINMANAGER_H + +// INCLUDES +#include +#include +#include "cstspinapdu.h" // for TPinApduType +#include "functionserver.h" +#include "cstsconnection.h" +#include + +class SecurityDialogFactory; +class MSecurityDialog; + +namespace java +{ +namespace satsa +{ + +// FORWARD DECLARATIONS + + +class CSTSApduExchanger; +class CSTSAccessControl; +class CSTSAuthType; +class CSTSPinAttributes; +class CSTSPinApduResp; +class MSTSRespHandler; + +// CLASS DECLARATION + +/** + * Handles PIN related methods and shows needed UIs. + * + * @since 3.0 + */ +NONSHARABLE_CLASS(CSTSPinManager): public CActive +{ + +public: // data types + enum TPinRetryCounter + { + EFirstTime = 0, + ERetrying = 1, + EPINBlocked = 2 + }; +private: + enum TPinManagerState + { + EShowingPinBlockedUI, + EShowing1ValuePinUI, + EShowing2ValuePinUI, + ESendingPINApdu + }; + +public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CSTSPinManager* NewL(JNIEnv* aJni,jobject aPeer, + CSTSApduExchanger* aApduExchanger, + CSTSAccessControl* aAccessControl, + MSTSRespHandler* aRespHandler); + + /** + * Destructor. + */ + virtual ~CSTSPinManager(); + +public: // New functions + + /** + * Uses UI for getting PIN value from user. Constructs + * needed APDU message and sends it to card. Returns + * response adpu to caller. + * @since 3.0 + * @param aPinID Which PIN value will be used + */ + void DisablePinL(TInt aPinID); + + /** + * Uses UI for getting PIN value from user. Constructs + * needed APDU message and sends it to card. Returns + * response adpu to caller. + * @since 3.0 + * @param aPinID Which PIN value will be used + */ + void ChangePinL(TInt aPinID); + + /** + * Uses UI for getting PIN value from user. Constructs + * needed APDU message and sends it to card. Returns + * response adpu to caller. + * @since 3.0 + * @param aPinID Which PIN value will be used + */ + void EnablePinL(TInt aPinID); + + /** + * Uses UI for getting PIN value from user. Constructs + * needed APDU message and sends it to card. Returns + * response adpu to caller. + * @since 3.0 + * @param aPinID Which PIN value will be used + */ + void EnterPinL(TInt aPinID); + + /** + * Uses UI for getting PIN values from user. Constructs + * needed APDU message and sends it to card. Returns + * response adpu to caller. + * @since 3.0 + * @param aBlockedPinID Which PIN value is blocked + * @param aUnblockedPinID Which PIN value will unblock the PIN + */ + void UnblockPinL(TInt aBlockedPinID, TInt aUnblockedPinID); + + /** + * Cancels pin method operation execution. + * @since 3.0 + */ + void CancelOperation(); + +protected: // Functions from base classes + + /** + * From CActive RunL + * @return void + */ + void RunL(); + + /** + * From CActive Cancel request + * @return void + */ + void DoCancel(); + + /** + * From CActive RunError + * @return The leave code + */ + TInt RunError(TInt aError); + +private: + + /** + * C++ default constructor. + */ + CSTSPinManager(CSTSApduExchanger* aApduExchanger, + CSTSAccessControl* aAccessControl, + MSTSRespHandler* aRespHandler); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Convert gived PIN value to needed form with help of PIN attributes + * @since 3.0 + * @param aPinAttributes PIN attributes + * @param aPinValue PIN value which must be converted + * @param aConvertedPIN Adds converted PIN to this buffer + */ + void ConvertPINL(const CSTSPinAttributes& aPinAttributes, + const TDes& aPinValue, + HBufC8*& aConvertedPIN); + + /** + * Makes preparation common for all PIN methods. + * @since 3.0 + * @param aPinApduType Type of PIN APDU + * @param aFirstPinID PIN id number + * @param aUnblockedPinID Unblocked PIN id number in Unblock case. + * Otherwise can be left empty. + */ + void PreparePinMethodL(CSTSPinApdu::TSTSPinApduType aPinApduType, + TInt aFirstPinID, + TInt aUnblockedPinID = KErrNotFound); + + /** + * Shows correct PIN UI depending on PIN apdu type + * @since 3.0 + * @param aPinApduType Type of PIN APDU + */ + void ShowPinUI(CSTSPinApdu::TSTSPinApduType aPinApduType); + + /** + * Delivers responsebytes to response handler (to java side). + * @since 3.0 + */ + void DeliverResponseL(); + + /** + * Sets needed parameters for PIN UI. + * @since 3.0 + * @param aAuthType Authtype where parameters will be get + * @param aPINParams Object where parameters will be set + */ + void SetPINUIParametersL(const CSTSAuthType* aAuthType, + TPINParams& aPINParams); + + /** + * Does needed operations after APDU is send and response + * is got from card. + * @since 3.0 + */ + void DoAfterSendApduL(); + + /** + * Does needed operations after PIN UI of one PIN value is + * showed to user. + * @since 3.0 + */ + void DoAfter1ValuePinUIL(); + + /** + * Does needed operations after PIN UI of two PIN value is + * showed to user. + * @since 3.0 + */ + void DoAfter2ValuePinUIL(); + + /** + * Finds proper maximum length of PIN. + * @since 3.0 + * @param aAuthType Authtype where lengths will be get + * @param aReturnBiggest If there is need to get maxlength or + * stored length depending on which one is biggest for buffer creation + * purposes this must be set to ETrue. + */ + TInt PINMaxLength(const CSTSAuthType* aAuthType, + TBool aReturnBiggest = EFalse) const; + +private: // Data + + MSecurityDialog* iSecurityDialog; + CSTSApduExchanger* iApduExchanger; //not owned + CSTSAccessControl* iAccessControl; //not owned + + TPINParams iPINParamsFirstPin; + TPINParams iPINParamsSecondPin; + + //pointer to authTypes, owned + CSTSAuthType* iAuthTypeFirstPin; + CSTSAuthType* iAuthTypeSecondPin; + + //save information of current PIN retry state + TPinRetryCounter iRetries; + + CSTSCmdApdu* iPinApdu; //owned + CSTSPinApduResp* iPinApduResp; //owned + + MSTSRespHandler* iRespHandler; //not owned + + HBufC8* iResponseBuf; + + TPinManagerState iState; + + //PIN UI returned pin will be put to this + TPINValue iPinValueForFirstPin; + TPINValue iPinValueForSecondPin; + + //saves information which pin method is called + CSTSPinApdu::TSTSPinApduType iPinApduType; + JNIEnv* mJni; + jobject mPeer; +}; + +} //namespace satsa +} //namespace java +#endif // CSTSPINMANAGER_H +// End of File