cryptoservices/certificateandkeymgmt/tpkcs7/tcmsstep.h
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/certificateandkeymgmt/tpkcs7/tcmsstep.h	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2006-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 
+ @internalTechnology
+*/
+
+#ifndef TCMSSTEP_H
+#define TCMSSTEP_H
+
+#include <testexecutestepbase.h>
+#include "tpkcs7server.h"
+#include <x509cert.h>
+#include <cmssignerinfo.h>
+
+
+class CDecPKCS8Data;
+class MPKCS8DecodedKeyPairData;
+class CRSAPrivateKey;
+class CDSAPrivateKey;
+class CMessageDigest;
+class CASN1EncBase;
+class CCmsSignedObject;
+class CEncapsulatedContentInfo;
+class CCmsSignerInfo;
+
+
+/**
+The base class for testing CMS data types
+*/
+class CTCmsBaseStep : public CTestStep
+	{
+public:
+	CTCmsBaseStep();
+	~CTCmsBaseStep();
+	TVerdict doTestStepL();
+	TVerdict doTestStepPreambleL();
+	
+protected:
+	HBufC8*	readFileL (TPtrC tag);
+	HBufC8* CreateDEREncodingLC(const CASN1EncBase& aEncoding);
+	void OutputResultToFileL(const TDesC8& aSignature);
+	TVerdict doOOMTestL();
+	virtual void doTestL() = 0;
+	TInt CovertContentDataTypeNameToDataType(const TDesC& aDataTypeName);
+	
+protected:
+	RFs	iFs;
+	HBufC8*	iDataContent;
+	TInt iExpectedDataType;
+	HBufC8* iExpectedEncoding;
+	TInt iExpectedResult;
+	TBool iIsOOMTest;		
+	};
+
+/**
+The class for testing CMS Content Info
+*/
+class CTCmsContentInfoDecodingStep : public CTCmsBaseStep
+	{
+public:
+	CTCmsContentInfoDecodingStep();
+	~CTCmsContentInfoDecodingStep();
+	void doTestL();		
+	};
+
+/**
+The class for testing CMS data type
+*/
+class CTCmsDataStep : public CTCmsBaseStep
+	{
+public:
+	CTCmsDataStep();
+	~CTCmsDataStep();
+	void doTestL();
+protected:
+	void DecodingAndCheckL(TDesC8& aRawData);
+	};
+
+/**
+The class for testing CMS data type Decoding
+*/
+class CTCmsDataDecodingStep : public CTCmsDataStep
+	{
+public:
+	CTCmsDataDecodingStep();
+	~CTCmsDataDecodingStep();
+	void doTestL();
+	};
+
+/**
+The base class for testing CMS signed data and PKCS7 signed data
+encoding, decoding and validation. OOM test is configurable in this
+test base step
+*/
+class CTSignedDataBaseStep : public CTCmsBaseStep
+	{
+public:
+	CTSignedDataBaseStep();
+	~CTSignedDataBaseStep();
+	TVerdict doTestStepPreambleL();
+	
+protected:
+	CMessageDigest* CreateHashLC(TAlgorithmId aAlgorithmId);
+	TInt CovertHashNameToAlgorithmId(const TDesC& aHashName);
+	TInt CovertCertificateNameToCertificateType(const TDesC& aCertificateName);
+	
+protected:	
+	RPointerArray<CDecPKCS8Data> iDecPKCS8Data;
+	RPointerArray<CX509Certificate> iCertificates;
+	RArray<TInt> iSignerInfoVersion;
+	RArray<TInt> iHashName;
+	RArray<TBool> iValidateResults;
+	RArray<TBool> iSignedAttributePresent;
+	RArray<TBool> iUnSignedAttributePresent;
+	TInt iContentType;
+	TBool iIsHashAvailable;
+	TBool iIsDetached;
+	TBool iTwoStepCreation;
+	TBool iRsaAlgorithm;
+	TBool iCertificateSetPresent;
+	TBool iCRLsSetPresent;
+	TInt iSignedDataVersion;
+	TInt iAlgorithmCount;
+	TInt iCertsCount;
+	TInt iSignerCount;
+	CX509Certificate* iRootCertificate;
+	CX509Certificate* iAdditionalCertificate;
+	TBool iNoCertSet;
+	TBool iValidateUsingUserCerts;
+	TBool iNoSigning;
+	TInt iAdditionalEncodedCertificateType;
+	HBufC8* iAdditionalEncodedCertificate;
+	TBool iNoValidationTest;
+	TBool iValidationDetachedWithoutInput;
+	};
+
+/**
+The class test encoding, decoding and validation of the CMS signed data object
+*/
+class CTCmsSignedDataStep : public CTSignedDataBaseStep
+	{
+public:
+	CTCmsSignedDataStep();
+	~CTCmsSignedDataStep();
+	void doTestL();
+	
+protected:
+	void CheckAndValidateSignedDataL(TDesC8& aRawData);
+	void CheckSignedDataFieldsL(const CCmsSignedObject& aSignedData);
+	void CheckEncapsulatedContentFieldsL(const CEncapsulatedContentInfo& encapContentInfo);
+	void CheckAlgorithmSetFieldsL(const RPointerArray<CX509AlgorithmIdentifier>& aAlgorithms);
+	void CheckCertificateSetFieldsL(const CCmsSignedObject& aSignedData);
+	void CheckSignerInfoFieldsL(const RPointerArray<CCmsSignerInfo>& signerInfos);
+	};
+
+/**
+The class test decoding and validation of the CMS signed data object
+*/
+class CTCmsSignedDataDecodingStep : public CTCmsSignedDataStep
+	{
+public:
+	CTCmsSignedDataDecodingStep();
+	~CTCmsSignedDataDecodingStep();
+	void doTestL();
+	};
+
+#endif //TCMSSTEP_H