cryptomgmtlibs/cryptotokenfw/inc/ct/MCTTokenType.h
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/cryptotokenfw/inc/ct/MCTTokenType.h	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*/
+
+
+
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef __MCTTOKENTYPE_H__
+#define __MCTTOKENTYPE_H__
+
+#include <f32file.h>
+#include <ct/rcpointerarray.h>
+
+class CCTTokenTypeInfo;
+class MCTToken;
+class TCTTokenHandle;
+
+
+/** 
+ * A token type.
+ *
+ * This abstract class is instantiated using the ECom Plug-in Architecture 
+ * for a particular token type. It allows a list of available tokens of that 
+ * type to be obtained, and particular tokens to be opened.
+ * 
+ * All implementation classes are in fact a subclass of CCTTokenType; refer to 
+ * its documentation for implementation details. Client access is entirely through 
+ * this M class.
+ * 
+ * The difference betweeen a token type and a token is best explained with an 
+ * example. Suppose a device has two identical WIM slots, the code to handle WIMs 
+ * is one token type, which will have two tokens for the two WIMs. 
+ *
+ * @since v7.0 
+ */
+ class MCTTokenType
+	{
+ public:
+	// Static constructor functions that use ECom to load the actual implementation.
+	/** 
+	 * Creates a MCTTokenType given it's CCTTokenTypeInfo
+	 *
+	 * The definition of this inline function is in CCTTokenType.h.  If you call
+	 * this function, you need to link against ctfinder.dll as well as
+	 * ctframework.dll
+	 *
+	 * @param aInfo	Information about the token type.
+	 * @param aFs	An open file server session.
+	 * @return		The new token type object. 
+	 */
+	inline static MCTTokenType* NewL(const CCTTokenTypeInfo& aInfo, RFs aFs);
+	
+	/** 
+	 * Creates a MCTTokenType given the UID of the token type. 
+	 *
+	 * The definition of this inline function is in CCTTokenType.h.  If you call
+	 * this function, you need to link against ctfinder.dll as well as
+	 * ctframework.dll
+	 *
+	 * @param aUID	The UID of the token type.
+	 * @param aFs	An open file server session.
+	 * @return		A new token type object. 
+	 */
+	inline static MCTTokenType* NewL(TUid aUID, RFs aFs);
+	
+	/** 
+	 * Lists all the tokens of this type.
+	 *
+	 * This is an asynchronous request.
+	 *
+	 * Tokens are defined by name, so instead of returning a CCTTokenTypeInfo object, 
+	 * this function just gives a list of pointers to HBufC objects.
+	 *
+	 * @param aTokens	On return, a list of all the tokens.
+	 * @param aStatus	The request status object; contains the result of the List() 
+	 * 					request when complete. Set to KErrCancel if an outstanding request is cancelled. 
+	 */
+	virtual void List(RCPointerArray<HBufC>& aTokens, 
+					  TRequestStatus& aStatus) = 0;
+	
+	/** 
+	 * Cancels an asynchronous List() operation.
+	 *
+	 * The operation completes with KErrCancel. 
+	 */
+	virtual void CancelList() = 0;
+	
+	/** 
+	 * Opens the specified token.	
+	 *
+	 * @param aTokenInfo	Information about the required token.
+	 * @param aToken		On return, the token to be opened.
+	 * @param aStatus		The request status object; contains the result of the OpenToken() 
+	 * 						request when complete. Set to KErrCancel if an outstanding request is cancelled. 
+	 */
+	virtual void OpenToken(const TDesC& aTokenInfo, MCTToken*& aToken, 
+						   TRequestStatus& aStatus) = 0;
+	
+	/** 
+	 * Opens the specified token. 	
+	 *
+	 * @param aHandle	The handle of the token.
+	 * @param aToken	On return, the token to be opened.
+	 * @param aStatus	The request status object; contains the result of the OpenToken() 
+	 * 					request when complete. Set to KErrCancel if an outstanding request is cancelled. 
+	 */
+	virtual void OpenToken(TCTTokenHandle aHandle, MCTToken*& aToken, 
+						   TRequestStatus& aStatus) = 0;
+
+	/** 
+	 * Cancels an asynchronous OpenToken() operation.
+	 *
+	 * The operation completes with KErrCancel. 
+	 */
+	virtual void CancelOpenToken() = 0;
+	
+	/** 
+	 * Releases the token type object.
+	 *
+	 * To be called when you have finished with the object.
+	 *
+	 * The API does not allow the destructor to be directly called as this object 
+	 * could remain in existence for longer to hold onto the ECom handle on the DLL; 
+	 * for instance, it may not be deleted until all tokens and interfaces have also 
+	 * been released. 
+	 */
+	virtual void Release() = 0;
+
+	/** 
+	 * Gets the UID of the token type.
+	 *
+	 * This function is implemented by CCTTokenType, so token type implementers need 
+	 * not implement it.
+	 *
+	 * @return	The UID of the token type. 
+	 */
+	virtual TUid Type() const = 0;
+
+	/** 
+	 * Gets the label of the token type.
+	 *
+	 * This function is implemented by CCTTokenType, so token type implementers need 
+	 * not implement it.
+	 *
+	 * @return	The label to the token type. 
+	 */
+	virtual const TDesC& Label() const = 0;
+	};
+
+#endif //__MCTTOKENTYPE_H__