cellularsrvapitest/datatransferhaitest/esock/inc/T_DataVerify.h
author William Roberts <williamr@symbian.org>
Sun, 14 Mar 2010 13:14:01 +0000
branchCompilerCompatibility
changeset 13 444fb3c6f233
parent 0 3553901f7fa8
child 24 6638e7f4bd8f
permissions -rw-r--r--
Automatic merge from PDK_3.0.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 "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 DATAVERIFY_H
#define DATAVERIFY_H

#include <e32base.h>
#include <f32file.h>
#include <e32cmn.h>
#include "DataWrapperBase.h"

class CMD5;

/**
 * Implementation of DataVerify interface. 
 */
class CT_DataVerify : public CDataWrapperBase
	{
public:

	enum TDataVerifyMethod
		{
		EDataVerifyMethodUnknown = 0,
		EDataVerifyMethodMD5,
		};

private:
	CT_DataVerify();

protected:
	void ConstructL();


public:
	
	/**
	 * 2 phase constructor.
	 */
	static CT_DataVerify* NewL();	
	virtual TAny*	GetObject();	
	virtual TBool	DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex);
	virtual ~CT_DataVerify();
	virtual void DoCmdVerifyData( const TTEFSectionName& aSection );
	virtual void VerifyData( const TDataVerifyMethod aMethod, const TFileName& aFileName, const TDesC& aChecksum );
	virtual void VerifyChecksumL( const TDesC8& aReferenceMD5Checksum, const TFileName& aDataFileName );
	virtual void VerifyChecksumL( const TDesC8& aReferenceMD5Checksum, const TDesC8& aData );
	virtual void VerifyFileL( const TFileName& aReferenceFileName, const TFileName& aDataFileName );
	
private:
	void VerifyBufferL( const TFileName& aReferenceFileName,const TDesC8& aData );
	void VerifyBufferL( const TDesC8& aReferenceData, const TDesC8& aData );
	TBool CompareBuffers( const TDesC8& aReferenceBuffer, const TDesC8& aDataBuffer );
	void ReadFileL(const TFileName& aFileName, TDes8& aBuf);
	void HashFileL( const TFileName& aFileName, TDes8& aDes );
	void WriteFileL( const TFileName& aFileName, const TDesC8& aData );
	void ConvertString2HexL( const TDesC8& aData, TDes8& aDes );

private:
	/** A handle to a file server session. */
	RFs iFs;
	/** An MD5 message digest.*/
	CMD5* iMD5;
	};

#endif	// DATAVERIFY_H