diff -r 000000000000 -r 164170e6151a wim/WimPlugin/inc/WimToken.h --- /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 +#include + +// 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