--- /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 <e32base.h>
+#include <secdlg.h>
+
+
+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<KLabelLen>& 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