secureswitools/swianalysistoolkit/source/chainvalidityandinstallfilestatustools/dumpinstallfilestatustool/dumpinstallfilestatustool.h
author hgs
Tue, 29 Jun 2010 14:34:39 +0300
changeset 45 e466b0bdc5ac
parent 0 ba25891c3a9e
permissions -rw-r--r--
201025_06

/*
* 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 
 @internalComponent 
*/

#ifndef __DUMPINSTALLFILESTATUSTOOL_H__
#define __DUMPINSTALLFILESTATUSTOOL_H__
#pragma warning(disable: 4786)

#include "options.h"
#include "launchprocess.h"
#include "dumpchainvaliditytool.h"
#include "siscertificatechain.h"
#include "certificatechain.h"
#include "swicertstore.h"
#include "sisfiledata.h"
#include "osinterface.h"

#include <algorithm>
#include <map>

const std::string KDumpsisInputParameter = "dumpsis.exe -y -l ";

class DumpChainValidityTool;
class SISFileData;

class DumpInstallFileStatusTool
{
public:

	DumpInstallFileStatusTool();

	~DumpInstallFileStatusTool();

	/** 
	   Creates DumpChainValidityTool object and extracts the unified capabilities(union of capabilities 
	   of the root certificates used for validating the sis file obtained from DumpChainValidity).Calls 
	   the ExecuteProcess() of the LaunchProcess class ,which spawns a child process to execute dumpsis.exe 
	   from which executable and their corressponing capabilities information are obtained which is then 
	   written to a file(execapabilities.eci).
	  */
	void Run(const Options& aOptions);

private:

	/**
	  Correlates each executable capabilities with (1)Signing Certificates Capabilities.
	  (2)Signing Certificates Capabilities in conjunction with User Specified Capabilities.
	  Shows the file status as to whether each executable capabilities are satisified by either 
	  (1) or (2) or not satisfied.If not satisfied ,displays the missing capabilities
	  @param	aExeCapabilities			Executable Capabilities (obtained from ECIFileRead()).
	  @param	aMergedCapabilities			Union of capabilities list(obtained from dumpchainvaliditytool 
	 										and user specified capabilities on cmd line)
	  @param	aUnifiedSigningCertCaps		Capability List(from dumpchainvaliditytool)
	  @param	aExeLabel					Executable Name(obtained from ECIFileRead()).
	 */
	void Correlate(const int aExeCapabilities ,int aMergedCapabilities ,int aUnifiedSigningCertCaps ,const std::string& aExeLabel);

	/**
	   Displays those executable capabilities which are neither satisified by signing chains nor with 
	   signing chains in conjunction with user specified capabilities.
	   @param  aMissingCapabilities		Missing capabilitites as obtained from Correlate() function.
	  */
	void DisplayMissingCapabilities(int aMissingCapabilities);
	
private:

	SISFileData *iSISData;
	DumpChainValidityTool *iChainValidity;
};

#endif