wim/WimPlugin/inc/WimToken.h
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/WimPlugin/inc/WimToken.h	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,263 @@
+/*
+* 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:  A token represents one instance of a particular kind of 
+*                cryptographic module
+*
+*/
+
+
+
+#ifndef CWIMTOKEN_H
+#define CWIMTOKEN_H
+
+//  INCLUDES
+
+#include "WimSecModule.h"
+#include <e32base.h>
+#include <ct.h>
+
+// FORWARD DECLARATION
+
+class CWimTokenListener;
+class MCTCertStore;
+class MCTWritableCertStore;
+class MCTKeyStore;
+class MCTAuthenticationObjectList;
+
+// CLASS DECLARATION
+
+/**
+*  CWimToken is a class which implements one cryptographic interface
+*
+*
+*  @lib   WimPlugin
+*  @since Series60 2.1
+*/
+class CWimToken : public CBase, public MCTToken
+    {
+	public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        * @param aWimSecModule (IN) Current security module
+        * @param aTokenType (IN) Created token's token type
+        * @return  An instance of this class
+        */
+        static CWimToken* NewL( CWimSecModule* aWimSecModule, 
+										 MCTTokenType& aTokenType );
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CWimToken();
+
+    public: // Functions from base class MCTToken
+        
+		/**
+        * Returns a reference to this token's label.
+        * @return  A Reference to this token's label.
+        */
+		const TDesC& Label();
+        
+		/**
+        * Returns the associated token type.
+        * @return A reference to token's token type
+        */
+		MCTTokenType& TokenType();
+        
+		/**
+        * Returns the token's handle which is TCTTokenHandle class.
+        * @return tokens handle
+        */
+		TCTTokenHandle Handle();
+        
+        /** 
+        * Returns the specified information string about the token.
+        * @param aRequiredInformation (IN) Specifies the required information
+        *        needed from the token. See value from TTokenInformation.
+        * @return TDesC&  (OUT) Information string of the token, or KNullDesC,
+        *         if token information cannot be given
+        */
+        const TDesC& Information( 
+                                TTokenInformation aRequiredInformation );
+
+		/**
+		* Notifies the client when the token has been removed. Notify is 
+        * given by changing the status code of given TRequestStatus.
+        * The caller should give listener's TRequestStatus in pending state 
+        * to this function.
+        * Note: this is not an asynchronous call, it only stores the
+        * address of given TRequestStatus for later notifications.
+		* @param  aStatus (IN/OUT) Async. request status.
+        *         KErrPending, token is on it's place
+        *         KErrCancel, caller has cancelled to notify token removal
+        *         KErrHardwareNotAvailable, token is removed
+		*		  Any other system error code
+		* @return void
+		*/
+		void NotifyOnRemoval( TRequestStatus& aStatus );
+
+		/**
+		* Cancels the NotifyOnRemoval request.
+		* @return void
+		*/
+		void CancelNotify();
+
+	protected: // Functions from base class MCTToken
+
+        /**
+        * Returns a reference to pointer of an interface object.
+		* The caller owns all the parameters.
+        * @param  aRequiredInterface (IN) The UID of the interface that 
+		*		  should be returned
+		* @param  aReturnedInterface (OUT). This will be set to a pointer to 
+		*		  the returned interface on success and
+		*		  to NULL if it isn't supported by this token
+        * @param  aStatus (IN/OUT) Async. request status.
+		*		  KErrNone, if all ok and interface returned
+		*		  KErrCancel, if call canceled
+		*		  KErrNotSupported, if interface not supported
+        *         KErrHardwareNotAvailable, if Wim card suddenly removed
+        *         Any other system wide error code (e.g. KErrNoMemory)
+		* @return void
+        */
+        void DoGetInterface( TUid aRequiredInterface,
+						              MCTTokenInterface*& aReturnedInterface, 
+						              TRequestStatus& aStatus );
+		
+		/**
+        * Cancels DoGetInterface operation.
+        * @return Boolean value: true, if cancel is appropriate, false if
+        *         cancel is not appropriate
+        */
+		TBool DoCancelGetInterface();
+
+	public: // New functions
+
+		/**
+		* Returns a pointer to current security module.
+		* @return A pointer to current security module
+		*/
+		CWimSecModule* WimSecModule();
+
+		/**
+		* Returns a pointer to token listener
+		* @return A pointer to token listener
+		*/
+		CWimTokenListener* TokenListener();
+
+		/**
+		* Returns a boolean indicating if token is removed
+		* @return True, if token removed, false if not
+		*/
+		TBool TokenRemoved();
+
+    protected:  // New functions
+        
+        /**
+        * Returns a reference to a variable to be used as a reference counter
+        * @return  A reference to reference counter
+        */
+        TInt& ReferenceCount();
+
+	private: // Constructors
+    
+        /**
+        * Default constructor.
+        * @param aWimSecModule (IN) Current security module
+        * @param aTokenType (IN) Created token's token type
+        */
+        CWimToken( CWimSecModule* aWimSecModule, 
+				   MCTTokenType& aTokenType );
+
+        void ConstructL();
+
+	private: // Own function
+
+        /**
+        * Returns as a parameter a reference to pointer of an interface object.
+        * @param  aRequiredInterface (IN) The UID of the interface that 
+		*		  should be returned
+		* @param  aReturnedInterface (OUT). This will be set to a pointer to 
+		*		  the returned interface on success and
+		*		  to NULL if it isn't supported by this token
+        * @param  aStatus (IN/OUT) Async. request status.
+		*		  KErrNone, if all ok and interface returned
+        *         KErrHardwareNotAvailable, if Wim card suddenly removed
+        *         Any other system wide error code (e.g. KErrNoMemory)
+		* @return void
+        */
+        void MakeInterfaceL( TUid aRequiredInterface,
+                             MCTTokenInterface*& aReturnedInterface );
+    private:    
+		
+		// A pointer to current security module.
+		// This class don't own the pointed object.
+		CWimSecModule* iWimSecModule;
+
+		// Reference to the token type of this token. 
+		// This class don't own the referenced object.
+		MCTTokenType& iTokenType;
+
+		// A pointer to label buffer that contains the name of this token.
+		// This class owns the pointed object.
+		HBufC* iLabel;
+
+		// A variable needed for reference counting
+		TInt iCount;
+
+		// Used in token notify on removal
+		CWimTokenListener* iWimTokenListener;
+
+  		// A pointer to certificate store
+		// Ownership of pointed object is transferred to caller
+		MCTCertStore* iCertStoreIf;
+
+		// A pointer to writable certificate
+		// Ownership of pointed object is transferred to caller
+		MCTWritableCertStore* iCertStoreWritableIf;
+
+		// A pointer to Wim key store
+		// Ownership of pointed object is transferred to caller
+		MCTKeyStore* iKeyStoreIf;
+
+		// A pointer to Wim authentication object list
+		// Ownership of pointed object is transferred to caller
+		MCTAuthenticationObjectList* iAuthObjectListIf;
+
+    };
+
+        /**
+        * Helper class to filter token types
+        */
+
+class TCurrentTokenType : public MCTTokenTypeFilter
+    {
+
+    public: // From base class MCTTokenTypeFilter
+    
+        /**
+        * Sets value to given token type info.
+        * @param  aTokenType  (IN) Info class for token type
+        * @return ETrue if current token type is same as given token type
+        *         EFalse, if not
+        */
+        virtual TBool Accept( const CCTTokenTypeInfo& aTokenType ) const;
+
+    };
+
+
+#endif      // CWIMTOKEN_H   
+            
+// End of File