cryptoservices/certificateandkeymgmt/tpkcs12intgrtn/inc/tpkcs12libteststep.h
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/certificateandkeymgmt/tpkcs12intgrtn/inc/tpkcs12libteststep.h	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,179 @@
+/*
+* 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: 
+* This contains the Teststep class which is used for verification of the pkcs12 file
+* and log the results
+*
+*/
+
+
+
+
+/**
+ @file 
+ @internalTechnology
+*/
+ 
+#ifndef __TPKCS12LIBTESTSTEP01_H__
+#define __TPKCS12LIBTESTSTEP01_H__
+
+// System Include
+#include <testexecutestepbase.h>
+
+//User Include
+#include "tpkcs12common.h"
+#include <pkcs12.h>
+
+const TInt KPositiveTest=1;
+const TInt KNegativeTest=0;
+const TInt KBagDataSecBufLen=10;
+const TInt KPrivacyPwdStrLen=17;
+const TInt KContentInfoBufLen=12;
+const TInt KPasswordKeyStrLen=15;
+const TInt KBagDataSectionStrLen=7;
+const TInt KContentInfoKeyStrLen=11;
+const TInt KAttributeBufLen=6;
+const TInt KAttributeKeyStrLen=4;
+const TInt KBagValBufLen=8;
+const TInt KBagValKeyStrLen=5;
+
+_LIT(KFriendlyNameOid,"1.2.840.113549.1.9.20");
+_LIT(KLocalKeyOid,"1.2.840.113549.1.9.21");
+_LIT(KMainSec,"main");
+_LIT(KAuthSafeSec,"authsafe");
+_LIT(KFilePath,"file");
+_LIT(KIntegrityMode,"integritymode");
+_LIT(KUnitTest,"unittest");
+_LIT(KUnitTestValue,"FALSE");
+_LIT(KPassword,"password");
+_LIT(KIntegrityPassword,"integritypassword");
+_LIT(KIntegrityValid,"integrity_valid");
+_LIT(KPublicIntegrity,"public");
+_LIT(KPrivacyPassword,"PrivacyPassword");
+_LIT(KExpectedResult,"ExpectedResult");
+_LIT(KVerifyIntgPass,"verifyintegritypassword");
+_LIT(KMacPresent,"MacPresent");
+_LIT(KMacValueDefault,"FALSE");
+_LIT(KMacTestValue,"True");
+_LIT(KContentInfoKey,"contentinfo");
+_LIT(KContentInfoNum,"numcontentinfos");
+_LIT(KBagDataSec,"BagData");
+_LIT(KBagType,"BagType");
+_LIT(KSafeBagsCount,"SafeBagsCount");
+_LIT(KContentInfoType,"ContentInfoType");
+_LIT(KBagAttributesKey,"attr");
+_LIT(KBagAttributesNum,"numattributes");
+_LIT(KBagAttributesID,"id");
+_LIT(KBagAttributeValuesNum,"numvalues");
+_LIT(KBagAttributeValue,"value");
+_LIT(KAlgorithm,"Algorithm");
+_LIT(KCertType,"CertType");
+_LIT(KContentInfoPwd,"ContentInfoPrivacyPassword");
+_LIT(KSafeBagPrivacyPwd,"safeBagprivacypassword");
+_LIT(KBagValue,"BagValue");
+_LIT(KEncBagValue,"EncodedBagValue");
+_LIT(KMac,"Mac");
+_LIT(KMacSalt,"MacSalt");
+_LIT(KIterationCount,"IterationCount");
+_LIT(KIntegrityPwd,"integritypassword");
+_LIT(KExpectedError,"ExpectedError");
+
+_LIT(KFriendlyName,"1.2.840.113549.1.9.20");
+_LIT(KLocalKey,"1.2.840.113549.1.9.21");
+
+
+/**
+This is a teststep class wherin all the verification for the pkcs12 file
+is done.
+*/
+class CPKCS12LibTestStep : public CTestStep
+	{
+public:
+	CPKCS12LibTestStep ();
+	~CPKCS12LibTestStep();
+	//From CTestStep class
+	TVerdict doTestStepL();
+	
+private:
+	TBool ChkCIType(TDesC &aSecName,CSafeBagData &aBagData);
+	TBool ChkBagType(TDesC &aSecName,CSafeBagData &aBagData,TInt aBagId);
+	TBool ChkBagAttbutesL(TDesC &aSecName,CSafeBagData &aBagData);
+	TBool ChkAtrSecL(TDesC &aSec,CSafeBagData &aBagData,TInt aIndx);
+	TBool ChkAtrValL(TDesC &aSecName,CSafeBagData &aBagData,TInt aNumVal);
+	TBool ChkAlgId(TDesC &aSecName,CSafeBagData &aBagData);
+	TBool ChkCertId(TDesC &aSecName,CSafeBagData &aBagData);
+	TBool VerifyMainSecL();
+	TBool VerifyAuthSafe();
+	TBool ChkBagDataL(TInt aTotalsafebags,TInt aTotalbags);
+	TBool ChkSafeContsBagData(TDesC& aBagSec,CSafeContentBag &aSafeContntBagData);
+	TBool ChkBagValL(TDesC &aSecName,CSafeBagData &aBagData);
+	TBool ChkMacValueL();
+	TBool CompareFileDataL(TDesC &aPValue,TDesC8 &aBufferVal);
+	void ParsePrivacyPwdL();
+	TBool VerifyExpectedError(const TDesC &aSecName);
+	TBool ChkEncodedBagValL(TDesC &aSecName,CSafeBagData &aBagData);
+
+private:
+	/** privacy password of all the contentinfos in sequence if encrypted */
+	RPointerArray<TDesC>iPrivacyPassword ;
+	/** SafeBagData pointer */
+	CSafeBagData *iBagData;
+	/** positive or negative test */
+	TBool iExpectedResult;
+	/** flag for checking whether the verification function returns true or false */
+	TBool  iActualResult;
+	/** Unit test value */
+	TBool iUnitTest;
+	/** BagAttribute Value */
+	TInt iBagAttrNumVal;
+	/** Argument error. */
+	TInt iExpectedError;
+	/** ContentData is Set 0, if the contentData is absent. */
+	TInt iContentDataPresent;
+	/** PKCS12Parser object */
+	CPkcs12Parser *iParser;
+	/** File server object */
+	RFs iFileSession;
+	/** Set to True/False depending on the verification of the error. */ 
+	TBool iUnitTestContinueFlag;
+	
+	};
+
+/**
+This is a teststep class wherin all the OOM Test for the pkcs12 library
+is done.
+*/
+class CTPKCS12OOMStep : public CTestStep
+	{
+public:
+	CTPKCS12OOMStep ();
+	~CTPKCS12OOMStep();
+	// From CTestStep class
+	TVerdict doTestStepPreambleL();
+	TVerdict doTestStepL();
+private:
+	HBufC8* ReadFileDataL(TPtrC tag);
+protected:
+	/** contains the data */
+	HBufC8*	iRawData;
+	/** contains the authsafe data */
+	HBufC8* iAuthSafeData;
+	/** File server object */
+	RFs		iFs;
+	};
+
+_LIT(KStep, "PKCS12LibTestStep");
+_LIT(KTPKCS12OOMStep,"PKCS12OOMTestStep");
+
+#endif