wim/WimClient/inc/WimSecModule.h
changeset 0 164170e6151a
child 5 3b17fc5c9564
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/WimClient/inc/WimSecModule.h	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,280 @@
+/*
+* 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 WIM Security Module
+*
+*/
+
+
+
+#ifndef WIMSECMODULE_H
+#define WIMSECMODULE_H
+
+//  INCLUDES
+#include "WimClsv.h"
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CWimPin;
+class RWimMgmt;
+
+
+// CLASS DECLARATION
+
+/**
+*  API for managing WIM Security Module.
+*  Provides methods to manage one WIM Security Module:
+*  check statuses, change settings, use functionality 
+*  provide it and list PINs.
+*
+*  @lib WimClient
+*  @since Series 60 2.1
+*/
+class CWimSecModule: public CActive
+    {
+    public:  // Constructors and destructor
+                    
+        /**
+        * Two-phased constructor.
+        * @param aWimAddr
+        */
+        IMPORT_C static CWimSecModule* NewL( TWimAddress aWimAddr ); 
+        
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~CWimSecModule();
+
+    public: // New functions
+            
+        /**
+        * Checks is WIM already open.
+        * @return ETrue if WIM's is open (=PIN-G verified)
+        *         else EFalse  
+        */
+        IMPORT_C TBool IsOpen(); 
+
+        /**
+        * Returns the time which is set as WIM closeout time
+        * @return Timeout in minutes
+        */
+        IMPORT_C TInt CloseAfter();
+
+        /**
+        * Returns the timeout which tells how 
+        * long WIM Security Module will be open 
+        * after it is opened.
+        * @return Timeout in minutes
+        */
+        IMPORT_C TInt TimeRemaining();
+
+        
+        /**
+        * Returns WIM Security Module's keys' PIN-NR objects in array.
+        * @param aPinNRs -Array of pointers to CWimPin objects which
+        *                are initialized as PIN-NR. (IN/OUT)
+        * @return TInt  -Error code
+        */
+        IMPORT_C TInt PinNrEntriesL( const CArrayPtrFlat<CWimPin>*& aPinNRs, TRequestStatus& aStatus  );
+     
+        /**
+        * Returns WIM Security Module's keys' PIN-NR objects in array.
+        * @param aPinNRs -Array of pointers to CWimPin objects which
+        *                are initialized as PIN-NR. (IN/OUT)
+        * @return TInt  -Error code
+        */
+        IMPORT_C TInt PinNrEntriesL( const CArrayPtrFlat<CWimPin>*& aPinNRs );
+        
+        /**
+        * Returns WIM's version. This will return KErrNone according to PKC15. 
+        * @return Pointer descriptor containing version.
+        */
+        IMPORT_C const TDesC& Version();
+
+        /**
+        * Returns WIM's label.
+        * @return Pointer descriptor containing label.
+        */
+        IMPORT_C TPtrC Label();
+
+        /**
+        * Returns WIM's manufacturer.
+        * @return Pointer descriptor containing manufacturer.
+        */
+        IMPORT_C const TDesC& Manufacturer();
+
+        /**
+        * Returns WIM's serial number which identifies it.
+        * @return Pointer descriptor containing serial number
+        */
+        IMPORT_C const TDesC& SerialNumber();
+
+        /**
+        * Closes the parts of WIM which is opened with PIN-G.
+        * @return TInt Error code
+        */
+        IMPORT_C TInt Close();
+
+        /**
+        * Sets the timeout which defines the time after WIM 
+        * is automatically closed.
+        * @param aTimeout, timeout in minutes.
+        * @return void
+        */
+        IMPORT_C void SetCloseAfter( const TUint aTimeout );
+
+
+        /**
+        * Notifies the client when the token has been removed.
+        * @param aStatus -TRequestStatus
+        * @return void
+        */
+        IMPORT_C void NotifyOnRemoval( TRequestStatus& aStatus );
+
+        /**
+        * Cancels the notifyOnRemoval request.
+        * @return void
+        */
+        IMPORT_C void CancelNotifyOnRemoval();
+
+        /**
+        * Returns the number of the slot, where current token is connected
+        * @return TUint8
+        */
+        IMPORT_C TUint8 TokenNumber();
+
+        /**
+        * Sets pointer RWimMgmt object to modifier iClientSession
+        * @param aClientSession Client session
+        * @return void
+        */
+        void SetClientSession( RWimMgmt* aClientSession );
+
+
+    private:
+
+        /**
+        * C++ constructor.
+        * @param aWimAddr
+        */
+        CWimSecModule( TWimAddress aWimAddr );
+
+        /**
+        * By default EPOC constructor is private.
+        */
+        void ConstructL();
+
+
+        /**
+        * Gets label,manufacturer,serialnumber and the number of 
+        * the slot where card is.
+        * @return TInt
+        */
+        TInt GetWIMInfoL(); 
+
+        /** 
+        * Handles cleanup for an object which is not derived from CBase
+        * @param aObject -object to be cleaned up
+        */
+        static void Cleanup( TAny* aObject );
+
+        /** 
+        * Converts serialnumber to 8-bit form. Conversion reads
+        * memory area from orginal serialnumber and captures its significant
+        * bits to a new 8-bit -modifier. 
+        * @param aSerialNumber -number to be converted
+        * @return void
+        */
+        void ConvertSerialNumberL( HBufC*& aSerialNumber );
+        
+    private:  
+        
+        /**
+        * Gets PIN references and creates new CWimPin objects
+        * @return TInt  -Error code
+        */
+        TInt GetPINModulesL( TRequestStatus& aStatus );
+        
+        /**
+        * Gets PIN references and creates new CWimPin objects
+        * @return TInt  -Error code
+        */
+        TInt GetPINModulesL();
+        
+    private: //from CActive
+        
+        /**
+        * Different phases are handled here.
+        * @return void
+        */
+        void RunL();
+        
+        /**
+        * Cancellation function
+        * Deallocates member variables and completes client status with
+        * KErrCancel error code.
+        * @return void
+        */
+        void DoCancel();
+
+        /**
+        * The active scheduler calls this function if this active 
+        * object's RunL() function leaves. 
+        * Handles neccessary cleanup and completes request with
+        * received error code.
+        * @param aError -Error code which caused this event
+        * @return TInt  -Error code to active scheduler, is always KErrNone.
+        */ 
+        TInt RunError( TInt aError );    
+  
+    private: 
+
+        // Reference to WIM. 
+        TWimAddress             iReference;  
+        // Array of pointers to PIN-NRs.This class owns this and
+        // this is valid as long as CWimSecModule is valid.
+        CArrayPtrFlat<CWimPin>* iPinNRs; 
+        //Contains tokens label.Owned
+        HBufC*                  iLabel;
+        //Contains tokens manufacturer.Owned
+        HBufC*                  iManufacturer;
+        //Contains tokens SerialNumber.Owned
+        HBufC*                  iSerialNumber;
+        //Contains tokens version. Owned
+        HBufC*                  iVersion;
+        //The "slot" where WIM-card is inserted
+        TUint8                  iReader;        
+        //pointer to RWIMMgmt. Owned by CWimSecModuleMgr.
+        RWimMgmt*               iClientSession;
+        //Boolean value 
+        TBool                   iWimInfoConstructed;
+        //TUint32, reference to pinlist.
+        TUint32                 iPinLstAddr;
+        //TUint32, reference to ping.
+        TPinAddress             iRefPing;
+        
+        TWimPinStruct*          iPinStructLst; //Owned
+        
+        TRequestStatus*         iClientStatus;
+        
+        TUint                   iPinCount;
+        
+        CArrayFixFlat<TWimPinStruct>* iPinInfoLst; //Owned
+        //ETrue if iPinNRs is initialized
+        TBool                   iPinNRsInit;
+
+    };
+
+#endif      // WIMSECMODULE_H   
+            
+// End of File