diff -r 000000000000 -r 164170e6151a wim/inc/WimPin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wim/inc/WimPin.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,318 @@ +/* +* Copyright (c) 2002 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: API for managing PIN +* +*/ + + +#ifndef WIMPIN_H +#define WIMPIN_H + + +// INCLUDES +#include "WimClsv.h" +#include +#include + + +class RWimMgmt; + +/** +* API for managing PIN. +* This API provides methods to manage PIN: check statuses and +* change settings. +* +* @lib WimClient +* @since Series 60 2.6 +*/ +class CWimPin: public CActive + { + public: + + /** + * Two-phased constructor. + * @param aPin -the type of Pin + * @param aPinAddr -Reference to Pin structure + * @param aTokenLabel -the name of the token + */ + IMPORT_C static CWimPin* NewL( TWimPin aPin, + const TPinAddress aPinAddr, + TDesC& aTokenLabel ); + + /** + * Destructor. + */ + IMPORT_C virtual ~CWimPin(); + + + public: // New functions + + /** + * Enables Pin query of the Pin. + * The PinStatus() function should be called before + * calling this function to make sure the status of + * pin + * @param aStatus -Caller's status. + * @return void + */ + IMPORT_C void EnablePinQuery( TRequestStatus& aStatus ); + + /** + * Cancel enables Pin query of the Pin. + * @return void + */ + IMPORT_C void CancelEnablePinQuery(); + + /** + * Disables Pin query of the Pin. + * The PinStatus() function should be called before + * calling this function to make sure the status of + * pin + * @param aStatus -Caller's status. + * @return void + */ + IMPORT_C void DisablePinQuery( TRequestStatus& aStatus ); + + /** + * Cancel disables Pin query of the Pin. + * @return void + */ + IMPORT_C void CancelDisablePinQuery(); + + /** + * Changes Pin. + * The PinStatus() function should be called before + * calling this function to make sure the status of + * pin + * @param aStatus -Caller's status + * @return void + */ + IMPORT_C void ChangePin( TRequestStatus& aStatus ); + + /** + * Cancel changes Pin. + * @return void + */ + IMPORT_C void CancelChangePin(); + + /** + * Unblocks Pin + * The PinStatus() function should be called before + * calling this function to make sure the status of + * pin + * @param aStatus -Caller's status + * @return void + */ + IMPORT_C void UnblockPin( TRequestStatus& aStatus ); + + /** + * Cancel unblocks Pin + * @return void + */ + IMPORT_C void CancelUnblockPin(); + + /** + * Verifies the enterd Pin -request. + * The PinStatus() function should be called before + * calling this function to make sure the status of + * pin + * @param aStatus -Caller's status + * @return void + */ + IMPORT_C void VerifyPin( TRequestStatus& aStatus ); + + /** + * Cancel verifies the enterd Pin -request. + * @return void + */ + IMPORT_C void CancelVerifyPin(); + + /** + * Returns PIN's label. + * @return Pointer descriptor containing label. + */ + IMPORT_C TPtrC Label(); + + /** + * Returns the status of Pin. + * Variations are: WIMI_PF_Enabled + * WIMI_PF_ChangeDisabled + * WIMI_PF_UnblockDisabled + * WIMI_PF_DisableAllowed + * @return iStatus -status of Pin + */ + IMPORT_C TWimPinStatus PinStatus(); + + /** + * Returns the number of the pin. It is a number, which + * identifies pin object in the Wim -card. Pin number + * can be eg. 0,1,2.... + * @return TUint8 -PinNumber + */ + IMPORT_C TUint8 PinNumber(); + + public: + + /* + * Sets RWimMgmt* pointer to iClientSession + * @param aClientSession + * @return void + */ + void SetClientSession( RWimMgmt* aClientSession ); + + /* + * Sets Label + * return void + */ + void SetLabel( TBuf& aLabel ); + + /* + * Sets PinStatus + * return void + */ + void SetPinStatus( TWimPinStatus& aStatus ); + + /* + * Sets Pin Number + * return void + */ + void SetPinNumber( TUint8& aPinNumber ); + + private: + + /** + * Constructs pinparams struct. + * @param aPinParams -params to be constructed. + * @return TPINParams + */ + void PinParams( TPINParams& aPinParams ); + + /** + * Checks is Pin changeable. + * @return ETrue if PIN is changeable else returns EFalse. + */ + TBool PinChangeable(); + + /** + * C++ constructor. + * @param aPin -the type of the pin + * @param aPinAddr -Reference to Pin structure. + */ + CWimPin( TWimPin aPin, TPinAddress aPinAddr ); + + /** + * Default constructor is private. + * @param aTokenLabel -Label of the token + * @return void + */ + void ConstructL( const TDesC& aTokenLabel ); + + /* + * Get Pin Info. Initializes member variables. + * @return void + */ + void PinInfo( TRequestStatus& aStatus ); + + /** + * Sets own iStatus to KRequestPending, and signals it + * with User::RequestComplete() -request. This gives change + * to activescheduler to run other active objects. After a quick + * visit in activescheduler, signal returns to RunL() and starts next + * phase of operation. + * @return void + */ + void SignalOwnStatusAndComplete(); + + + private: //From CActive + + /** + * Different phases are handled here. + * @return void + */ + void RunL(); + + /** + * Cancellation function + * Not allowed to cancel + * @return void + */ + void DoCancel(); + + /** + * The active scheduler calls this function if this active + * object's RunL() function leaves. + * Handles necessary cleanup and completes request with + * received error code. + * @param aError -The error code which caused this function call. + * @return TInt -Error code to activescheduler, is always KErrNone. + */ + TInt RunError( TInt aError ); + + private: + + //Ten different phases for PIN handling + enum TPinPhase + { + EEnablePinQueryStart, + EEnablePinQueryEnd, + EDisablePinQueryStart, + EDisablePinQueryEnd, + EChangePinStart, + EChangePinEnd, + EUnblockPinStart, + EUnblockPinEnd, + EVerifyPinStart, + EVerifyPinEnd, + EUpdatePinStatus, + EUpdatePinStatusDone + }; + + //Used to handle different phases in RunL() + TPinPhase iPhase; + + TPinPhase iCurrentPhase; + + private: + + //Client status is stored here while operation + //on the server side is done. + TRequestStatus* iClientStatus; + // Reference to PIN. + const TPinAddress iReference; + //Pin type: Pin-G or PinNR + TWimPin iPinType; + //Holds label. Owned + HBufC* iLabel; + //Holds tokenlabel.Owned. + HBufC* iTokenLabel; + //Holds Pin-status + TWimPinStatus iPinStatus; + //pointer to clientSession. Owned by CWimSecModuleMgr. + RWimMgmt* iClientSession; + //Number that identifies Pin in the Wim. Its a running number 0,1,2.. + TUint8 iPinNumber; + //Struct for PIN parameters + TPINParams iPinParams; + //Struct for enable/disable information + TPINStateRequest iPinStateRequest; + //To store the status value from wimserver + TInt iReceivedStatus; + + TWimPinStruct iPinStruct; + + }; + +#endif +// End of File