cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_actions.h
changeset 8 35751d3474b7
parent 0 2c201484c85f
child 15 da2ae96f639b
--- a/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_actions.h	Tue Jul 21 01:04:32 2009 +0100
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_keystore_actions.h	Thu Sep 10 14:01:51 2009 +0300
@@ -1,1136 +1,1179 @@
-/*
-* Copyright (c) 2005-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
-*/
-
-#ifndef __T_KEYSTORE_ACTIONS_H__
-#define __T_KEYSTORE_ACTIONS_H__
-
-#include "t_testhandler.h"
-#include <e32cons.h>
-#include <badesca.h>
-#include "t_testaction.h"
-#include "t_output.h"
-#include <clientsession.h>
-#include <hash.h>
-#include <mctkeystore.h>
-#include <unifiedkeystore.h>
-#include <secdlgimpldefs.h>
-#include <bigint.h>
-
-typedef RPointerArray<CUnifiedKeyStore> RUnifiedKeyStoreArray;
-
-class CPBEncryptParms;
-
-enum TKSPanicCode
-{
-	EKSTestNotInitialised,
-	EKSTestUnexpected,
-	EKSTestResetPanic
-};
-
-class CSharedKeyStores : public CBase
-{
-public:
-	static void InitialiseKeyStoresL();
-	static void DestroyKeyStoresL();
-	static RUnifiedKeyStoreArray& TheUnifiedKeyStores();
-private:
-	CSharedKeyStores(){};
-	~CSharedKeyStores();
-private:
-	static CSharedKeyStores* iTheKeyStores;
-private:
-	RUnifiedKeyStoreArray iUnifiedKeyStores;
-};
-
-class CKeyStoreTestAction : public CTestAction
-{
-public:
-	virtual ~CKeyStoreTestAction();
-protected:
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	CKeyStoreTestAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	TInt SetExpectedResultL(const TDesC8& aResult);
-	TBool SetKeyUsageL(const TDesC8& aKeyUsage);
-	void SetKeyLabel(const TDesC8& aKeyLabel);
-	void SetKeyAlgorithm(const TDesC8& aKeyAlgorithm);
-	TBool SetKeyAccessType(const TDesC8& aKeyAccessType);
-	void DoPerformPrerequisite(TRequestStatus& aStatus);
-	void DoPerformPostrequisite(TRequestStatus& aStatus);
-	void AfterOOMFailure();
-	TBool AddExpectedDialogL(const TDesC8& aData);
-	void WriteExpectedDialogDataL();
-	void WriteDialogRecordL(RFileWriteStream& aStream, TSecurityDialogOperation aOp, const TDesC& aLabelSpec,
-							const TDesC& aResponse1, const TDesC& aResponse2);
-	TInt ReadDialogCountL();
-	void PrintKeyInfoL(const CCTKeyInfo& aKey);
-
-protected:
-	TUint iServerAlloc;
-	RFs& iFs;
-	TKeyUsagePKCS15 iUsage;
-	HBufC* iLabel;
-	CCTKeyInfo::EKeyAlgorithm iAlgorithm;
-	TInt iAccessType;
-	RPointerArray<HBufC> iExpectedDialogs;
-	TInt iKeystore;
-
-	// The following are here because they are used by most derived test actions
-	TCTKeyAttributeFilter iFilter;
-	RMPointerArray<CCTKeyInfo> iKeys;
-};
-
-class CInitialiseKeyStore : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole,	Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole,	Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CInitialiseKeyStore();
-public:
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	CInitialiseKeyStore(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	enum TState
-		{
-		ENew,
-		EInit,
-		EAppend,
-		EFinished,
-		EAnalyseResults
-		};
-
-private:
-	TState iState;
-	TBool iKeyManager;
-	TBool iEnableStoreCountCheck;
-	TInt iKeyStoreManagerCount;
-	TInt iKeyStoreCount;
-	TBool iEnableKeyStoreLabelCheck;
-	TInt iKeyStoreIndex;
-	TPtrC8 iKeyStoreLabel;
-	
-private:
-	CUnifiedKeyStore* iNewUnifiedKeyStore;
-};
-
-
-class COnlyCreateKeyStore : public CKeyStoreTestAction
-	{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole,	Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole,	Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~COnlyCreateKeyStore();
-public:
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	enum TState
-		{
-		EInit,
-		EFinished,
-		EErrNoMemory
-		};
-private:
-	COnlyCreateKeyStore(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	TState iState;
-	TBool iKeyManager;
-private:
-	CUnifiedKeyStore* iNewUnifiedKeyStore;
-};
-
-
-class CDeleteKeyStore : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CDeleteKeyStore();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	CDeleteKeyStore(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	enum TState
-		{
-		EDelete,
-		EFinished
-		};
-private:
-	TState iState;
-};
-
-class CAddKey : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CAddKey();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	void SetKeySize(const TDesC8& aKeySize);
-	void SetStartDate(const TDesC8& aData);
-	void SetEndDate(const TDesC8& aData);
-private:
-	CAddKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	enum TState
-		{
-		EAddKey,
-		EFinished
-		};
-private:
-	TState iState;
-private:
-	TUint iSize;
-	TTime iStartDate, iEndDate;
-	CCTKeyInfo* iKeyInfo;
-};
-
-
-class CListKeys : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CListKeys();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	CListKeys(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void SetKeySize(const TDesC8& aKeySize);
-	void SetListCount(const TDesC8& aListCount);
-	void AddFoundKeyL(const TDesC8& aFoundKey);
-private:	
-	enum TState
-		{
-		EListKeys,
-		EFinished
-		};
-private:
-	TState iState;
-
-	TInt iResultCount; // The expected result count (or -1 for don't care)
-	RCPointerArray<HBufC> iKeysToFind; // Labels of expected keys
-
-	// Filter componenets
-	TUint iSize;
-	CCTKeyInfo::EKeyAccess iAccessType;
-};
-
-/**
- The same as ListKeys except that it checks all stores
- */
-class CListAllKeys : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CListAllKeys();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	CListAllKeys(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void SetKeySize(const TDesC8& aKeySize);
-	void SetListCount(const TDesC8& aListCount);
-	void AddFoundKeyL(const TDesC8& aFoundKey);
-private:	
-	enum TState
-		{
-		EListKeys,
-		EFinished
-		};
-private:
-	TState iState;
-
-	TInt iStore;
-	
-	TInt iResultCount; // The expected result count (or -1 for don't care)
-	RCPointerArray<HBufC> iKeysToFind; // Labels of expected keys
-
-	// Filter componenets
-	TUint iSize;
-	CCTKeyInfo::EKeyAccess iAccessType;
-};
-
-//	Allows script to filter on keys algorithm (or all) and deletes listed keys
-//	and calls list again to ensure they've gone
-class CDeleteKeys : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CDeleteKeys();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	CDeleteKeys(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void SetNonExistent(const TDesC8&);
-	void SetDeleteCount(const TDesC8&);
-private:	
-	enum TState
-		{
-		EListKeys,
-		EDeleteAllKeys,
-		EDeleteNonExistentKey,
-		EDeleteKeyByLabel,
-		EFinished
-		};
-private:
-	TState iState;
-
-	TCTTokenObjectHandle iDeleteHandle;
-	TInt iInitialKeyCount;
-	TInt iFinalKeyCount;
-	TInt iDeletedCount;
-	TInt iDeleteIndex;
-	TInt iNonExistentKey;		//	Set!=0 if trying to delete something non existent
-	TInt iExpectedDeleteCount;	//	Number of keys expected to be deleted (-1 for don't care)
-};
-
-class CImportKey : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	virtual ~CImportKey();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-protected:
-	CImportKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void SetKeyDataFileL(const TDesC8& aDes);
-protected:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	TBool SetKeyUsage(const TDesC8& aKeyUsage);
-private:
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-protected:
-	HBufC8*  iImportFileName;
-	HBufC8* iKeyData;
-	CCTKeyInfo* iKeyInfo;
-private:
-	enum TState
-		{
-		EImportKey,
-		EFinished
-		};
-	TState iState;
-};
-
-
-class CExportKey : public CImportKey
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	virtual ~CExportKey();
-	virtual void PerformAction(TRequestStatus& aStatus);	
-	virtual void PerformCancel();
-	virtual void Reset();
-protected:
-	void WriteToFileL();
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	//void DoPerformPrerequisite(TRequestStatus& aStatus);
-protected:
-	void SetKeyDataFileL(const TDesC8& aDes);
-	void SetPBEParameters(const TDesC8& aCipher, const TDesC8& aSalt, const TDesC8& aIV, const TInt aIteration);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void SetKeyEncrypted(const TDesC8& aDes);
-protected:
-	CExportKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-protected:
-	TBool iEncrypted;
-	TFileName iKeyDataFile;
-	CPBEncryptParms* iPbeParams;
-	enum TState
-		{
-		EExportKey,
-		EListing,
-		EIntermediate,
-		EFinished
-		};
-	TState iState;	
-};
-
-class CExportPublicKey : CExportKey
-	{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	 ~CExportPublicKey();
-	virtual void PerformAction(TRequestStatus& aStatus);	
-	virtual void PerformCancel();
-protected:
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	CExportPublicKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	};
-
-/**
-* Compare two files bit-wise. This is used as a sanity check
-* for key import/export.
-*/
-class CCompare : public CKeyStoreTestAction
-	{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CCompare();
-	virtual void PerformAction(TRequestStatus& aStatus);	
-	virtual void PerformCancel();
-	virtual void Reset();	
-protected:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	TInt CompareFilesL();
-private:
-	CCompare(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);	
-private:
-	TFileName iOriginalFile;
-	TFileName iNewFile;
-	TInt pos;
-	enum TState
-		{
-		EComparing,
-		EFinished
-		};
-	TState iState;	
-	};
-	
-class CCorrupt : public CKeyStoreTestAction
-	{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CCorrupt();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-private:
-	CCorrupt(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	void DoCorruptL();
-private:
-	enum TState
-		{
-		ECorrupting, 
-		EFinished
-		};
-private:
-	HBufC8* iCorruptionData;
-	TState iState;
-	};
-
-// Gets a key by handle. As the script can't know the handle, the
-// script lists all keys, identifies a key by name and then gets it by
-// handle. This action allows all attributes of a key to be specified.
-class CGetKeyInfo : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CGetKeyInfo();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	CGetKeyInfo(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	TBool SetKeyUsage(const TDesC8& aKeyUsage);
-	void SetKeySize(const TDesC8& aKeySize);
-	void SetNative(const TDesC8& aData);
-	void SetStartDate(const TDesC8& aData);
-	void SetEndDate(const TDesC8& aData);
-private:	
-	enum TState
-		{
-		EListKeysPreGet,
-		EGet,
-		EFinished
-		};
-private:
-	TState iState;
-
-	TCTTokenObjectHandle iGetHandle;
-	CCTKeyInfo* iKey;
-	TUint iSize;
-	TBool iNativeSet, iNative;
-	TTime iStartDate, iEndDate;
-};
-
-
-//	Allows script to filter on keys algorithm (or all) and deletes listed keys
-//	and calls list again to ensure they've gone
-class COpenKey : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~COpenKey();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	COpenKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void SetKeyType(const TDesC8& aKeyType);
-private:
-private:	
-	enum TState
-		{
-		EListKeysPreOpen,
-		EOpenKey,
-		EFinished
-		};
-
-	enum TKeyTypes
-		{
-		ERSASign,
-		EDSASign,
-		EDH,
-		EDecrypt
-		};
-private:
-	TState iState;
-
-	TKeyTypes iType;
-
-	TCTTokenObjectHandle iDeleteHandle;
-//	Filter components
-	MRSASigner* iRSASigner;
-	MDSASigner* iDSASigner;
-	MCTDecryptor* iDecryptor;
-	MCTDH* iDH;
-};
-
-//	Allows script to sign, filter on keys algorithm (or all) and deletes listed keys
-//	and calls list again to ensure they've gone
-class CSign : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CSign();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	CSign(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void SetSignText(const TDesC8&);
-	void SetKeyType(const TDesC8& aKeyType);
-	void SetDigestSignL(const TDesC8&);
-private:	
-	enum TState
-		{
-		EListKeysPreOpen,
-		EOpenKey,
-		ESign,
-		EExportPublic,
-		EVerify,
-		EFinished
-		};
-
-	enum TKeyTypes
-		{
-		ERSASign,
-		EDSASign,
-		EDH,
-		EDecrypt
-		};
-private:
-	TState iState;
-	TBool iVerifyResult;
-	TKeyTypes iType;
-	TCTTokenObjectHandle iExportHandle;
-//	Filter components
-	HBufC8* iReadText;		//	Text to sign, read in from script
-	HBufC8*	iExportedPublicKey;		
-	MRSASigner* iRSASigner;
-	MDSASigner* iDSASigner;
-	MCTDecryptor* iDecryptor;
-	MCTDH* iDH;
-	CDSASignature* iDSASignature;
-	CRSASignature* iRSASignature;
-	CMessageDigest* iHash;
-	TBool iFailHashDigest;	//	Should hash the digest beforehand, but doesn't
-};							//	to test failure mode
-
-class CDecrypt : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CDecrypt();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	CDecrypt(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void SetSignText(const TDesC8&);
-private:	
-	enum TState
-		{
-		EListKeysPreOpen,
-		EOpenKey,
-		EDecrypt,
-		EExportPublic,
-		EVerify,
-		EFinished
-		};
-
-private:
-	TState iState;
-	TBool iVerifyResult;
-
-	TCTTokenObjectHandle iExportHandle;
-//	Filter components
-	HBufC8* iReadText;		//	Text to sign, read in from script
-	HBufC8*	iPlainText;	
-	TPtr8 iPlainTextPtr;
-	MCTDecryptor* iDecryptor;
-	HBufC8* iPublic;
-};
-
-class CDHKeyPair;
-class CDHPublicKey;
-
-class CDerive : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CDerive();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	CDerive(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:	
-	enum TState
-		{
-		EListKeysPreOpen,
-		EOpenKey,
-		EDerive,
-		EExportPublic,
-		EVerify,
-		EFinished
-		};
-
-private:
-	TState iState;
-	TBool iVerifyResult;
-
-	TCTTokenObjectHandle iExportHandle;
-	RInteger iN;
-	RInteger iG;
-	CDHKeyPair* iRemote;
-	MCTDH* iDH;
-	CDHPublicKey* iPublicKey;
-	HBufC8* iOutput;
-};
-
-class CDeleteKeyStoreData : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CDeleteKeyStoreData();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	CDeleteKeyStoreData(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	enum TState
-		{
-		EDelete,
-		EFinished
-		};
-private:
-	TState iState;
-};
-
-/**
- * Test setting the users of a key.
- */
-class CSetUsers : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CSetUsers();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	TBool AddUserL(const TDesC8& aKeySize);
-private:
-	CSetUsers(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	enum TState
-		{
-		EListKeys,
-		EMain,
-		EFinished
-		};
-private:
-	TState iState;
-private:
-	RArray<TUid> iUsers;
-};
-
-/**
- * Test setting the passphrase timeout using the SetPassphraseTimeout method on
- * the unified key store.
- */
-class CSetTimeout : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CSetTimeout();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	CSetTimeout(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	enum TState
-		{
-		EMain,
-		EFinished
-		};
-private:
-	TState iState;
-private:
-	TInt iNewTimeout;
-};
-
-/**
- * Test relocking the store.
- */
-class CRelockStore : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CRelockStore();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	CRelockStore(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	enum TState
-		{
-		EMain,
-		EFinished
-		};
-private:
-	TState iState;
-};
-
-/**
- * Set the client UID.
- *
- * In order to test the keystore easily, it's sometimes necessary to impersonate
- * different processes.  This test action sets the UID of the current process.
- * Currently this actually changyes the process UID - when this becomes
- * impossible due to platform security, a differnt approach will be needed
- * (probably a debug-mode-only keystore message telling to to treat the client
- * as if it had a different UID).
- */
-class CSetClientUid : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CSetClientUid();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	CSetClientUid(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-private:
-	enum TState
-		{
-		EMain,
-		EFinished
-		};
-private:
-	TState iState;
-	TUid iUid;
-};
-
-/**
- * Set the home time on the device.
- *
- * We need to be able to set the time so we can create keys and then make them
- * expire.
- */
-class CSetTime : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CSetTime();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	CSetTime(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	void SetNewTimeL(const TDesC8& aData);
-private:
-	enum TState
-		{
-		EMain,
-		EFinished
-		};
-private:
-	TState iState;
-	TTime iNewTime;
-};
-
-/**
- * A templated class for test actions that test authentication objects.  This
- * does most of the fiddly test stuff - the implementation of the test itself is
- * provided by the template parameter.
- */
-template <class TTestImpl>
-class CAuthObjectTest : public CKeyStoreTestAction
-	{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	virtual ~CAuthObjectTest();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-private:
-	CAuthObjectTest(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	void Reset();
-private:
-	enum TState
-		{
-		EListKeys,
-		EMain,
-		EFinished
-		};
-private:
-	TState iState;
-	TTestImpl iImpl;
-    MCTAuthenticationObject* iAuth;
-	};
-
-/**
- * Base class for auth object test implmentations, supplies default method implementations.
- */
-class TAuthObjectTest
-	{
- public:
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void Reset();
-	TBool CheckResult(Output& aOut);
-	};
-
-/**
- * Test changing the passphrase.
- */
-class TChangePassphrase : public TAuthObjectTest
-	{
- public:
-	const TDesC& Name();
-	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
-    void DoCancel(MCTAuthenticationObject& aAuth);
-	};
-
-typedef CAuthObjectTest<TChangePassphrase> CChangePassphrase;
-
-/**
- * Test listing protected objects.
- */
-class TListProtectedObjects : public TAuthObjectTest
-	{
- public:
-	~TListProtectedObjects();
-	const TDesC& Name();
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
-	TBool CheckResult(Output& aOut);
-	void Reset();
-    void DoCancel(MCTAuthenticationObject& aAuth);
- private:
-	TBool AddExpectedKeyL(const TDesC8& aKeyLabel);
- private:
-	RPointerArray<HBufC> iExpectedKeys;
-	RMPointerArray<MCTTokenObject> iObjects;
-	};
-
-typedef CAuthObjectTest<TListProtectedObjects> CListProtectedObjects;
-
-/**
- * Test unblocking the passphrase.
- */
-class TUnblockPassphrase : public TAuthObjectTest
-	{
- public:
-	const TDesC& Name();
-	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);	
-    void DoCancel(MCTAuthenticationObject& aAuth);
-	};
-
-typedef CAuthObjectTest<TUnblockPassphrase> CUnblockPassphrase;
-
-/**
- * Test auth object open method.
- */
-class TAuthOpen : public TAuthObjectTest
-	{
- public:
-	const TDesC& Name();
-	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);	
-    void DoCancel(MCTAuthenticationObject& aAuth);
-	};
-
-typedef CAuthObjectTest<TAuthOpen> CAuthOpen;
-
-/**
- * Test auth object close method.
- */
-class TAuthClose : public TAuthObjectTest
-	{
- public:
-	const TDesC& Name();
-	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);	
-    void DoCancel(MCTAuthenticationObject& aAuth);
-	};
-
-typedef CAuthObjectTest<TAuthClose> CAuthClose;
-
-/**
- * Test get time remaining.
- */
-class TGetTimeRemaining : public TAuthObjectTest
-	{
- public:
-	const TDesC& Name();
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
-	TBool CheckResult(Output& aOut);
-    void DoCancel(MCTAuthenticationObject& aAuth);
- private:
-	TInt iExpectedTime;
-	TInt iTimeRemaining;
-	};
-
-typedef CAuthObjectTest<TGetTimeRemaining> CGetTimeRemaining;
-
-/**
- * Test set timeout via auth object.
- */
-class TAuthSetTimeout : public TAuthObjectTest
-	{
- public:
-	const TDesC& Name();
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
-    void DoCancel(MCTAuthenticationObject& aAuth);
- private:
-	TInt iNewTimeout;
-	};
-
-typedef CAuthObjectTest<TAuthSetTimeout> CAuthSetTimeout;
-
-/**
- * Test get timeout.
- */
-class TGetTimeout : public TAuthObjectTest
-	{
- public:
-	const TDesC& Name();
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
-	TBool CheckResult(Output& aOut);
-    void DoCancel(MCTAuthenticationObject& aAuth);
- private:
-	TInt iExpectedTimeout;
-	TInt iTimeout;
-	};
-
-typedef CAuthObjectTest<TGetTimeout> CGetTimeout;
-
-
-/**
- * Get the use or management policy of a key.
- */
-class CGetPolicy : public CKeyStoreTestAction
-	{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CGetPolicy();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	CGetPolicy(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	void SetNewTimeL(const TDesC8& aData);
-private:
-	enum TState
-		{
-		EListKeys,
-		EFinished
-		};
-private:
-	TBool iTestUsePolicy;
-	TSecurityPolicy iExpectedPolicy;
-	TState iState;
-	TSecurityPolicy iPolicy;
-	};
-
-/**
- * Set the use or management policy of a key.
- */
-class CSetPolicy : public CKeyStoreTestAction
-{
-public:
-	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
-	~CSetPolicy();
-	virtual void PerformAction(TRequestStatus& aStatus);
-	virtual void PerformCancel();
-	virtual void Reset();
-private:
-	CSetPolicy(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
-	void ConstructL(const TTestActionSpec& aTestActionSpec);
-private:
-	void DoReportAction();
-	void DoCheckResult(TInt aError);
-	void SetNewTimeL(const TDesC8& aData);
-private:
-	enum TState
-		{
-		EListKeys,
-		ESetPolicy,
-		EFinished
-		};
-private:
-	TBool iTestUsePolicy;
-	TSecurityPolicy iNewPolicy;
-	TState iState;
-};
-
-#endif	//	__T_KEYSTORE_ACTIONS_H__
+/*
+* Copyright (c) 2005-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
+*/
+
+#ifndef __T_KEYSTORE_ACTIONS_H__
+#define __T_KEYSTORE_ACTIONS_H__
+
+#include "t_testhandler.h"
+#include <e32cons.h>
+#include <badesca.h>
+#include "t_testaction.h"
+#include "t_output.h"
+#include <clientsession.h>
+#include <hash.h>
+#include <mctkeystore.h>
+#include <unifiedkeystore.h>
+#include <secdlgimpldefs.h>
+#include <bigint.h>
+
+typedef RPointerArray<CUnifiedKeyStore> RUnifiedKeyStoreArray;
+
+class CPBEncryptParms;
+
+enum TKSPanicCode
+{
+	EKSTestNotInitialised,
+	EKSTestUnexpected,
+	EKSTestResetPanic
+};
+
+class CSharedKeyStores : public CBase
+{
+public:
+	static void InitialiseKeyStoresL();
+	static void DestroyKeyStores();
+	static RUnifiedKeyStoreArray& TheUnifiedKeyStores();
+private:
+	CSharedKeyStores(){};
+	~CSharedKeyStores();
+private:
+	static CSharedKeyStores* iTheKeyStores;
+private:
+	RUnifiedKeyStoreArray iUnifiedKeyStores;
+};
+
+class CKeyStoreTestAction : public CTestAction
+{
+public:
+	virtual ~CKeyStoreTestAction();
+protected:
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	CKeyStoreTestAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	TInt SetExpectedResultL(const TDesC8& aResult);
+	TBool SetKeyUsageL(const TDesC8& aKeyUsage);
+	void SetKeyLabel(const TDesC8& aKeyLabel);
+	void SetKeyAlgorithm(const TDesC8& aKeyAlgorithm);
+	TBool SetKeyAccessType(const TDesC8& aKeyAccessType);
+	void DoPerformPrerequisite(TRequestStatus& aStatus);
+	void DoPerformPostrequisite(TRequestStatus& aStatus);
+	void AfterOOMFailure();
+	TBool AddExpectedDialogL(const TDesC8& aData);
+	void WriteExpectedDialogDataL();
+	void WriteDialogRecordL(RFileWriteStream& aStream, TSecurityDialogOperation aOp, const TDesC& aLabelSpec,
+							const TDesC& aResponse1, const TDesC& aResponse2);
+	TInt ReadDialogCountL();
+	void PrintKeyInfoL(const CCTKeyInfo& aKey);
+
+protected:
+	TUint iServerAlloc;
+	RFs& iFs;
+	TKeyUsagePKCS15 iUsage;
+	HBufC* iLabel;
+	CCTKeyInfo::EKeyAlgorithm iAlgorithm;
+	TInt iAccessType;
+	RPointerArray<HBufC> iExpectedDialogs;
+	TInt iKeystore;
+
+	// The following are here because they are used by most derived test actions
+	TCTKeyAttributeFilter iFilter;
+	RMPointerArray<CCTKeyInfo> iKeys;
+	TInt iDisableCheckDialog;
+
+#ifdef SYMBIAN_AUTH_SERVER
+	// this variable would be used to retrieve the rom build variant 
+	// for key store.
+	TBool iUseNewApi;
+	HBufC* iAuthExpression;
+	TInt iFreshness;
+	TInt iDeauthenticate;
+#endif // SYMBIAN_AUTH_SERVER
+};
+
+class CInitialiseKeyStore : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole,	Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole,	Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CInitialiseKeyStore();
+public:
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	CInitialiseKeyStore(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	enum TState
+		{
+		ENew,
+		EInit,
+		EAppend,
+		EFinished,
+		EAnalyseResults
+		};
+
+private:
+	TState iState;
+	TBool iKeyManager;
+	TBool iEnableStoreCountCheck;
+	TInt iKeyStoreManagerCount;
+	TInt iKeyStoreCount;
+	TBool iEnableKeyStoreLabelCheck;
+	TInt iKeyStoreIndex;
+	HBufC8* iKeyStoreLabel;
+	
+private:
+	CUnifiedKeyStore* iNewUnifiedKeyStore;
+};
+
+
+class COnlyCreateKeyStore : public CKeyStoreTestAction
+	{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole,	Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole,	Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~COnlyCreateKeyStore();
+public:
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	enum TState
+		{
+		EInit,
+		EFinished,
+		EErrNoMemory
+		};
+private:
+	COnlyCreateKeyStore(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	TState iState;
+	TBool iKeyManager;
+private:
+	CUnifiedKeyStore* iNewUnifiedKeyStore;
+};
+
+
+class CDeleteKeyStore : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CDeleteKeyStore();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	CDeleteKeyStore(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	enum TState
+		{
+		EDelete,
+		EFinished
+		};
+private:
+	TState iState;
+};
+
+class CAddKey : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CAddKey();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void SetKeySize(const TDesC8& aKeySize);
+	void SetStartDateL(const TDesC8& aData);
+	void SetEndDateL(const TDesC8& aData);
+private:
+	CAddKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	enum TState
+		{
+		EAddKey,
+		EFinished
+		};
+private:
+	TState iState;
+private:
+	TUint iSize;
+	TTime iStartDate, iEndDate;
+	CCTKeyInfo* iKeyInfo;
+};
+
+
+class CListKeys : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CListKeys();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	CListKeys(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	void SetKeySize(const TDesC8& aKeySize);
+	void SetListCount(const TDesC8& aListCount);
+	void AddFoundKeyL(const TDesC8& aFoundKey);
+private:	
+	enum TState
+		{
+		EListKeys,
+		EFinished
+		};
+private:
+	TState iState;
+
+	TInt iResultCount; // The expected result count (or -1 for don't care)
+	RCPointerArray<HBufC> iKeysToFind; // Labels of expected keys
+
+	// Filter componenets
+	TUint iSize;
+	CCTKeyInfo::EKeyAccess iAccessType;
+};
+
+/**
+ The same as ListKeys except that it checks all stores
+ */
+class CListAllKeys : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CListAllKeys();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	CListAllKeys(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	void SetKeySize(const TDesC8& aKeySize);
+	void SetListCount(const TDesC8& aListCount);
+	void AddFoundKeyL(const TDesC8& aFoundKey);
+private:	
+	enum TState
+		{
+		EListKeys,
+		EFinished
+		};
+private:
+	TState iState;
+
+	TInt iStore;
+	
+	TInt iResultCount; // The expected result count (or -1 for don't care)
+	RCPointerArray<HBufC> iKeysToFind; // Labels of expected keys
+
+	// Filter componenets
+	TUint iSize;
+	CCTKeyInfo::EKeyAccess iAccessType;
+};
+
+//	Allows script to filter on keys algorithm (or all) and deletes listed keys
+//	and calls list again to ensure they've gone
+class CDeleteKeys : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CDeleteKeys();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	CDeleteKeys(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void SetNonExistent(const TDesC8&);
+	void SetDeleteCount(const TDesC8&);
+private:	
+	enum TState
+		{
+		EListKeys,
+		EDeleteAllKeys,
+		EDeleteNonExistentKey,
+		EDeleteKeyByLabel,
+		EFinished
+		};
+private:
+	TState iState;
+
+	TCTTokenObjectHandle iDeleteHandle;
+	TInt iInitialKeyCount;
+	TInt iFinalKeyCount;
+	TInt iDeletedCount;
+	TInt iDeleteIndex;
+	TInt iNonExistentKey;		//	Set!=0 if trying to delete something non existent
+	TInt iExpectedDeleteCount;	//	Number of keys expected to be deleted (-1 for don't care)
+};
+
+class CImportKey : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	virtual ~CImportKey();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+protected:
+	CImportKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void SetKeyDataFileL(const TDesC8& aDes);
+protected:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	TBool SetKeyUsage(const TDesC8& aKeyUsage);
+private:
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+protected:
+	HBufC8*  iImportFileName;
+	HBufC8* iKeyData;
+	CCTKeyInfo* iKeyInfo;
+private:
+	enum TState
+		{
+		EImportKey,
+		EFinished
+		};
+	TState iState;
+};
+
+
+class CExportKey : public CImportKey
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	virtual ~CExportKey();
+	virtual void PerformAction(TRequestStatus& aStatus);	
+	virtual void PerformCancel();
+	virtual void Reset();
+protected:
+	void WriteToFileL();
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	//void DoPerformPrerequisite(TRequestStatus& aStatus);
+protected:
+	void SetKeyDataFile(const TDesC8& aDes);
+	void SetPBEParametersL(const TDesC8& aCipher, const TDesC8& aSalt, const TDesC8& aIV, const TInt aIteration);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	void SetKeyEncrypted(const TDesC8& aDes);
+protected:
+	CExportKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+protected:
+	TBool iEncrypted;
+	TFileName iKeyDataFile;
+	CPBEncryptParms* iPbeParams;
+	enum TState
+		{
+		EExportKey,
+		EListing,
+		EIntermediate,
+		EFinished
+		};
+	TState iState;	
+};
+
+class CExportPublicKey : CExportKey
+	{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	 ~CExportPublicKey();
+	virtual void PerformAction(TRequestStatus& aStatus);	
+	virtual void PerformCancel();
+protected:
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	CExportPublicKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	};
+
+/**
+* Compare two files bit-wise. This is used as a sanity check
+* for key import/export.
+*/
+class CCompare : public CKeyStoreTestAction
+	{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CCompare();
+	virtual void PerformAction(TRequestStatus& aStatus);	
+	virtual void PerformCancel();
+	virtual void Reset();	
+protected:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	TInt CompareFilesL();
+private:
+	CCompare(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);	
+private:
+	TFileName iOriginalFile;
+	TFileName iNewFile;
+	TInt pos;
+	enum TState
+		{
+		EComparing,
+		EFinished
+		};
+	TState iState;	
+	};
+	
+class CCorrupt : public CKeyStoreTestAction
+	{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CCorrupt();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+private:
+	CCorrupt(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	void DoCorruptL();
+private:
+	enum TState
+		{
+		ECorrupting, 
+		EFinished
+		};
+private:
+	HBufC8* iCorruptionData;
+	TState iState;
+	};
+
+// Gets a key by handle. As the script can't know the handle, the
+// script lists all keys, identifies a key by name and then gets it by
+// handle. This action allows all attributes of a key to be specified.
+class CGetKeyInfo : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CGetKeyInfo();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	CGetKeyInfo(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	TBool SetKeyUsage(const TDesC8& aKeyUsage);
+	void SetKeySize(const TDesC8& aKeySize);
+	void SetNativeL(const TDesC8& aData);
+	void SetStartDateL(const TDesC8& aData);
+	void SetEndDateL(const TDesC8& aData);
+private:	
+	enum TState
+		{
+		EListKeysPreGet,
+		EGet,
+		EFinished
+		};
+private:
+	TState iState;
+
+	TCTTokenObjectHandle iGetHandle;
+	CCTKeyInfo* iKey;
+	TUint iSize;
+	TBool iNativeSet, iNative;
+	TTime iStartDate, iEndDate;
+};
+
+
+//	Allows script to filter on keys algorithm (or all) and deletes listed keys
+//	and calls list again to ensure they've gone
+class COpenKey : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~COpenKey();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	COpenKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	void SetKeyType(const TDesC8& aKeyType);
+private:
+private:	
+	enum TState
+		{
+		EListKeysPreOpen,
+		EOpenKey,
+		EFinished
+		};
+
+	enum TKeyTypes
+		{
+		ERSASign,
+		EDSASign,
+		EDH,
+		EDecrypt
+		};
+private:
+	TState iState;
+
+	TKeyTypes iType;
+
+	TCTTokenObjectHandle iDeleteHandle;
+//	Filter components
+	MRSASigner* iRSASigner;
+	MDSASigner* iDSASigner;
+	MCTDecryptor* iDecryptor;
+	MCTDH* iDH;
+};
+
+//	Allows script to sign, filter on keys algorithm (or all) and deletes listed keys
+//	and calls list again to ensure they've gone
+class CSign : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CSign();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	CSign(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void SetSignText(const TDesC8&);
+	void SetKeyType(const TDesC8& aKeyType);
+	void SetDigestSignL(const TDesC8&);
+private:	
+	enum TState
+		{
+		EListKeysPreOpen,
+		EOpenKey,
+		ESign,
+		EExportPublic,
+		EVerify,
+		EFinished
+		};
+
+	enum TKeyTypes
+		{
+		ERSASign,
+		EDSASign,
+		EDH,
+		EDecrypt
+		};
+private:
+	TState iState;
+	TBool iVerifyResult;
+	TKeyTypes iType;
+	TCTTokenObjectHandle iExportHandle;
+//	Filter components
+	HBufC8* iReadText;		//	Text to sign, read in from script
+	HBufC8*	iExportedPublicKey;		
+	MRSASigner* iRSASigner;
+	MDSASigner* iDSASigner;
+	MCTDecryptor* iDecryptor;
+	MCTDH* iDH;
+	CDSASignature* iDSASignature;
+	CRSASignature* iRSASignature;
+	CMessageDigest* iHash;
+	TBool iFailHashDigest;	//	Should hash the digest beforehand, but doesn't
+};							//	to test failure mode
+
+class CDecrypt : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CDecrypt();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	CDecrypt(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void SetSignText(const TDesC8&);
+private:	
+	enum TState
+		{
+		EListKeysPreOpen,
+		EOpenKey,
+		EDecrypt,
+		EExportPublic,
+		EVerify,
+		EFinished
+		};
+
+private:
+	TState iState;
+	TBool iVerifyResult;
+
+	TCTTokenObjectHandle iExportHandle;
+//	Filter components
+	HBufC8* iReadText;		//	Text to sign, read in from script
+	HBufC8*	iPlainText;	
+	TPtr8 iPlainTextPtr;
+	MCTDecryptor* iDecryptor;
+	HBufC8* iPublic;
+};
+
+class CDHKeyPair;
+class CDHPublicKey;
+
+class CDerive : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CDerive();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	CDerive(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:	
+	enum TState
+		{
+		EListKeysPreOpen,
+		EOpenKey,
+		EDerive,
+		EExportPublic,
+		EVerify,
+		EFinished
+		};
+
+private:
+	TState iState;
+	TBool iVerifyResult;
+
+	TCTTokenObjectHandle iExportHandle;
+	RInteger iN;
+	RInteger iG;
+	CDHKeyPair* iRemote;
+	MCTDH* iDH;
+	CDHPublicKey* iPublicKey;
+	HBufC8* iOutput;
+};
+
+class CDeleteKeyStoreData : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CDeleteKeyStoreData();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	CDeleteKeyStoreData(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	enum TState
+		{
+		EDelete,
+		EFinished
+		};
+private:
+	TState iState;
+};
+
+/**
+ * Test setting the users of a key.
+ */
+class CSetUsers : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CSetUsers();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	TBool AddUserL(const TDesC8& aKeySize);
+private:
+	CSetUsers(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	enum TState
+		{
+		EListKeys,
+		EMain,
+		EFinished
+		};
+private:
+	TState iState;
+private:
+	RArray<TUid> iUsers;
+};
+
+/**
+ * Test setting the passphrase timeout using the SetPassphraseTimeout method on
+ * the unified key store.
+ */
+class CSetTimeout : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CSetTimeout();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	CSetTimeout(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	enum TState
+		{
+		EMain,
+		EFinished
+		};
+private:
+	TState iState;
+private:
+	TInt iNewTimeout;
+};
+
+/**
+ * Test relocking the store.
+ */
+class CRelockStore : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CRelockStore();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	CRelockStore(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	enum TState
+		{
+		EMain,
+		EFinished
+		};
+private:
+	TState iState;
+};
+
+/**
+ * Set the client UID.
+ *
+ * In order to test the keystore easily, it's sometimes necessary to impersonate
+ * different processes.  This test action sets the UID of the current process.
+ * Currently this actually changyes the process UID - when this becomes
+ * impossible due to platform security, a differnt approach will be needed
+ * (probably a debug-mode-only keystore message telling to to treat the client
+ * as if it had a different UID).
+ */
+class CSetClientUid : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CSetClientUid();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	CSetClientUid(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	enum TState
+		{
+		EMain,
+		EFinished
+		};
+private:
+	TState iState;
+	TUid iUid;
+};
+
+/**
+ * Set the home time on the device.
+ *
+ * We need to be able to set the time so we can create keys and then make them
+ * expire.
+ */
+class CSetTime : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CSetTime();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	CSetTime(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	void SetNewTimeL(const TDesC8& aData);
+private:
+	enum TState
+		{
+		EMain,
+		EFinished
+		};
+private:
+	TState iState;
+	TTime iNewTime;
+};
+
+/**
+ * A templated class for test actions that test authentication objects.  This
+ * does most of the fiddly test stuff - the implementation of the test itself is
+ * provided by the template parameter.
+ */
+template <class TTestImpl>
+class CAuthObjectTest : public CKeyStoreTestAction
+	{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	virtual ~CAuthObjectTest();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+private:
+	CAuthObjectTest(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	void Reset();
+private:
+	enum TState
+		{
+		EListKeys,
+		EMain,
+		EFinished
+		};
+private:
+	TState iState;
+	TTestImpl iImpl;
+    MCTAuthenticationObject* iAuth;
+	};
+
+/**
+ * Base class for auth object test implmentations, supplies default method implementations.
+ */
+class TAuthObjectTest
+	{
+ public:
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	void Reset();
+	TBool CheckResult(Output& aOut);
+	};
+
+/**
+ * Test changing the passphrase.
+ */
+class TChangePassphrase : public TAuthObjectTest
+	{
+ public:
+	const TDesC& Name();
+	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
+    void DoCancel(MCTAuthenticationObject& aAuth);
+	};
+
+typedef CAuthObjectTest<TChangePassphrase> CChangePassphrase;
+
+/**
+ * Test listing protected objects.
+ */
+class TListProtectedObjects : public TAuthObjectTest
+	{
+ public:
+	~TListProtectedObjects();
+	const TDesC& Name();
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
+	TBool CheckResult(Output& aOut);
+	void Reset();
+    void DoCancel(MCTAuthenticationObject& aAuth);
+ private:
+	TBool AddExpectedKeyL(const TDesC8& aKeyLabel);
+ private:
+	RPointerArray<HBufC> iExpectedKeys;
+	RMPointerArray<MCTTokenObject> iObjects;
+	};
+
+typedef CAuthObjectTest<TListProtectedObjects> CListProtectedObjects;
+
+/**
+ * Test unblocking the passphrase.
+ */
+class TUnblockPassphrase : public TAuthObjectTest
+	{
+ public:
+	const TDesC& Name();
+	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);	
+    void DoCancel(MCTAuthenticationObject& aAuth);
+	};
+
+typedef CAuthObjectTest<TUnblockPassphrase> CUnblockPassphrase;
+
+/**
+ * Test auth object open method.
+ */
+class TAuthOpen : public TAuthObjectTest
+	{
+ public:
+	const TDesC& Name();
+	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);	
+    void DoCancel(MCTAuthenticationObject& aAuth);
+	};
+
+typedef CAuthObjectTest<TAuthOpen> CAuthOpen;
+
+/**
+ * Test auth object close method.
+ */
+class TAuthClose : public TAuthObjectTest
+	{
+ public:
+	const TDesC& Name();
+	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);	
+    void DoCancel(MCTAuthenticationObject& aAuth);
+	};
+
+typedef CAuthObjectTest<TAuthClose> CAuthClose;
+
+/**
+ * Test get time remaining.
+ */
+class TGetTimeRemaining : public TAuthObjectTest
+	{
+ public:
+	const TDesC& Name();
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
+	TBool CheckResult(Output& aOut);
+    void DoCancel(MCTAuthenticationObject& aAuth);
+ private:
+	TInt iExpectedTime;
+	TInt iTimeRemaining;
+	};
+
+typedef CAuthObjectTest<TGetTimeRemaining> CGetTimeRemaining;
+
+/**
+ * Test set timeout via auth object.
+ */
+class TAuthSetTimeout : public TAuthObjectTest
+	{
+ public:
+	const TDesC& Name();
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
+    void DoCancel(MCTAuthenticationObject& aAuth);
+ private:
+	TInt iNewTimeout;
+	};
+
+typedef CAuthObjectTest<TAuthSetTimeout> CAuthSetTimeout;
+
+/**
+ * Test get timeout.
+ */
+class TGetTimeout : public TAuthObjectTest
+	{
+ public:
+	const TDesC& Name();
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+	void DoTest(MCTAuthenticationObject& aAuth, TRequestStatus& aStatus);
+	TBool CheckResult(Output& aOut);
+    void DoCancel(MCTAuthenticationObject& aAuth);
+ private:
+	TInt iExpectedTimeout;
+	TInt iTimeout;
+	};
+
+typedef CAuthObjectTest<TGetTimeout> CGetTimeout;
+
+
+/**
+ * Get the use or management policy of a key.
+ */
+class CGetPolicy : public CKeyStoreTestAction
+	{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CGetPolicy();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	CGetPolicy(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	void SetNewTimeL(const TDesC8& aData);
+private:
+	enum TState
+		{
+		EListKeys,
+		EFinished
+		};
+private:
+	TBool iTestUsePolicy;
+	TSecurityPolicy iExpectedPolicy;
+	TState iState;
+	TSecurityPolicy iPolicy;
+	};
+
+/**
+ * Set the use or management policy of a key.
+ */
+class CSetPolicy : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CSetPolicy();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	CSetPolicy(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+	void SetNewTimeL(const TDesC8& aData);
+private:
+	enum TState
+		{
+		EListKeys,
+		ESetPolicy,
+		EFinished
+		};
+private:
+	TBool iTestUsePolicy;
+	TSecurityPolicy iNewPolicy;
+	TState iState;
+};
+
+class CAuthenticationPolicy : public CKeyStoreTestAction
+{
+public:
+	static CTestAction* NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	static CTestAction* NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, const TTestActionSpec& aTestActionSpec);
+	~CAuthenticationPolicy();
+	virtual void PerformAction(TRequestStatus& aStatus);
+	virtual void PerformCancel();
+	virtual void Reset();
+private:
+	void SetAuthExpression(TPtrC8& aAuthExpression);
+	void SetFreshness(TUint aFreshness);
+	void SetMode(const TDesC8& aMode);
+private:
+	CAuthenticationPolicy(RFs& aFs, CConsoleBase& aConsole, Output& aOut);
+	void ConstructL(const TTestActionSpec& aTestActionSpec);
+private:
+	void DoReportAction();
+	void DoCheckResult(TInt aError);
+private:
+	enum TState
+		{
+		EInit,
+		EListing,
+		EGetAuthenticationPolicy,
+		EFinished
+		};
+private:
+	TState iState;
+private:
+	TBuf8<256> iMode;
+	TBuf8<256> iExpectedExpression;
+	TInt iExpectedFreshness;
+};
+
+#endif	//	__T_KEYSTORE_ACTIONS_H__