/** Copyright (c) 1998-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: **/#ifndef __CRYPTOTESTACTION_H__#define __CRYPTOTESTACTION_H__#include "t_testaction.h"#include "t_input.h"_LIT8(KVectorStart, "<vector>");_LIT8(KVectorEnd, "</vector>");_LIT8(KIncrementalStart, "<incremental>");_LIT8(KIncrementalEnd, "</incremental>");_LIT8(KKeyStart, "<key>");_LIT8(KKeyEnd, "</key>");_LIT8(KInputStart, "<input>");_LIT8(KInputEnd, "</input>");_LIT8(KOutputStart, "<output>");_LIT8(KOutputEnd, "</output>");_LIT8(KCipherTypeStart, "<ciphertype>");_LIT8(KCipherTypeEnd, "</ciphertype>");_LIT8(KIVStart, "<iv>");_LIT8(KIVEnd, "</iv>");_LIT8(KMonteCarloStart, "<MonteCarlo>");_LIT8(KMonteCarloEnd, "</MonteCarlo>");_LIT8(KEffKeyLenStart, "<effectiveKeyLength>");_LIT8(KEffKeyLenEnd, "</effectiveKeyLength>");_LIT8(KIterationsStart, "<iterations>");_LIT8(KIterationsEnd, "</iterations>");_LIT8(KRandDataSizeStart, "<randDataSize>"); //Used specifically in performance tests where random data is used rather than specific input and output data pairs_LIT8(KRandDataSizeEnd, "</randDataSize>"); //Used specifically in performance tests where random data is used rather than specific input and output data pairsclass CCryptoTestAction : public CTestAction{public: CCryptoTestAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut); ~CCryptoTestAction();public: virtual void ConstructL(const TTestActionSpec& aTestActionSpec); virtual void DoPerformPrerequisite(TRequestStatus& aStatus); virtual void DoPerformPostrequisite(TRequestStatus& aStatus); virtual void PerformAction(TRequestStatus& aStatus); virtual void DoReportAction(void); virtual void DoCheckResult(TInt); virtual void Reset(){}protected: virtual void DoPerformPrerequisiteL() = 0; virtual void DoPerformActionL() = 0; virtual void DoPerformPostrequisiteL() {}protected: void Hex(HBufC8& string); void DoInputParseL(TDesC8& aScriptBuffer);protected: enum TCipherType { EDESECB, EDESCBC, E3DESECB, E3DESCBC, EAESECB, EAESCBC, EAESMonteCarloEncryptECB, // These extra categories have been added EAESMonteCarloDecryptECB, // because the Monte-Carlo tests have to be EAESMonteCarloEncryptCBC, // split between encrypt and decrypt scripts EAESMonteCarloDecryptCBC, // (too big for test framework in one chunk) ERC2ECB, ERC2CBC, ERC4, ECipherNull };protected: RFs& iFs; HBufC8* iBody; HBufC8* iKey; HBufC8* iInput; HBufC8* iOutput; HBufC8* iIV; HBufC8* iEResult; HBufC8* iDResult; TInt iEffectiveKeyLen; TInt iIterationTime; TInt iEncryptIterations; TInt iDecryptIterations; TCipherType iCipherType; TTimeIntervalMicroSeconds iEncryptorCreateTime; TTimeIntervalMicroSeconds iDecryptorCreateTime; TInt iExpectedWeakResult; TInt iRandDataSize;};#endif // __CRYPTOTESTACTION_H__