securityanddataprivacytools/securitytools/certapp/test/tcertapp/tcertapp.cpp
changeset 8 35751d3474b7
parent 0 2c201484c85f
--- a/securityanddataprivacytools/securitytools/certapp/test/tcertapp/tcertapp.cpp	Tue Jul 21 01:04:32 2009 +0100
+++ b/securityanddataprivacytools/securitytools/certapp/test/tcertapp/tcertapp.cpp	Thu Sep 10 14:01:51 2009 +0300
@@ -1,1692 +1,2680 @@
-/*
-* Copyright (c) 2008-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: 
-*
-*/
-
-
-#include <iostream>
-#include "certapp-api.h"
-#include "badconfigwriter.h"
-#include "tcertapp_good.h"
-#include "tcertapp_bad.h"
-#include "goodconfigwriter.h"
-#include <string>
-#include <sstream>
-#include <stdlib.h>
-#include <stdio.h>
-#include "logger.h"
-#include "utils.h"
-
-using namespace std;
-
-//Funtions to generate Good/Valid config files for tcertapp
-void GoodFileCaCertTests(const stringstream &aFilename, int aArray_value);
-void GoodFileCertClientsTests(const stringstream &aFilename);
-void GoodSwiCertTests(const stringstream &aFilename, int aArray_value);
-
-//Functions to generate Good/Valid script files for emulator tests
-void GenerateGoodCaCertsTestScripts(const stringstream &aFilename);
-void GenerateGoodCertClientTestScripts(const stringstream &aFilename);
-void GenerateGoodSwiCertTestScripts(const stringstream &aFilename);
-
-//Funtions to generate Bad/illegal config files for tcertapp
-void BadFileCaCertTests(const stringstream &aFilename, int aArray_value);
-void BadFileCertClientsTests(const stringstream &aFilename, int aIndex);
-void BadSwiCertTests(const stringstream &aFilename, int aArray_value);
-
-//Function call for RunCertApp api
-void RunCertAppTool(int argc, char **argv, stringstream &aStringval);
-void RunCertAppToolForStoreDump(int aArgc, char **aArgv, stringstream &aStringval); 
-void RunCertAppToolForBadParams(int aArgc, char **aArgv, stringstream &aStringval); 
-
-void TestsWithEmptyConfigFile();
-void CreateFileToAugmentStore();
-void TestsWithEncodedFileFormats();
-void TestToDecodeAndEncodeStore();
-void TestToReviewingAggregateStore();
-void TestBadConfigFiles(const stringstream &aFilename, bool aBool);
-void CertClientBadParamsFuncCall(stringstream &aFileName);
-void decodeEncodeCertAppCall(const char *aArray[]);
-int CompareFiles(stringstream &aFileName1, stringstream &aFileName2);
-int Compare(istream &aIstream1, istream &aIstream2);
-void TestWithUnicodFileName();
-
-ofstream file; //global file handle to write to output file
-const char *progress = "progress.txt";  // logs the progress report
-const char *errors = "error.txt";       // logs the error report
-
-//some constants used
-const int KFileArrayIndex = 8;
-const int KSwicertIndex = 10;
-const int KSwiBadcertIndex = 11;
-const int KFileBadcertIndex = 9;
-const int KAppUidIndex = 4; 
-const int KIndex = 4;
-
-// to get the count of passed and failed test cases
-static int failCount = 0, passCount = 0;
-
-//pointers required for creation of good filecerts config files
-const char **filecert_array[KFileArrayIndex]=
-{
-	goodCert_array,
-	goodDeletables,
-	goodFormats,
-	goodCertOwnerTypes,
-	goodSubjectKeyIds,
-	goodIssuerKeyIds,
-	goodApplications,
-	goodTrusteds
-};
-
-//pointers required for creation of bad filecerts config files
-const char **badfilecert_array[KFileBadcertIndex]=
-{
-	badLabels,
-	badDeletables,
-	badFormats,
-	badCertOwnerTypes,
-	badSubjectKeyIds,
-	badIssuerKeyIds,
-	badApplications,
-	badTrusteds,
-	badDatafilePath
-};
-
-
-//pointers required for creation of good swicerts config files
-const char **swicert_array[KSwicertIndex]=
-{
-	goodLabels,
-	goodFormats,
-	goodCertOwnerTypes,
-	goodSubjectKeyIds,
-	goodIssuerKeyIds,
-	goodAppNames,
-	goodTrusteds,
-	goodCapabilitySets,
-	goodMandatory,
-	goodSystemUpgrade
-};
-
-//pointers required for creation of bad swicerts config files
-const char **badswicert_array[KSwiBadcertIndex]=
-{
-	badLabels,
-	badFormats,
-	badCertOwnerTypes,
-	badSubjectKeyIds,
-	badIssuerKeyIds,
-	badApplications,
-	badTrusteds,
-	badDatafilePath,
-	badCapabilitySets,
-	badMandatory,
-	badSystemUpgrade
-};
-
-
-//encoded file names for input to the tool
-const char *fileEncodeType[4]=
-{
-"--hfilecertstore=utf8.txt",
-"--hfilecertstore=utf8_without_bom.txt",
-"--hfilecertstore=ucs2-bigendian.txt",
-"--hfilecertstore=ucs2-littleendian.txt"
-};
-
-
-//RunCertApp call to create store from text input
-void RunCertAppTool( int argc, char **argv, stringstream &stringval)
-{
-	for(int i =0; i<argc; i++)
-		{
-		cout << "Arguments Being passed to the RunCertApp tool is " << argv[i] << endl;
-		}
-	int ret = RunCertApp(progress, errors, argc, argv); 
-	cout << "Return Value from CertApp Tool is " << ret << endl;
-	if(ret!= 0)
-		{
-		failCount++;
-		file<< "Error in creating store for " << stringval.str() << " and result is " << ret << " Fail" << endl ;
-		}
-	else
-		{
-		passCount++;
-		file << "No Error in creating store for " << stringval.str() << " and result is " << ret << " Pass" <<endl ;
-		}
-}
-
-//RunCertApp call to dump the store to human readable format
-void RunCertAppToolForStoreDump(int argc, char **argv, stringstream &stringval)
-{
-	int ret = RunCertApp(progress, errors, argc, argv); 
-	cout << "Return Value from CertApp Tool is " << ret << endl;
-	if(ret!= 0)
-		{
-		failCount++;
-		file<< "Error in Dumping the store file for " << stringval.str() << " and result is " << ret << " Fail" << endl ;
-		}
-	else
-		{
-		passCount++;
-		file << "No Error in Dumping store for " << stringval.str() << " and result is " << ret << " Pass" <<endl ;
-		}
-}
-
-//RunCertApp call to create store for bad params
-void RunCertAppToolForBadParams(int argc, char **argv, stringstream &stringval)
-{
-	int ret = RunCertApp(progress, errors, argc, argv); 
-	if(ret!= 0)
-		{
-		passCount++;
-		cout << "We have passsed bad paramerters! Expected Return value is -1 And the RunCertApp has returned " << ret << " as Expected"<< endl;
-		file<< "Bad Params! So Cannot create the store for " << stringval.str() << " and result is " << ret << " Pass" << endl ;
-		}
-	else
-		{
-		failCount++;
-		file << "We are using bad parameters! So the tools should fail to create store! " << stringval.str() << " and result is " << ret << " Fail" <<endl ;
-		cout << "We have passsed bad paramerters! The Tool has failed- It should return -1, But returned" << ret << endl;
-		}
-}
-
-
-/**
-main entry to the program
-*/
-int main(int /*argc*/, char ** /*argv*/)
-{
-	dbg.SetStream(&std::cout);
-	prog.SetStream(&std::cout);
-	std::cout << std::dec;
-
-	int num_tests = 0; 
-	int argCount3 = 3;
-	int argCount4 = 4;
-	// File to log the result of all tests
-	if(file)
-		{
-		file.open("tCertapp_Output.txt", ios_base::trunc | ios_base::out);
-		}
-
-	//create a file to augment the content to existing store
-	CreateFileToAugmentStore();
-
-	//create certclient config files 
-	//Format used for the files name is SDP-Security_Tools-CertApp-XXX-000X  to match with the TMS test case id
-	stringstream certclientfileName;
-	certclientfileName << "SDP-Security_Tools-CertApp-CCDAT_000"<<num_tests<<".txt";
-	GoodFileCertClientsTests(certclientfileName);
-	
-	//create command line argument for creation of certclientx.dat through certapp tool
-	stringstream strArg1, strArg2, augFileName;
-	strArg1 <<"--hcertclients=" << certclientfileName.str();
-	cout << "test" << strArg1.str().c_str() <<endl;
-
-	strArg2<< "--bcertclients=SDP-Security_Tools-CertApp-CCDAT_000" <<num_tests <<".dat";
-	cout <<"string value is " << strArg2.str().c_str() << endl;		
-	
-	string argument1, argument2;
-	const char *argv_certclient[4];
-	
-	argument1 = strArg1.str().c_str();
-	argv_certclient[0] = argument1.c_str();
-			
-	argv_certclient[1] = "--out";
-	argument2 = strArg2.str().c_str();
-	argv_certclient[2] = argument2.c_str();
-
-	char **argv, **argv1;
-	char *argument_ptr[3]; //[Format:: certapp --hcertclients=t_certclients_0.txt --out --bcertclients=certclients5.dat]
-
-	for(int n1 = 0; n1<argCount3; n1++)
-		{
-		argument_ptr[n1] = const_cast<char*>(argv_certclient[n1]);
-		argv = argument_ptr;
-		}
-	
-	RunCertAppTool(argCount3, argv, certclientfileName); // creating dat file
-	
-	//Augment the Store with Extra entries
-	augFileName<<"SDP-Security_Tools-CertApp-CCAUG_0000.dat";
-	argv_certclient[0] = "--hcertclients=tCertClient_Augment.txt";
-	argv_certclient[1] =  argv_certclient[2];  
-	argv_certclient[2] = "--out";
-	argv_certclient[3] = "--bcertclients=SDP-Security_Tools-CertApp-CCAUG_0000.dat";
-	for(int x = 0; x<argCount4; x++)
-			{
-			argument_ptr[x] = const_cast<char*>(argv_certclient[x]);
-			argv1 = argument_ptr;   
-			}
-	RunCertAppTool(argCount4, argv1, augFileName);
-
-	//Dump the dat file to human readable text format
-	argv_certclient[0] = argv_certclient[3];
-	argv_certclient[1] = "--out";
-	argv_certclient[2] = "--hcertclients=SDP-Security_Tools-CertApp-CCDUMP_0000.txt";
-			
-	for(int k = 0; k<argCount3; k++)
-		{
-		argument_ptr[k] = const_cast<char*>(argv_certclient[k]);
-		argv1 = argument_ptr;
-		}
-	RunCertAppToolForStoreDump(argCount3, argv1, certclientfileName); 
-	//End of t_certclients
-	
-	//Creates good config files to augment store and dump store to text format for file certstore - cacerts.dat
-	//Test for all positive cases
-	for(num_tests = 0; num_tests<=KFileArrayIndex; num_tests++)
-		{
-		stringstream caCertFileName;
-		caCertFileName << "SDP-Security_Tools-CertApp-FILEDAT_000"<<num_tests<<".txt";
-		GoodFileCaCertTests(caCertFileName,num_tests);
-
-		// CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
-		//ex:certapp --hcertclients=t_certclients_0.txt --hfilecertstore=t_cacerts_0.txt --out --bfilecertstore=cacerts_x.dat
-		stringstream strArg1, strArg2, strArg3, strArg4, strArg5;
-		strArg1 <<"--hfilecertstore=SDP-Security_Tools-CertApp-FILEDAT_000" <<num_tests << ".txt" ; 
-		
-		strArg2<< "--bfilecertstore=SDP-Security_Tools-CertApp-FILEDAT_000"<<num_tests <<".dat";
-		cout <<"string value is " << strArg2.str().c_str() << endl;	
-		
-		strArg3<< "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
-		cout <<"string value is " << strArg3.str().c_str() << endl;
-
-		string argument1, argument2, argument3, argument4, argument5;
-		const char *argv_certclient[4];
-		
-		argument1 = strArg1.str().c_str();
-		argument3 = strArg3.str().c_str();
-
-		argv_certclient[0] = argument3.c_str(); // --hcertclients=t_certclients_0.txt
-		argv_certclient[1] = argument1.c_str(); // --hfilecertstore=t_cacerts_x.txt
-		argv_certclient[2] = "--out";			//--out
-		argument2 = strArg2.str().c_str();
-		argv_certclient[3] = argument2.c_str(); //--bfilecertstore=cacerts_x.dat
-
-		char *argument_ptr[4]; 
-		char **argv, **argv1, **argv2 ;
-		for(int n = 0; n<argCount4; n++)
-			{
-			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
-			argv = argument_ptr;  
-			}
-		RunCertAppTool(argCount4, argv, caCertFileName); 
-
-		//AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
-		//ex:certapp  --hfilecertstore=tAugment_cacerts_x.txt  --bfilecertstore=cacerts.dat --out --bfilecertstore=new_extra_filecertstore.dat
-		stringstream augFileName, textDumpFileName;
-		augFileName<<"SDP-Security_Tools-CertApp-FILEAUG_000" <<num_tests << ".dat";
-		strArg4<<"--bfilecertstore=SDP-Security_Tools-CertApp-FILEAUG_000" << num_tests << ".dat";
-		argument4 = strArg4.str();
-		argv_certclient[0] =  "--hfilecertstore=tfile_Augment.txt";  //--hfilecertstore=tAugment_cacerts_x.txt
-		argv_certclient[1] =  argv_certclient[3]; //--bfilecertstore=cacerts_x.dat
-		argv_certclient[2] = "--out";			  //--out
-		argv_certclient[3] = argument4.c_str();  //--bfilecertstore=aug_cacerts_x.dat
-		
-		for(int x = 0; x<argCount4; x++)
-			{
-			argument_ptr[x] = const_cast<char*>(argv_certclient[x]);
-			argv1 = argument_ptr;   
-			}
-		RunCertAppTool(argCount4, argv1, augFileName);
-
-		//DUMP THE STORE TO HUMAN READABLE FORMAT
-		//ex:certapp --bfilecertstore=test.dat --out --hfilecertstore=t_cacerts.txt 
-		textDumpFileName <<"SDP-Security_Tools-CertApp-FILEDUMP_000"<< num_tests << ".txt";
-		argv_certclient[0] =  argv_certclient[3];  //--bfilecertstore=aug_cacerts_x.dat
-		argv_certclient[1] = "--out";
-		strArg5<< "--hfilecertstore=SDP-Security_Tools-CertApp-FILEDUMP_000" <<num_tests << ".txt";
-		argument5 = strArg5.str().c_str();
-		argv_certclient[2] = argument5.c_str();
-						
-		for(int k = 0; k<argCount3; k++)
-			{
-			argument_ptr[k] = const_cast<char*>(argv_certclient[k]);
-			argv2 = argument_ptr;
-			}
-		//Dumps the augmented store
-		RunCertAppToolForStoreDump(argCount3, argv2, textDumpFileName); 
-		}//End of cacerts
-
-
-	//create config files with legal values for swi certstore 
-	for(num_tests = 0; num_tests<KSwicertIndex; num_tests++)
-		{
-		stringstream swiCertStoreFileName;
-		swiCertStoreFileName << "SDP-Security_Tools-CertApp-SWIDAT_000"<<num_tests<<".txt";
-		GoodSwiCertTests(swiCertStoreFileName,num_tests);
-
-		//CREATE THE SWICERTSTORE  FROM THE HUMAN READABLE TEXT INPUT
-		//Ex: certapp --hcertclients=t_certclients_0.txt --hswicertstore=t_swicertstore_0.txt --out --bswicertstore=swicertstore_x.dat
-		stringstream strArg1, strArg2, strArg3, strArg4, strArg5;
-		strArg1 <<"--hswicertstore=SDP-Security_Tools-CertApp-SWIDAT_000" <<num_tests << ".txt" ; //--hswicertstore=t_cacerts_x.txt
-		
-		strArg2<< "--bswicertstore=SDP-Security_Tools-CertApp-SWIDAT_000" <<num_tests <<".dat"; //--bswicertstore=swicertstore.dat
-		cout <<"string value is " << strArg2.str().c_str() << endl;	
-		
-		strArg3<< "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
-		cout <<"string value is " << strArg3.str().c_str() << endl;
-
-		string argument1, argument2, argument3, argument4, argument5;
-		const char *argv_certclient[4];
-		
-		argument1 = strArg1.str().c_str();
-		argument3 = strArg3.str().c_str();
-
-		argv_certclient[0] = argument3.c_str(); //--hcertclients=t_certclients_0.txt
-		argv_certclient[1] = argument1.c_str(); //--hswicertstore=t_swicertstore_
-		argv_certclient[2] = "--out";
-		argument2 = strArg2.str().c_str();
-		argv_certclient[3] = argument2.c_str();  //--bswicertstore=swicertstore_x.dat
-
-	    char *argument_ptr[4]; 
-	
-		for(int j=0; j<argCount4; j++)
-			{
-			cout << "Value in argv_certclient " << j << "is " <<argv_certclient[j] <<endl;
-			}
-
-		char **argv;
-		for(int n = 0; n<argCount4; n++)
-			{
-			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
-			argv = argument_ptr;
-			}
-		RunCertAppTool(argCount4, argv,swiCertStoreFileName); 
-
-		//AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
-		//certapp  --hswicertstore=tAugment_swicertstore_x.txt  --bswicertstore=swicertstore_x.dat --out --bswicertstore=aug_swicertstore_x.dat
-		stringstream augFileName, textDumpFileName;
-		augFileName << "SDP-Security_Tools-CertApp-SWIAUG_000" << num_tests <<".dat";
-		strArg4<<"--bswicertstore=SDP-Security_Tools-CertApp-SWIAUG_000" << num_tests << ".dat";
-		argument4 = strArg4.str();
-		argv_certclient[0] =  "--hswicertstore=tswi_Augment.txt";  //--hswicertstore=tAugment_swicertstore_x.txt
-		argv_certclient[1] =  argv_certclient[3]; //--bswicertstore=swicertstore_x.dat
-		argv_certclient[2] = "--out";
-		argv_certclient[3] = argument4.c_str();  //--bswicertstore=aug_swicertstore_x.dat
-		char **argv1;
-		for(int x = 0; x<argCount4; x++)
-			{
-			argument_ptr[x] = const_cast<char*>(argv_certclient[x]);
-			argv1 = argument_ptr;   
-			}
-		RunCertAppTool(argCount4, argv1, augFileName);
-
-		//DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
-		textDumpFileName << "SDP-Security_Tools-CertApp-SWIDUMP_000" <<num_tests << ".txt";
-		argv_certclient[0] =  argv_certclient[3];  
-		argv_certclient[1] = "--out";
-		strArg5<< "--hswicertstore=SDP-Security_Tools-CertApp-SWIDUMP_000" <<num_tests << ".txt";
-		argument5= strArg5.str().c_str();
-		argv_certclient[2] = argument5.c_str();
-			
-		char ** argv2;
-		for(int k = 0; k<argCount3; k++)
-			{
-			argument_ptr[k] = const_cast<char*>(argv_certclient[k]);
-			argv2 = argument_ptr;
-			}
-
-		RunCertAppToolForStoreDump(argCount3, argv2, textDumpFileName); 
-		}
-	
-	//Test with unicode filename
-	TestWithUnicodFileName();
-
-	//create empty config file
-	TestsWithEmptyConfigFile();
-
-	//Test case to test for different file formats
-	TestsWithEncodedFileFormats();
-
-	//Test case for REQ10313 to check decode/encode of stores
-	TestToDecodeAndEncodeStore();
-
-	//Test case for REQ10314 - reviewing aggregate certificate database
-	TestToReviewingAggregateStore();
-
-	//Test cases for BAD Params
-	//create certclient config files 
-	for(num_tests =0; num_tests<3; num_tests++) 
-		{
-		stringstream badCertClientsFileName;
-		badCertClientsFileName << "SDP-Security_Tools-CertApp-CCBadParams-000"<<num_tests;
-		BadFileCertClientsTests(badCertClientsFileName,num_tests);
-		} //End of bad params for cerclients
-
-	//create bad config files for file certstore - cacerts.dat
-	for(num_tests = 0; num_tests<KFileArrayIndex+1; num_tests++)
-		{
-		stringstream badCaCertsFileName;
-		badCaCertsFileName << "SDP-Security_Tools-CertApp-FileBadParams-000"<<num_tests; 
-		BadFileCaCertTests(badCaCertsFileName,num_tests);
-		}
-	
-	//create config files with invalid values swi certstore 
-	for(num_tests = 0; num_tests<KSwiBadcertIndex; num_tests++)
-		{
-		stringstream badSwiCertsFileName;
-		badSwiCertsFileName << "SDP-Security_Tools-CertApp-SwiBadParams-000"<<num_tests;
-		BadSwiCertTests(badSwiCertsFileName,num_tests);
-		}
-
-	//Code to create Script files for the file/sw/certclients to run validation tests on emulator
-	//create script file for the symbian test harness-  for cacerts.dat
-	for(num_tests = 0; num_tests<1; num_tests++)
-		{
-		stringstream emu_CacertsFileName;
-		emu_CacertsFileName << "SDP-Security_Tools-CertApp-FILEDAT-EMU0"<<num_tests<<".txt";
-		GenerateGoodCaCertsTestScripts(emu_CacertsFileName);
-		}
-
-	//create script file for certclients.dat
-	for(num_tests = 0; num_tests<1; num_tests++)
-		{
-		stringstream emu_CertClientsFileName;
-		emu_CertClientsFileName << "SDP-Security_Tools-CertApp-CCDAT-EMU0"<<num_tests<<".txt";
-		GenerateGoodCertClientTestScripts(emu_CertClientsFileName);
-		}
-
-	//create script file for the symbian test harness-  for swicerts.dat
-	for(num_tests = 0; num_tests<1; num_tests++)
-		{
-		stringstream emu_SwiCertsFileName;
-		emu_SwiCertsFileName << "SDP-Security_Tools-CertApp-SWIDAT-EMU0"<<num_tests<<".txt";
-		GenerateGoodSwiCertTestScripts(emu_SwiCertsFileName);
-		}
-
-	int testCaseCount = failCount+passCount;
-	cout  << "\nTestrun result is :: " << failCount <<" tests failed out of " << testCaseCount <<endl;
-	file << "\n\nTotal number of test cases run is -> " << testCaseCount << endl;
-	file << failCount << " tests failed out of " << testCaseCount <<endl;
-	file.close();
-	return 0;
-}
-
-
-
-/**
-Function to create input file for augmenting the existing store
-*/
-void CreateFileToAugmentStore()
-{
-	stringstream swifilename, cacertsfilename, certclientName;
-	swifilename <<"tswi_Augment.txt";
-	cacertsfilename<< "tfile_Augment.txt";
-	certclientName << "tCertClient_Augment.txt";
-
-	SwiCertStoreConfigWriter swiwriter(swifilename);
-	swiwriter.WriteExtraSwiEntry();
-	
-	FileCertStoreConfigWriter filewriter(cacertsfilename);
-	filewriter.WriteExtraFileEntry();
-
-	FileCertClientConfigWriter certclientwriter(certclientName);
-	certclientwriter.WriteExtraCertClientEntry();
-}
-
-
-/**
-Test case to check the certapp tool for unicode named config file
-Testing with only one unicode named config file for now
-*/
-void TestWithUnicodFileName()
-{
-	//unicode file name in utf8 format
-	const char *filename= "\xe4\xb8\x95\xe4\xb8\x8d\xe4\xb8\x8e\xe4\xb8\x90\xe4\xb8\x91\xe4\xb8\x96\xe4\xb8\x99\x2e\x74\x78\x74";
-	fstream fileHandle;
-
-	OpenUtf8FStreamForWrite(fileHandle,filename);
-
-	char * buffer;
-	long size;
-
-	ifstream infile ("SDP-Security_Tools-CertApp-CCDAT_0000.txt",ifstream::binary);
-	// get size of file
-	infile.seekg(0,ifstream::end);
-	size=infile.tellg();
-	infile.seekg(0);
-	// allocate memory for file content
-	buffer = new char [size];
-	// read content of infile
-	infile.read (buffer,size);
-	// write to outfile
-	fileHandle.write (buffer,size);
-  
-	// release dynamically-allocated memory
-	delete[] buffer;
-	fileHandle.close();
-	infile.close();
-
-	//create argument list for certapp
-	const char *argv_certclient[3];
-	stringstream str1;
-	str1 <<"--hcertclients=" << filename;
-	string string1;
-	string1 = str1.str();
-
-	argv_certclient[0] =  string1.c_str();
-	argv_certclient[1] = "--out";
-	argv_certclient[2] = "--bcertclients=SDP-Security_Tools-CertApp-UNI00.dat";
-	
-	char **argv;
-	char *argument_ptr[3];
-	int argCount=3;
-	for(int n = 0; n<argCount; n++)
-		{
-		argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
-		argv = argument_ptr;
-		}
-
-	for(int i =0; i<argCount; i++)
-		{
-		cout << "Arguments Being passed to the RunCertApp tool is " << argv[i] << endl;
-		}
-
-	int ret = RunCertApp(progress, errors, argCount, argv); 
-	cout << "Return value from certapp is " << ret <<endl;
-	if(ret!= 0)
-		{
-		failCount++;
-		file<< "Error in creating store using the unicode file name config file " << filename << " and result is " << ret << " Fail" << endl ;
-		}
-	else
-		{
-		passCount++;
-		file << "No Error in creating store using the unicode file named config file " << filename << " and result is " << ret << " Pass" <<endl ;
-		}
-}
-
-/**
-Generate Certclient config files
-*/
-void GoodFileCertClientsTests(const stringstream &aFilename)
-{
-	FileCertClientConfigWriter filewriter(aFilename);
-	const char *certclientPtr1; 
-	const char *certclientPtr2;
-	for(int i = 0; i<KAppUidIndex ; i++)
-		{
-		certclientPtr1 = goodAppNames[i];
-		certclientPtr2 = gooduid_array[i];
-		filewriter.WriteCertClientUid(certclientPtr2);
-		filewriter.WriteCertClientName(certclientPtr1);
-		}
-}
-
-
-/**
-Generate good config files for cacerts
-*/
-void GoodFileCaCertTests(const stringstream &aFilename ,int aValue)
-{
-	FileCertStoreConfigWriter fileCertWriter(aFilename);
-	const char **cacertPtr; 
-	const char **label = filecert_array[0];
-	switch(aValue)
-	{
-	case 0:
-		{
-		// Tests for GoodLabels
-		for(label = filecert_array[aValue]; *label; ++label)
-			{
-		
-			fileCertWriter.WriteFileEntry(*label);
-			}
-		break;
-		}
-	case 1:
-		{
-		// Tests for GoodDeletables
-		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
-			{
-			fileCertWriter.WriteFileEntry(*label,*cacertPtr);
-			label++;
-			}
-		break;
-		}
-	case 2:
-		{
-		//Tests for GoodFormats
-		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
-			{
-			fileCertWriter.WriteFileEntry(*label,0,*cacertPtr);
-			label++;
-			}
-		break;
-		}
-	case 3:
-		{
-		//Tests for GoodCertOwnerTypes
-		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
-			{
-			fileCertWriter.WriteFileEntry(*label,0,0,*cacertPtr);
-			label++;
-			}
-		break;
-		}
-	case 4:
-		{
-		//Tests for GoodSubjectKeyIds
-		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
-			{
-			fileCertWriter.WriteFileEntry(*label,0,0,0,*cacertPtr);
-			label++;
-			}
-		break;
-		}
-	case 5:
-		{
-		//Tests for GoodIssuerKeyIds
-		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
-			{
-			fileCertWriter.WriteFileEntry(*label,0,0,0,0,*cacertPtr);
-			label++;
-			}
-		break;
-		}
-	case 6:
-		{
-		//Tests for GoodApplications
-		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
-			{
-			fileCertWriter.WriteFileEntry(*label,0,0,0,0,0,*cacertPtr);
-			label++;
-			}
-		break;
-		}
-	case 7:
-		{
-		//Tests for GoodTrusteds
-		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
-			{
-			fileCertWriter.WriteFileEntry(*label,0,0,0,0,0,0,*cacertPtr);
-			label++;
-			}
-		break;
-		}
-	
-	case 8:
-		{	
-		//Test for PEM support
-		const char* datafilename = "\"root5ca.pem\"";
-		fileCertWriter.WriteFileEntry(*label,0,0,0,0,0,0,0,datafilename);
-		}
-		break;
-	
-	default:
-		break;
-	}
-}
-
-/**
-Generate  config file for swicert
-*/
-void GoodSwiCertTests(const stringstream &aFilename, int aIndex)
-{
-	SwiCertStoreConfigWriter swiWriter(aFilename);
-	const char **swiPtr1, **swiPtr2; 
-	swiPtr2 = swicert_array[0]; // labels for all scripts
-	switch(aIndex)
-	{
-	case 0:
-		{
-		// Tests for GoodLabels
-		for(swiPtr2=swicert_array[aIndex] ; *swiPtr2; ++swiPtr2)
-			{
-			swiWriter.WriteSwiEntry(*swiPtr2);
-			}
-		break;
-		}
-	case 1:
-		{
-		//Tests for GoodFormats
-		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
-			{
-			swiWriter.WriteSwiEntry(*swiPtr2,*swiPtr1);
-			++swiPtr2;
-			}
-		break;
-		}
-	case 2:
-		{
-		//Tests for GoodCertOwnerTypes
-		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
-			{
-			swiWriter.WriteSwiEntry(*swiPtr2,0,*swiPtr1);
-			++swiPtr2;
-			}
-		break;
-		}
-	case 3:
-		{
-		//Tests for GoodSubjectKeyIds
-		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
-			{
-			swiWriter.WriteSwiEntry(*swiPtr2,0,0,*swiPtr1);
-			++swiPtr2;
-			}
-		break;
-		}
-	case 4:
-		{
-		//Tests for GoodIssuerKeyIds
-		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
-			{
-			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,*swiPtr1);
-			++swiPtr2;
-			}
-		break;
-		}
-	case 5:
-		{
-		//Tests for GoodAswiPtr1lications
-		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
-			{
-			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,*swiPtr1);
-			++swiPtr2;
-			}
-		break;
-		}
-	case 6:
-		{
-		//Tests for GoodTrusteds
-		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
-			{
-			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,0,*swiPtr1);
-			++swiPtr2;
-			}
-		break;
-		}
-	case 7:
-		{
-		//Tests for GoodCapabilities
-		swiPtr1 = swicert_array[aIndex]; 
-		swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,0,0,*swiPtr1);
-		break;
-		}
-	case 8:
-		{
-		//Tests for sGoodMandatory
-		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
-			{
-			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,0,0,0,*swiPtr1);
-			++swiPtr2;
-			}
-		break;
-		}
-	case 9:
-		{
-		//Tests for sGoodSystemUpgrade
-		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
-			{
-			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,0,0,0,0,*swiPtr1);
-			++swiPtr2;
-			}
-		break;
-		}
-	default:
-		break;
-	}
-}
-
-/**
-Generate config  files with invalid values for the store
-*/
-void TestBadConfigFiles(const stringstream &aFilename, bool aBool)
-{
-	// create command line input for cacerts
-	//Ex:certapp --hcertclients=t_certclients_0.txt --hfilecertstore=t_cacerts_0.txt --out --bfilecertstore=cacerts_x.dat
-	stringstream strArg1, strArg2, strArg3;
-	stringstream configFileName;
-	configFileName <<aFilename.str() << ".txt";
-	cout << aFilename.str() <<endl;
-	if(aBool == 0) // file store
-		{
-		strArg1 <<"--hfilecertstore="<<aFilename.str() <<".txt";;//--hfilecertstore=t_cacerts_x.txt
-		
-		strArg2<< "--bfilecertstore=" << aFilename.str() <<".dat"; //--bfilecertstore=cacerts_x.dat
-		cout <<"string value is " << strArg2.str().c_str() << endl;	
-		}
-	else  //swi store
-		{
-		strArg1 <<"--hswicertstore="<<aFilename.str() <<".txt";;//--hswicertstore=t_cacerts_x.txt
-		
-		strArg2<< "--bswicertstore=" << aFilename.str() <<".dat"; //--bswicertstore=cacerts_x.dat
-		cout <<"string value is " << strArg2.str().c_str() << endl;	
-		}
-
-	strArg3<< "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
-	cout <<"string value is " << strArg3.str().c_str() << endl;
-
-	string argument1, argument2, argument3;
-	const char *argv_certclient[4];
-	
-	argument1 = strArg1.str().c_str();
-	argument3 = strArg3.str().c_str();
-
-	argv_certclient[0] = argument3.c_str(); // --hcertclients=t_certclients_0.txt
-	argv_certclient[1] = argument1.c_str(); // --hfilecertstore=t_cacerts_x.txt
-	argv_certclient[2] = "--out";			//--out
-	argument2 = strArg2.str().c_str();
-	argv_certclient[3] = argument2.c_str(); //--bfilecertstore=cacerts_x.dat
-
-	char *argument_ptr[4]; 
-	int argCount4 = 4;
-	char **argv;
-	for(int n = 0; n<argCount4; n++)
-		{
-		argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
-		argv = argument_ptr;   
-		}
-	RunCertAppToolForBadParams(argCount4, argv, configFileName); 
-}
-
-/**
-Generate bad config files for cacerts
-*/
-void BadFileCaCertTests(const stringstream &aFilename ,int aValue)
-{
-	const char **caCertPtr; 
-	int count = 0;
-	switch(aValue)
-	{
-	case 0:
-		{
-		// Tests for BadLabels
-		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr ; ++caCertPtr )
-			{
-			stringstream file1, file2;
-			file1 << aFilename.str() <<"_"<<count;
-			file2 << aFilename.str() <<"_"<<count <<".txt";
-			FileBadCertStoreConfigWriter badcertfileWriter(file2);
-			badcertfileWriter.WriteFileEntry(*caCertPtr);
-			TestBadConfigFiles(file1, 0);
-			count++;
-			}
-		break;
-		}
-	case 1:
-		{
-		// Tests for BadDeletables
-		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
-			{
-			stringstream file1, file2;
-			file1 << aFilename.str() <<"_"<<count;
-			file2 << aFilename.str() <<"_"<<count <<".txt";
-			FileBadCertStoreConfigWriter badcertfileWriter(file2);
-			badcertfileWriter.WriteFileEntry(0,*caCertPtr);
-			TestBadConfigFiles(file1,0);
-			count++;
-			}
-		break;
-		}
-	case 2:
-		{
-		//Tests for BadFormats
-		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
-			{
-			stringstream file1, file2;
-			file1 << aFilename.str() <<"_"<<count;
-			file2 << aFilename.str() <<"_"<<count <<".txt";
-			FileBadCertStoreConfigWriter badcertfileWriter(file2);
-			badcertfileWriter.WriteFileEntry(0,0,*caCertPtr);
-			TestBadConfigFiles(file1,0);
-			count++;
-			}
-		break;
-		}
-	case 3:
-		{
-		//Tests for BadCertOwnerTypes
-		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
-			{
-			stringstream file1, file2;
-			file1 << aFilename.str() <<"_"<<count;
-			file2 << aFilename.str() <<"_"<<count <<".txt";
-			FileBadCertStoreConfigWriter badcertfileWriter(file2);
-			badcertfileWriter.WriteFileEntry(0,0,0,*caCertPtr);
-			TestBadConfigFiles(file1,0);
-			count++;
-			}
-		break;
-		}
-	case 4:
-		{
-		//Tests for BadSubjectKeyIds
-		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
-			{
-			stringstream file1, file2;
-			file1 << aFilename.str() <<"_"<<count;
-			file2 << aFilename.str() <<"_"<<count <<".txt";
-			FileBadCertStoreConfigWriter badcertfileWriter(file2);
-			badcertfileWriter.WriteFileEntry(0,0,0,0,*caCertPtr);
-			TestBadConfigFiles(file1,0);
-			count++;
-			}
-		break;
-		}
-	case 5:
-		{
-		//Tests for BadIssuerKeyIds
-		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
-			{
-			stringstream file1, file2;
-			file1 << aFilename.str() <<"_"<<count;
-			file2 << aFilename.str() <<"_"<<count <<".txt";
-			FileBadCertStoreConfigWriter badcertfileWriter(file2);
-			badcertfileWriter.WriteFileEntry(0,0,0,0,0,*caCertPtr);
-			TestBadConfigFiles(file1,0);
-			count++;
-			}
-		break;
-		}
-	case 6:
-		{
-		//Tests for BadApplications
-		caCertPtr = badfilecert_array[aValue];
-		stringstream file1, file2;
-		file1 << aFilename.str() <<"_"<<count;
-		file2 << aFilename.str() <<"_"<<count <<".txt";
-		FileBadCertStoreConfigWriter badcertfileWriter(file2);
-		badcertfileWriter.WriteFileEntry(0,0,0,0,0,0,*caCertPtr);
-		TestBadConfigFiles(file1,0);
-		break;
-		}
-	case 7:
-		{
-		//Tests for BadTrusteds
-		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
-			{
-			stringstream file1, file2;
-			file1 << aFilename.str() <<"_"<<count;
-			file2 << aFilename.str() <<"_"<<count <<".txt";
-			FileBadCertStoreConfigWriter badcertfileWriter(file2);
-			badcertfileWriter.WriteFileEntry(0,0,0,0,0,0,0,*caCertPtr);
-			TestBadConfigFiles(file1,0);
-			count++;
-			}
-		break;
-		}
-	case 8:
-		{
-		//Tests for BadDataFileName
-		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
-			{
-			stringstream file1, file2;
-			file1 << aFilename.str() <<"_"<<count;
-			file2 << aFilename.str() <<"_"<<count <<".txt";
-			FileBadCertStoreConfigWriter badcertfileWriter(file2);
-			badcertfileWriter.WriteFileEntry(0,0,0,0,0,0,0,0,*caCertPtr);
-			TestBadConfigFiles(file1,0);
-			count++;
-			}
-		break;
-		}
-	default:
-		break;
-	}
-}
-
-
-/**
-Generate bad Certclient config files
-*/
-void BadFileCertClientsTests(const stringstream &aFilename, int aIndex)
-{
-	FileBadCertClientConfigWriter certfileWriter(aFilename);
-	const char *certfilePtr1, *certfilePtr2; 
-	
-	switch(aIndex)
-	{
-	case 0:
-		{
-		for(int i=0; i<KAppUidIndex; i++) // 4 badUids[] length
-			{
-			stringstream file1, file2;
-			file2 << aFilename.str() << "_" << i ;
-			file1 << aFilename.str() <<"_"<<i <<".txt";
-			FileBadCertClientConfigWriter certfileWriter(file1);
-			certfilePtr1 = goodcertclient_array[0]; // good app name and 
-			certfilePtr2 = badUids[i];
-			certfileWriter.WriteCertClientUid(certfilePtr2); // bad uid entry
-			certfileWriter.WriteCertClientName(certfilePtr1);
-			CertClientBadParamsFuncCall(file2);
-			}
-		break;
-		}
-
-	case 1:
-		{
-		for(int i = 0; i<4 ; i++) // length of badcertclient_array
-			{
-			stringstream file1, file2;
-			file2 << aFilename.str() << "_" << i ;
-			file1 << aFilename.str() <<"_"<<i <<".txt";
-			FileBadCertClientConfigWriter certfileWriter(file1);
-			certfilePtr1 = badcertclient_array[i];
-			certfilePtr2 = goodUids[0];
-			certfileWriter.WriteCertClientUid(certfilePtr2);
-			certfileWriter.WriteCertClientName(certfilePtr1);
-			CertClientBadParamsFuncCall(file2);
-			}
-		break;
-		}
-	
-	// multiple names mapping to single uid
-	case 2:
-		{
-		stringstream file1;
-		file1 << aFilename.str() <<".txt";
-		FileBadCertClientConfigWriter certfileWriter(file1);
-		for(int i= 0; i<KAppUidIndex; i++)
-			{
-			certfilePtr1 = goodAppNames[i]; //app names - SW Install,SW install Ocsp Signing etc.
-			certfilePtr2 = goodUids[0];
-			certfileWriter.WriteCertClientName(certfilePtr1);
-			certfileWriter.WriteCertClientUid(certfilePtr2);
-			}
-		CertClientBadParamsFuncCall(file1);
-		break;
-		}
-	
-	default:
-		break;
-	}
-}
-
-
-void CertClientBadParamsFuncCall(stringstream &aFileName)
-{
-	//Ex:certapp --hcertclients=t_certclients_0.txt --out --bcertclients=t_certclients_0.dat 
-	stringstream strArg1, strArg2, strArg3;
-	strArg1 <<"--hcertclients=" << aFileName.str() << ".txt";   
-	
-	strArg2<< "--bcertclients=" << aFileName.str() << ".dat"; 
-	cout <<"string value is " << strArg2.str().c_str() << endl;	
-	
-	string argument1, argument2;
-	const char *argv_certclient[3];
-	
-	argument1= strArg1.str().c_str();
-	argument2= strArg2.str().c_str();
-
-	argv_certclient[0] = argument1.c_str(); // --hcertclients=tbad_certclients_x.txt
-	argv_certclient[1] = "--out";			//--out
-	argv_certclient[2] = argument2.c_str(); //--bcertclients=t_certclients_x.dat
-
-	char *argument_ptr[3]; 
-	int argCount3 = 3;
-	char **argv;
-	for(int n = 0; n<argCount3; n++)
-		{
-		argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
-		argv = argument_ptr;   
-		}
-	RunCertAppToolForBadParams(argCount3, argv, aFileName); 
-}
-
-
-/**
-Generate  config file for swicert
-*/
-void BadSwiCertTests(const stringstream &aFileName, int aIndex)
-{
-	const char **swicertPtr1; 
-	int count = 0 ;
-	switch(aIndex)
-	{
-	case 0:
-		{
-		// Tests for BadLabels
-		for(swicertPtr1= badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-
-	case 1:
-		{
-		//Tests for BadFormats
-		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-	case 2:
-		{
-		//Tests for BadCertOwnerTypes
-		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-	case 3:
-		{
-		//Tests for BadSubjectKeyIds
-		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,0,0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;	
-			}
-		break;
-		}
-	case 4:
-		{
-		//Tests for BadIssuerKeyIds
-		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,0,0,0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-	case 5:
-		{
-		//Tests for BadApplications
-		swicertPtr1 = badswicert_array[aIndex];
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,0,0,0,0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-	case 6:
-		{
-		//Tests for BadTrusteds
-		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-	case 7:
-		{
-		//Tests for BadDataFileName
-		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-	case 8:
-		{
-		//Tests for BadCapabilities
-		swicertPtr1 = badswicert_array[aIndex];
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,0,0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-	case 9:
-		{
-		//Tests for BadMandatory
-		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,0,0,0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-	case 10:
-		{
-		//Tests for BadSystemUpgrade
-		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
-			{
-			stringstream file1, file2;
-			file1 << aFileName.str() <<"_"<<count;
-			file2 << aFileName.str() <<"_"<<count <<".txt";
-			SwiBadCertStoreConfigWriter badswiWriter(file2);
-			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,0,0,0,0,*swicertPtr1);
-			TestBadConfigFiles(file1,1);
-			count++;
-			}
-		break;
-		}
-	default:
-		break;
-	}
-}
-
-/**
-Test cases to test the tool with empty configuration files as input for all the stores
-*/
-void TestsWithEmptyConfigFile()
-{
-	for(int i = 0 ; i<3 ; i++)
-		{
-		stringstream emptyConfigFileName, configFileName1, configFileName2;
-		emptyConfigFileName<< "SDP-Security_Tools-CertApp-EmptyFile_000"<< i <<".txt";
-		switch(i)
-			{
-			case 0:
-				{
-				configFileName1 << "--hcertclients=" << emptyConfigFileName.str();
-				configFileName2 << "--bcertclients=SDP-Security_Tools-CertApp-EmptyFile_0000"<<".dat";
-				FileCertClientConfigWriter certclient(emptyConfigFileName);
-				}
-			break;
-
-			case 1:
-				{
-				configFileName1 << "--hfilecertstore=" << emptyConfigFileName.str();
-				configFileName2 << "--bfilecertstore=SDP-Security_Tools-CertApp-EmptyFile_0001"<<".dat";
-				FileCertStoreConfigWriter fileWriter(emptyConfigFileName);
-				}
-			break;
-
-			case 2:
-				{
-				configFileName1 << "--hswicertstore=" << emptyConfigFileName.str();
-				configFileName2 << "--bswicertstore=SDP-Security_Tools-CertApp-EmptyFile_0002"<<".dat";
-				SwiCertStoreConfigWriter swiFileWriter(emptyConfigFileName);
-				}
-			break;
-
-			default:
-				break;
-			}
-
-		string argument1, argument2;
-		argument1  = configFileName1.str().c_str();
-		argument2  = configFileName2.str().c_str();
-		const char *argv_certclient[4];
-		argv_certclient[0] = "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
-		argv_certclient[1] = argument1.c_str();  //"--hfilecertstore=t_emptyConfig.txt";
-		argv_certclient[2] = "--out";
-		argv_certclient[3] = argument2.c_str();
-
-		int argcount = 4;
-		char *argument_ptr[4]; 
-		char **argv;
-		for(int n = 0; n<argcount; n++)
-			{
-			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
-			argv = argument_ptr;
-			}
-		for(int z=0; z<argcount; z++)
-			{
-			cout << "Testing with empty configuration file" << argv[z] <<endl;
-			}
-
-		RunCertAppTool(argcount, argv, emptyConfigFileName);
-		}
-}
-
-/**
-Code to test the certapp tool for different file encode formats
-*/
-void TestsWithEncodedFileFormats()
-{
-	//Provide files with different encoded formats
-	for(int i = 0; i<4; i++)
-		{
-		stringstream unicodeName, outputFileName, strArg3;
-		const char *argv_certclient[KIndex];
-		unicodeName<< fileEncodeType[i];
-		outputFileName <<"SDP-Security_Tools-CertApp-FileFormats-000" <<i;
-		strArg3 << "--bfilecertstore="<< "SDP-Security_Tools-CertApp-FileFormats-000" <<i<<".dat";
-		
-		string argument;
-		argument = strArg3.str().c_str();
-		argv_certclient[0] = "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
-		argv_certclient[1] = fileEncodeType[i];   // manually created unicode content files
-		argv_certclient[2] = "--out";
-		argv_certclient[3] = argument.c_str();
-
-		for(int m=0; m<KIndex; m++)
-			{
-			cout << "Value in argv_certclient " << m << "is " <<argv_certclient[m] <<endl;
-			}
-		 char *argument_ptr[4]; 
-		char **argv;
-		for(int n = 0; n<KIndex; n++)
-			{
-			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
-			argv = argument_ptr;
-			}
-		
-		for(int z=0; z<KIndex; z++)
-			{
-			cout << "Argument array contains : " << argv[z] <<endl;
-			}
-		
-		int ret = RunCertApp(progress, errors, KIndex, argv); 
-		cout << "Return value from RunCertApp tool is "  << ret << endl;
-		
-		if(ret!= 0 && ((strcmp(unicodeName.str().c_str(),"--hfilecertstore=ucs2-bigendian.txt")==0) || (strcmp(unicodeName.str().c_str(),"--hfilecertstore=ucs2-littleendian.txt")==0)))
-			{
-			passCount++;
-			file<< "Tool doesnt support for UCS encoded file-"<< outputFileName.str() <<" so the result is " << ret << " Pass" << endl ;
-			}
-		else if(ret== 0 && ((strcmp(unicodeName.str().c_str(),"--hfilecertstore=utf8.txt") ==0) || (strcmp(unicodeName.str().c_str(),"--hfilecertstore=utf8_without_bom.txt")==0)))
-			{
-			passCount++;
-			file << "No Error in creating store for UTF8 encoded file-"<<outputFileName.str()<< " and result is " << ret << " Pass" <<endl ;
-			}
-		} //End of encoded file formats testing
-}
-
-/**
-Test case for REQ-10314 (Reviewing Aggregate Certificate DataBase)
-*/
-void TestToReviewingAggregateStore()
-{
-	for(int index = 0; index<2; index++)
-		{
-		stringstream file1, file2;
-		const char *argv_certclient[4];
-		argv_certclient[2] = "--out";
-		switch(index)
-			{
-			case 0: // different certificate labels in two stores
-				{
-				argv_certclient[0] = "--bfilecertstore=teststore1.dat";   // these are 2 binary stores saved in perforce
-				argv_certclient[1] = "--bfilecertstore=teststore3.dat"; 
-				argv_certclient[3] = "--hfilecertstore=SDP-Security_Tools-CertApp-AggrCertStore-0000.txt";
-				file1 <<"SDP-Security_Tools-CertApp-AggrCertStore-0000.txt";
-				file2 <<"aggregatestorecontents1_3.txt";
-				}
-				break;
-
-			case 1: //duplicate certificate labels in two stores
-				{
-				argv_certclient[0] = "--bfilecertstore=teststore2.dat";   // these are 2 binary stores saved in perforce
-				argv_certclient[1] = "--bfilecertstore=teststore3.dat"; 
-				argv_certclient[3] = "--hfilecertstore=SDP-Security_Tools-CertApp-AggrCertStore-0001.txt";
-				file1 <<"SDP-Security_Tools-CertApp-AggrCertStore-0001.txt";
-				file2 <<"aggregatestorecontents2_3.txt";
-				}
-				break;
-
-			default:
-				break;
-			}
-
-		for(int m=0; m<KIndex; m++)
-			{
-			cout << "Value in argv_certclient " << m << "is " <<argv_certclient[m] <<endl;
-			}
-		char *argument_ptr[KIndex]; 
-		char **argv;
-		for(int n = 0; n<KIndex; n++)
-			{
-			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
-			argv = argument_ptr;
-			}
-		
-		int ret = RunCertApp(progress, errors, KIndex, argv); 
-		if(!ret)
-			{
-			passCount++;
-			int compareValue  = CompareFiles(file1,file2); // compare with the reference files in perforce
-			if (compareValue)
-				{
-				file << "Failed to successfully create Aggregate Database for " << file1.str() << " is Fail" <<endl;
-				}
-			else
-				{
-				file << "Successfully created Aggregate Database(text form) for " <<file1.str() << " result is Pass" <<endl;
-				}
-			}
-		else
-			{
-			failCount++;
-			file << "Failed to dump the stores to single text format for " <<file1.str() <<endl;
-			}
-		}
-}
-
-
-/**
-TestCase to test the req of 10313- decode/encode certstore
-Encode-decode test for certclient store
-*/
-void TestToDecodeAndEncodeStore()
-{
-	stringstream outputFileName, strArg1, strArg2;
-	outputFileName <<"SDP-Security_Tools-CertApp-DecodeEncode-0000";
-	strArg1 << "decodeoutput1.txt";
-	strArg2 << "decodeoutput2.txt";
-	
-	const char *argv_certclient[3]; //dump store to text
-	argv_certclient[0] = "--bcertclients=certclients_0.dat";
-	argv_certclient[1] = "--out";
-	argv_certclient[2] = "--hcertclients=decodeoutput1.txt";   
-	decodeEncodeCertAppCall(argv_certclient);
-
-	//create store with the decoded text as input
-	argv_certclient[0] = "--hcertclients=decodeoutput1.txt";
-	argv_certclient[2] = "--bcertclients=decodeoutput.dat";   
-	decodeEncodeCertAppCall(argv_certclient);
-
-	//take the encoded store and dump it back to text form
-	argv_certclient[0] = "--bcertclients=decodeoutput.dat";
-	argv_certclient[2] = "--hcertclients=decodeoutput2.txt"; 
-	decodeEncodeCertAppCall(argv_certclient);
-
-	int compVal = CompareFiles(strArg1, strArg2);
-	cout << "Return value of comparision is " << compVal <<endl;
-	if (compVal)
-		{
-		failCount++;
-		file << "Encode-Decode fail for " <<outputFileName.str() << " result is Fail" <<endl;
-		}
-	else
-		{
-		passCount++;
-		file << "Encode-Decode Pass for " <<outputFileName.str() << " result is Pass" <<endl;
-		}
-}
-
-void decodeEncodeCertAppCall(const char *aArray[])
-{
-	char *argument_ptr[3]; 
-	char **argv;
-	for(int m=0; m<3; m++)
-		{
-		cout << "Value in argv_certclient " << m << "is " <<aArray[m] <<endl;
-		}
-	for(int n = 0; n<3; n++)
-		{
-		argument_ptr[n] = const_cast<char*>(aArray[n]);
-		argv = argument_ptr;
-		}
-	RunCertApp(progress, errors ,3, argv);
-}
-
-
-int CompareFiles(stringstream &aFile1, stringstream &aFile2)
-{
-	ifstream inFile1, inFile2;
-	string name1 = aFile1.str();
-	string name2 = aFile2.str();
-	inFile1.open(name1.c_str(),  ifstream::in);
-	if (inFile1.fail())
-		{
-		cout << "Failed to open the file! May be not existing" << endl;
-		return -1;
-		}
-	inFile2.open(name1.c_str(),  ifstream::in);
-	if (inFile2.fail()) 
-		{
-	    cout << "Failed to open the file! May be not existing" << endl;
-	    return -1;
-		}
-	return Compare(inFile1, inFile2);
-}
-
-
-int Compare(istream &aIstream1, istream &aIstream2)
-{
-  char ch1, ch2;
-  while (aIstream1.get(ch1)) 
-  {
-    if (!aIstream2.get(ch2) || (ch1 != ch2))
-	{
-      cout << "files are not equal";
-	  return -1;
-    }
-  }
-  if (!aIstream2.get(ch2))  // no more chars to read fom file
-	{
-	  cout << "files are equal\n";
-	  return 0;
-	}
-  else 
-	{
-	  cout << "files are not equal";
-	  return -1;
-	}
-}
-
-
-/**
-Generate script files for the filecertstore emulator tests
-*/
-void GenerateGoodCertClientTestScripts(const stringstream &aFilename)
-{
-	CertClientsStoreScriptGeneration cert_clients(aFilename);
-
-	cert_clients.WriteInitialiseCertClient();
-	cert_clients.WriteGetCount(KAppUidIndex);
-	cert_clients.WriteGetApplicationsList();
-	
-	for(int i = 0; i<KAppUidIndex;i++)
-		{
-		const char *goodlabel = goodcertclient_array[i]; 
-		const char *uid = gooddecimalUid_array[i];
-		cert_clients.WriteGetAppWithUid(goodlabel, uid);
-		}
-	cert_clients.WriteDestroyManager();
-}
-
-/**
-Generates config files for cacerts
-*/
-void GenerateGoodCaCertsTestScripts(const stringstream &aFilename)
-{
-	FileStoreScriptGeneration fileStore(aFilename);
-
-	const char *mode = "write"; 
-	const char *ownertype = goodOwnerType[0]; //CA ownerType
-
-	fileStore.WriteInitialiseCert(mode);
-	fileStore.WriteListcert(ownertype);
-	
-	for(int i = 0; i<6;i++)
-		{
-		const char *trust = goodTrust[0]; // true
-		const char *goodlabel = goodEmuCert_array[i]; // list of label - root5ca , symbiandtestcsa, symbiantestrcsa
-
-		fileStore.WriteGetCertificateDetails(goodlabel);
-		fileStore.WriteGetTrust(goodlabel,trust);
-		fileStore.WriteGetApplications(goodlabel);
-		fileStore.WriteRetrieveCerts(goodlabel);
-		}
-}
-
-/**
-Generate script files for the swicertstore emulator tests
-*/
-void GenerateGoodSwiCertTestScripts(const stringstream &aFilename)
-{
-	SWIStoreScriptGeneration swiStore(aFilename);
-	
-	const char *ownertype = goodOwnerType[0]; //CA ownerType
-	
-	//initilaise the store and get list all the certificate ones
-	swiStore.WriteInitialiseCert();
-	swiStore.WriteListcert(ownertype);
-
-	for(int i = 0; i<6;i++)
-		{
-		const char *trust = goodTrust[0]; // true
-		const char *goodlabel = goodSwiCert_array[i]; // list of label - root5ca , symbiandtestcsa, symbiantestrcsa
-		const char *mandatoryVal = mandatory[0];
-		const char *systemupgrade = systemUpgrade[0];
-
-		swiStore.WriteGetSystemUpgrade(goodlabel,systemupgrade);
-		swiStore.WriteRetrieveCerts(goodlabel);
-		swiStore.WriteGetApplications(goodlabel);
-		swiStore.WriteGetTrust(goodlabel,trust);
-		swiStore.WriteGetCapabilities(goodlabel);
-		swiStore.WriteGetMandatoryFlag(goodlabel, mandatoryVal);
-		}
-}
-
-//End of file
+/*
+* Copyright (c) 2008-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: 
+*
+*/
+
+
+#include <iostream>
+#include <tools/certapp-api.h>
+#include "badconfigwriter.h"
+#include "tcertapp_good.h"
+#include "tcertapp_bad.h"
+#include "goodconfigwriter.h"
+#include <string>
+#include <sstream>
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <sys\timeb.h>
+#include "logger.h"
+#include "utils.h"
+
+using namespace std;
+
+// Write a pass or fail result for a test case to the TMS log file
+void writeTMSResult(ofstream &aLogFile, stringstream &aTestCaseType, int aTestCaseIndex, bool aResult, stringstream &aLogging);
+
+//Funtions to generate Good/Valid config files for tcertapp
+void GoodFileCaCertTests(const stringstream &aFilename, int aArray_value);
+void GoodFileCertClientsTests(const stringstream &aFilename);
+void GoodSwiCertTests(const stringstream &aFilename, int aArray_value);
+
+//Functions to generate Good/Valid script files for emulator tests
+void GenerateGoodCaCertsTestScripts(const stringstream &aFilename, const stringstream &aTestCaseType, int &aTestIndex);
+void GenerateGoodCertClientTestScripts(const stringstream &aFilename, const stringstream &aTestCaseType, int &aTestIndex);
+void GenerateGoodSwiCertTestScripts(const stringstream &aFilename, const stringstream &aTestCaseType, int &aTestIndex);
+
+//Funtions to generate Bad/illegal config files for tcertapp
+void BadFileCaCertTests(const stringstream &aFilename, int aArray_value, stringstream &aTestCaseType, int &aTestIndex);
+void BadFileCertClientsTests(const stringstream &aFilename, int aIndex, stringstream &aTestCaseType, int &aTestIndex);
+void BadSwiCertTests(const stringstream &aFilename, int aArray_value, stringstream &aTestCaseType, int &aTestIndex);
+
+//Function call for RunCertApp api
+void RunCertAppTool(int argc, char **argv, stringstream &aStringval, stringstream &testCaseType, int testCaseIndex);
+void RunCertAppToolForStoreDump(int aArgc, char **aArgv, stringstream &aStringval, stringstream &testCaseType, int testCaseIndex); 
+void RunCertAppToolForBadParams(int aArgc, char **aArgv, stringstream &aStringval, stringstream &testCaseType, int testCaseIndex); 
+
+void TestsWithEmptyConfigFile();
+void CreateFileToAugmentStore();
+void TestsWithEncodedFileFormats();
+void TestToDecodeAndEncodeStore();
+void TestToReviewingAggregateStore();
+void TestBadConfigFiles(const stringstream &aFilename, bool aBool, stringstream &aTestCaseType, int aTestCaseIndex);
+void CertClientBadParamsFuncCall(stringstream &aFileName, stringstream &aTestCaseType, int aTestCaseIndex);
+void decodeEncodeCertAppCall(const char *aArray[]);
+int CompareFiles(stringstream &aFileName1, stringstream &aFileName2);
+int Compare(istream &aIstream1, istream &aIstream2);
+void TestWithUnicodFileName();
+
+ofstream file; //global file handle to write to output file
+const char *progress = "progress.txt";  // logs the progress report
+const char *errors = "error.txt";       // logs the error report
+
+//some constants used
+const int KFileArrayIndex = 8;
+const int KSwicertIndex = 10;
+const int KSwiBadcertIndex = 11;
+const int KFileBadcertIndex = 9;
+const int KAppUidIndex = 4; 
+const int KIndex = 4;
+
+// to get the count of passed and failed test cases
+static int failCount = 0, passCount = 0;
+
+//pointers required for creation of good filecerts config files
+const char **filecert_array[KFileArrayIndex]=
+{
+	goodCert_array,
+	goodDeletables,
+	goodFormats,
+	goodCertOwnerTypes,
+	goodSubjectKeyIds,
+	goodIssuerKeyIds,
+	goodApplications,
+	goodTrusteds
+};
+
+//pointers required for creation of bad filecerts config files
+const char **badfilecert_array[KFileBadcertIndex]=
+{
+	badLabels,
+	badDeletables,
+	badFormats,
+	badCertOwnerTypes,
+	badSubjectKeyIds,
+	badIssuerKeyIds,
+	badApplications,
+	badTrusteds,
+	badDatafilePath
+};
+
+
+//pointers required for creation of good swicerts config files
+const char **swicert_array[KSwicertIndex]=
+{
+	goodLabels,
+	goodFormats,
+	goodCertOwnerTypes,
+	goodSubjectKeyIds,
+	goodIssuerKeyIds,
+	goodAppNames,
+	goodTrusteds,
+	goodCapabilitySets,
+	goodMandatory,
+	goodSystemUpgrade
+};
+
+//pointers required for creation of bad swicerts config files
+const char **badswicert_array[KSwiBadcertIndex]=
+{
+	badLabels,
+	badFormats,
+	badCertOwnerTypes,
+	badSubjectKeyIds,
+	badIssuerKeyIds,
+	badApplications,
+	badTrusteds,
+	badDatafilePath,
+	badCapabilitySets,
+	badMandatory,
+	badSystemUpgrade
+};
+
+
+//encoded file names for input to the tool
+const char *fileEncodeType[4]=
+{
+"--hfilecertstore=utf8.txt",
+"--hfilecertstore=utf8_without_bom.txt",
+"--hfilecertstore=ucs2-bigendian.txt",
+"--hfilecertstore=ucs2-littleendian.txt"
+};
+
+// Write a pass or fail result for a test case to the TMS log file
+void writeTMSResult(ofstream &aLogFile, stringstream &aTestCaseType, int aTestCaseIndex, bool aResult, stringstream &aLogging)
+	{
+	// get the current time
+	time_t rawtime;
+	struct tm * timeinfo;
+	char standardTimeBuffer[10];
+	time(&rawtime);
+	timeinfo = localtime(&rawtime);
+	strftime(standardTimeBuffer, 10, "%H:%M:%S", timeinfo);
+	
+	struct _timeb tstruct;
+	char millisecondTimeBuffer[6];
+	_ftime(&tstruct);
+	sprintf(millisecondTimeBuffer, ":%03u ", tstruct.millitm);
+	
+	stringstream timeBuffer;
+	timeBuffer << standardTimeBuffer << millisecondTimeBuffer;
+	
+	// set result string
+	stringstream resultBuffer;
+	
+	if (aResult)
+		{
+		resultBuffer << "PASS";
+		}
+	else
+		{
+		resultBuffer << "FAIL";
+		}
+	
+	// set test case ID string
+	char testCaseIndexBuffer[6];
+	sprintf(testCaseIndexBuffer, "-%04d", aTestCaseIndex);
+	
+	// write result in the correct format
+	aLogFile << "<html><body><pre>\r\n";
+	aLogFile << timeBuffer.str();
+	aLogFile << "START_TESTCASE ";
+	aLogFile << aTestCaseType.str() << testCaseIndexBuffer;
+	aLogFile << "\r\n";
+	aLogFile << timeBuffer.str();
+	aLogFile << "Line = 1 Command = START_TESTCASE  ";
+	aLogFile << aTestCaseType.str() << testCaseIndexBuffer;
+	aLogFile << "\r\n";
+	
+	if (aLogging.str() != "")
+		{
+		aLogFile << timeBuffer.str();
+		aLogFile << aLogging.str();
+		aLogFile << "\r\n";		
+		}
+	
+	aLogFile << timeBuffer.str();
+	aLogFile << "END_TESTCASE ";
+	aLogFile << aTestCaseType.str() << testCaseIndexBuffer;
+	aLogFile << "\r\n";
+	aLogFile << timeBuffer.str();
+	aLogFile << "Line = 1 Command = END_TESTCASE ";
+	aLogFile << aTestCaseType.str() << testCaseIndexBuffer;
+	aLogFile << " ***TestCaseResult = ";
+	aLogFile << resultBuffer.str();
+	aLogFile << "\r\n</pre></body></html>\r\n";
+	}
+
+//RunCertApp call to create store from text input
+void RunCertAppTool( int argc, char **argv, stringstream &stringval, stringstream &testCaseType, int testCaseIndex)
+{
+	for(int i =0; i<argc; i++)
+		{
+		cout << "Arguments Being passed to the RunCertApp tool is " << argv[i] << endl;
+		}
+	int ret = RunCertApp(progress, errors, argc, argv); 
+	cout << "Return Value from CertApp Tool is " << ret << endl;
+	stringstream logging;	
+	if(ret!= 0)
+		{
+		failCount++;
+		logging << "Error in creating store for " << stringval.str() << " and result is " << ret << " Fail" ;
+		}
+	else
+		{
+		passCount++;
+		logging << "No Error in creating store for " << stringval.str() << " and result is " << ret << " Pass" ;
+		}
+	
+	writeTMSResult(file, testCaseType, testCaseIndex, ret==0, logging);
+}
+
+//RunCertApp call to dump the store to human readable format
+void RunCertAppToolForStoreDump(int argc, char **argv, stringstream &stringval, stringstream &testCaseType, int testCaseIndex)
+{
+	int ret = RunCertApp(progress, errors, argc, argv); 
+	cout << "Return Value from CertApp Tool is " << ret << endl;
+	stringstream logging;	
+	if(ret!= 0)
+		{
+		failCount++;
+		logging << "Error in Dumping the store file for " << stringval.str() << " and result is " << ret << " Fail";
+		}
+	else
+		{
+		passCount++;
+		logging << "No Error in Dumping store for " << stringval.str() << " and result is " << ret << " Pass";
+		}
+	
+	writeTMSResult(file, testCaseType, testCaseIndex, ret==0, logging);
+}
+
+//RunCertApp call to create store for bad params
+void RunCertAppToolForBadParams(int argc, char **argv, stringstream &stringval, stringstream &testCaseType, int testCaseIndex)
+{
+	int ret = RunCertApp(progress, errors, argc, argv); 
+	stringstream logging;	
+	if(ret!= 0)
+		{
+		passCount++;
+		cout << "We have passsed bad paramerters! Expected Return value is -1 And the RunCertApp has returned " << ret << " as Expected"<< endl;
+		logging << "Bad Params! So Cannot create the store for " << stringval.str() << " and result is " << ret << " Pass";
+		}
+	else
+		{
+		failCount++;
+		logging << "We are using bad parameters! So the tools should fail to create store! " << stringval.str() << " and result is " << ret << " Fail";
+		cout << "We have passsed bad paramerters! The Tool has failed- It should return -1, But returned" << ret << endl;
+		}
+	
+	writeTMSResult(file, testCaseType, testCaseIndex, ret==0, logging);	
+}
+
+
+/**
+main entry to the program
+*/
+int main(int /*argc*/, char ** /*argv*/)
+{
+	stringstream testCaseType;
+	int testCaseIndex = 0;
+
+	dbg.SetStream(&std::cout);
+	prog.SetStream(&std::cout);
+	std::cout << std::dec;
+
+	int num_tests = 0; 
+	int argCount3 = 3;
+	int argCount4 = 4;
+	// File to log the result of all tests
+	if(file)
+		{
+		file.open("tCertapp_Output.htm", ios_base::trunc | ios_base::out);
+		}
+
+	//create a file to augment the content to existing store
+	CreateFileToAugmentStore();
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCDAT_CREATE-0000
+  @SYMTestCaseDesc	Create store
+*/	
+
+	//create certclient config files 
+	//Format used for the files name is SDP-Security_Tools-CertApp-XXX-000X  to match with the TMS test case id
+	stringstream certclientfileName;
+	certclientfileName << "SDP-Security_Tools-CertApp-CCDAT_000"<<num_tests<<".txt";
+	GoodFileCertClientsTests(certclientfileName);
+	
+	//create command line argument for creation of certclientx.dat through certapp tool
+	stringstream strArg1, strArg2, augFileName;
+	strArg1 <<"--hcertclients=" << certclientfileName.str();
+	cout << "test" << strArg1.str().c_str() <<endl;
+
+	strArg2<< "--bcertclients=SDP-Security_Tools-CertApp-CCDAT_000" <<num_tests <<".dat";
+	cout <<"string value is " << strArg2.str().c_str() << endl;		
+	
+	string argument1, argument2;
+	const char *argv_certclient[4];
+	
+	argument1 = strArg1.str().c_str();
+	argv_certclient[0] = argument1.c_str();
+			
+	argv_certclient[1] = "--out";
+	argument2 = strArg2.str().c_str();
+	argv_certclient[2] = argument2.c_str();
+
+	char **argv, **argv1;
+	char *argument_ptr[3]; //[Format:: certapp --hcertclients=t_certclients_0.txt --out --bcertclients=certclients5.dat]
+
+	for(int n1 = 0; n1<argCount3; n1++)
+		{
+		argument_ptr[n1] = const_cast<char*>(argv_certclient[n1]);
+		argv = argument_ptr;
+		}
+	
+	testCaseType.str("SEC-TOOLS-CERTAPP-CCDAT_CREATE");
+	RunCertAppTool(argCount3, argv, certclientfileName, testCaseType, 0); // creating dat file
+	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCAUG_AUGMENT-0000
+  @SYMTestCaseDesc	Augment the Store with Extra entries
+*/	
+
+	//Augment the Store with Extra entries
+	augFileName<<"SDP-Security_Tools-CertApp-CCAUG_0000.dat";
+	argv_certclient[0] = "--hcertclients=tCertClient_Augment.txt";
+	argv_certclient[1] =  argv_certclient[2];  
+	argv_certclient[2] = "--out";
+	argv_certclient[3] = "--bcertclients=SDP-Security_Tools-CertApp-CCAUG_0000.dat";
+	for(int x = 0; x<argCount4; x++)
+			{
+			argument_ptr[x] = const_cast<char*>(argv_certclient[x]);
+			argv1 = argument_ptr;   
+			}
+	
+	testCaseType.str("SEC-TOOLS-CERTAPP-CCAUG_AUGMENT");
+	RunCertAppTool(argCount4, argv1, augFileName, testCaseType, 0);
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCDAT_DUMP-0000
+  @SYMTestCaseDesc	Dump the dat file to human readable text format
+*/	
+
+	//Dump the dat file to human readable text format
+	argv_certclient[0] = argv_certclient[3];
+	argv_certclient[1] = "--out";
+	argv_certclient[2] = "--hcertclients=SDP-Security_Tools-CertApp-CCDUMP_0000.txt";
+			
+	for(int k = 0; k<argCount3; k++)
+		{
+		argument_ptr[k] = const_cast<char*>(argv_certclient[k]);
+		argv1 = argument_ptr;
+		}
+
+	testCaseType.str("SEC-TOOLS-CERTAPP-CCDAT_DUMP");
+	RunCertAppToolForStoreDump(argCount3, argv1, certclientfileName, testCaseType, 0); 
+	//End of t_certclients
+	
+	//Creates good config files to augment store and dump store to text format for file certstore - cacerts.dat
+	//Test for all positive cases
+	for(num_tests = 0; num_tests<=KFileArrayIndex; num_tests++)
+		{
+		stringstream caCertFileName;
+		caCertFileName << "SDP-Security_Tools-CertApp-FILEDAT_000"<<num_tests<<".txt";
+		GoodFileCaCertTests(caCertFileName,num_tests);
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDAT_CREATE-0000
+  @SYMTestCaseDesc	CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDAT_CREATE-0001
+  @SYMTestCaseDesc	CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDAT_CREATE-0002
+  @SYMTestCaseDesc	CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDAT_CREATE-0003
+  @SYMTestCaseDesc	CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDAT_CREATE-0004
+  @SYMTestCaseDesc	CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDAT_CREATE-0005
+  @SYMTestCaseDesc	CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDAT_CREATE-0006
+  @SYMTestCaseDesc	CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDAT_CREATE-0007
+  @SYMTestCaseDesc	CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDAT_CREATE-0008
+  @SYMTestCaseDesc	CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+*/	
+
+		// CREATE CACERTS STORE FROM HUMAN READABLE TEXT INPUT
+		//ex:certapp --hcertclients=t_certclients_0.txt --hfilecertstore=t_cacerts_0.txt --out --bfilecertstore=cacerts_x.dat
+		stringstream strArg1, strArg2, strArg3, strArg4, strArg5;
+		strArg1 <<"--hfilecertstore=SDP-Security_Tools-CertApp-FILEDAT_000" <<num_tests << ".txt" ; 
+		
+		strArg2<< "--bfilecertstore=SDP-Security_Tools-CertApp-FILEDAT_000"<<num_tests <<".dat";
+		cout <<"string value is " << strArg2.str().c_str() << endl;	
+		
+		strArg3<< "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
+		cout <<"string value is " << strArg3.str().c_str() << endl;
+
+		string argument1, argument2, argument3, argument4, argument5;
+		const char *argv_certclient[4];
+		
+		argument1 = strArg1.str().c_str();
+		argument3 = strArg3.str().c_str();
+
+		argv_certclient[0] = argument3.c_str(); // --hcertclients=t_certclients_0.txt
+		argv_certclient[1] = argument1.c_str(); // --hfilecertstore=t_cacerts_x.txt
+		argv_certclient[2] = "--out";			//--out
+		argument2 = strArg2.str().c_str();
+		argv_certclient[3] = argument2.c_str(); //--bfilecertstore=cacerts_x.dat
+
+		char *argument_ptr[4]; 
+		char **argv, **argv1, **argv2 ;
+		for(int n = 0; n<argCount4; n++)
+			{
+			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
+			argv = argument_ptr;  
+			}
+
+		testCaseType.str("SEC-TOOLS-CERTAPP-FILEDAT_CREATE");
+		RunCertAppTool(argCount4, argv, caCertFileName, testCaseType, num_tests); 
+		
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT-0000
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT-0001
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT-0002
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT-0003
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT-0004
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT-0005
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT-0006
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT-0007
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT-0008
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+
+		//AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+		//ex:certapp  --hfilecertstore=tAugment_cacerts_x.txt  --bfilecertstore=cacerts.dat --out --bfilecertstore=new_extra_filecertstore.dat
+		stringstream augFileName, textDumpFileName;
+		augFileName<<"SDP-Security_Tools-CertApp-FILEAUG_000" <<num_tests << ".dat";
+		strArg4<<"--bfilecertstore=SDP-Security_Tools-CertApp-FILEAUG_000" << num_tests << ".dat";
+		argument4 = strArg4.str();
+		argv_certclient[0] =  "--hfilecertstore=tfile_Augment.txt";  //--hfilecertstore=tAugment_cacerts_x.txt
+		argv_certclient[1] =  argv_certclient[3]; //--bfilecertstore=cacerts_x.dat
+		argv_certclient[2] = "--out";			  //--out
+		argv_certclient[3] = argument4.c_str();  //--bfilecertstore=aug_cacerts_x.dat
+		
+		for(int x = 0; x<argCount4; x++)
+			{
+			argument_ptr[x] = const_cast<char*>(argv_certclient[x]);
+			argv1 = argument_ptr;   
+			}
+
+		testCaseType.str("SEC-TOOLS-CERTAPP-FILEAUG_AUGMENT");
+		RunCertAppTool(argCount4, argv1, augFileName, testCaseType, num_tests);
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDUMP_DUMP-0000
+  @SYMTestCaseDesc	DUMP THE STORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDUMP_DUMP-0001
+  @SYMTestCaseDesc	DUMP THE STORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDUMP_DUMP-0002
+  @SYMTestCaseDesc	DUMP THE STORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDUMP_DUMP-0003
+  @SYMTestCaseDesc	DUMP THE STORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDUMP_DUMP-0004
+  @SYMTestCaseDesc	DUMP THE STORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDUMP_DUMP-0005
+  @SYMTestCaseDesc	DUMP THE STORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDUMP_DUMP-0006
+  @SYMTestCaseDesc	DUMP THE STORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDUMP_DUMP-0007
+  @SYMTestCaseDesc	DUMP THE STORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEDUMP_DUMP-0008
+  @SYMTestCaseDesc	DUMP THE STORE TO HUMAN READABLE FORMAT
+*/	
+		
+		//DUMP THE STORE TO HUMAN READABLE FORMAT
+		//ex:certapp --bfilecertstore=test.dat --out --hfilecertstore=t_cacerts.txt 
+		textDumpFileName <<"SDP-Security_Tools-CertApp-FILEDUMP_000"<< num_tests << ".txt";
+		argv_certclient[0] =  argv_certclient[3];  //--bfilecertstore=aug_cacerts_x.dat
+		argv_certclient[1] = "--out";
+		strArg5<< "--hfilecertstore=SDP-Security_Tools-CertApp-FILEDUMP_000" <<num_tests << ".txt";
+		argument5 = strArg5.str().c_str();
+		argv_certclient[2] = argument5.c_str();
+						
+		for(int k = 0; k<argCount3; k++)
+			{
+			argument_ptr[k] = const_cast<char*>(argv_certclient[k]);
+			argv2 = argument_ptr;
+			}
+		//Dumps the augmented store
+
+		testCaseType.str("SEC-TOOLS-CERTAPP-FILEDUMP_DUMP");
+		RunCertAppToolForStoreDump(argCount3, argv2, textDumpFileName, testCaseType, num_tests); 
+		}//End of cacerts
+
+
+	//create config files with legal values for swi certstore 
+	for(num_tests = 0; num_tests<KSwicertIndex; num_tests++)
+		{
+		stringstream swiCertStoreFileName;
+		swiCertStoreFileName << "SDP-Security_Tools-CertApp-SWIDAT_000"<<num_tests<<".txt";
+		GoodSwiCertTests(swiCertStoreFileName,num_tests);
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0000
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0001
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0002
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0003
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0004
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0005
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0006
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0007
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0008
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDAT_CREATE-0009
+  @SYMTestCaseDesc	CREATE THE SWICERTSTORE FROM THE HUMAN READABLE TEXT INPUT
+*/	
+
+		//CREATE THE SWICERTSTORE  FROM THE HUMAN READABLE TEXT INPUT
+		//Ex: certapp --hcertclients=t_certclients_0.txt --hswicertstore=t_swicertstore_0.txt --out --bswicertstore=swicertstore_x.dat
+		stringstream strArg1, strArg2, strArg3, strArg4, strArg5;
+		strArg1 <<"--hswicertstore=SDP-Security_Tools-CertApp-SWIDAT_000" <<num_tests << ".txt" ; //--hswicertstore=t_cacerts_x.txt
+		
+		strArg2<< "--bswicertstore=SDP-Security_Tools-CertApp-SWIDAT_000" <<num_tests <<".dat"; //--bswicertstore=swicertstore.dat
+		cout <<"string value is " << strArg2.str().c_str() << endl;	
+		
+		strArg3<< "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
+		cout <<"string value is " << strArg3.str().c_str() << endl;
+
+		string argument1, argument2, argument3, argument4, argument5;
+		const char *argv_certclient[4];
+		
+		argument1 = strArg1.str().c_str();
+		argument3 = strArg3.str().c_str();
+
+		argv_certclient[0] = argument3.c_str(); //--hcertclients=t_certclients_0.txt
+		argv_certclient[1] = argument1.c_str(); //--hswicertstore=t_swicertstore_
+		argv_certclient[2] = "--out";
+		argument2 = strArg2.str().c_str();
+		argv_certclient[3] = argument2.c_str();  //--bswicertstore=swicertstore_x.dat
+
+	    char *argument_ptr[4]; 
+	
+		for(int j=0; j<argCount4; j++)
+			{
+			cout << "Value in argv_certclient " << j << "is " <<argv_certclient[j] <<endl;
+			}
+
+		char **argv;
+		for(int n = 0; n<argCount4; n++)
+			{
+			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
+			argv = argument_ptr;
+			}
+
+		testCaseType.str("SEC-TOOLS-CERTAPP-SWIDAT_CREATE");
+		RunCertAppTool(argCount4, argv,swiCertStoreFileName, testCaseType, num_tests); 
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0000
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0001
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0002
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0003
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0004
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0005
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0006
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0007
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0008
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT-0009
+  @SYMTestCaseDesc	AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+*/	
+
+		//AUGMENT THE CACERT STORE WITH EXTRA INFORMATION
+		//certapp  --hswicertstore=tAugment_swicertstore_x.txt  --bswicertstore=swicertstore_x.dat --out --bswicertstore=aug_swicertstore_x.dat
+		stringstream augFileName, textDumpFileName;
+		augFileName << "SDP-Security_Tools-CertApp-SWIAUG_000" << num_tests <<".dat";
+		strArg4<<"--bswicertstore=SDP-Security_Tools-CertApp-SWIAUG_000" << num_tests << ".dat";
+		argument4 = strArg4.str();
+		argv_certclient[0] =  "--hswicertstore=tswi_Augment.txt";  //--hswicertstore=tAugment_swicertstore_x.txt
+		argv_certclient[1] =  argv_certclient[3]; //--bswicertstore=swicertstore_x.dat
+		argv_certclient[2] = "--out";
+		argv_certclient[3] = argument4.c_str();  //--bswicertstore=aug_swicertstore_x.dat
+		char **argv1;
+		for(int x = 0; x<argCount4; x++)
+			{
+			argument_ptr[x] = const_cast<char*>(argv_certclient[x]);
+			argv1 = argument_ptr;   
+			}
+
+		testCaseType.str("SEC-TOOLS-CERTAPP-SWIAUG_AUGMENT");
+		RunCertAppTool(argCount4, argv1, augFileName, testCaseType, num_tests);
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0000
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0001
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0002
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0003
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0004
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0005
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0006
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0007
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0008
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIDUMP_DUMP-0009
+  @SYMTestCaseDesc	DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+*/	
+		
+		//DUMP THE SWI CERTSTORE TO HUMAN READABLE FORMAT
+		textDumpFileName << "SDP-Security_Tools-CertApp-SWIDUMP_000" <<num_tests << ".txt";
+		argv_certclient[0] =  argv_certclient[3];  
+		argv_certclient[1] = "--out";
+		strArg5<< "--hswicertstore=SDP-Security_Tools-CertApp-SWIDUMP_000" <<num_tests << ".txt";
+		argument5= strArg5.str().c_str();
+		argv_certclient[2] = argument5.c_str();
+			
+		char ** argv2;
+		for(int k = 0; k<argCount3; k++)
+			{
+			argument_ptr[k] = const_cast<char*>(argv_certclient[k]);
+			argv2 = argument_ptr;
+			}
+
+		testCaseType.str("SEC-TOOLS-CERTAPP-SWIDUMP_DUMP");
+		RunCertAppToolForStoreDump(argCount3, argv2, textDumpFileName, testCaseType, num_tests); 
+		}
+	
+	//Test with unicode filename
+	TestWithUnicodFileName();
+
+	//create empty config file
+	TestsWithEmptyConfigFile();
+
+	//Test case to test for different file formats
+	TestsWithEncodedFileFormats();
+
+	//Test case for REQ10313 to check decode/encode of stores
+	TestToDecodeAndEncodeStore();
+
+	//Test case for REQ10314 - reviewing aggregate certificate database
+	TestToReviewingAggregateStore();
+
+	//Test cases for BAD Params
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATE-0000
+  @SYMTestCaseDesc	Create bad certclient config files
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATE-0001
+  @SYMTestCaseDesc	Create bad certclient config files
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATEE-0002
+  @SYMTestCaseDesc	Create bad certclient config files
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATE-0003
+  @SYMTestCaseDesc	Create bad certclient config files
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATE-0004
+  @SYMTestCaseDesc	Create bad certclient config files
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATE-0005
+  @SYMTestCaseDesc	Create bad certclient config files
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATE-0006
+  @SYMTestCaseDesc	Create bad certclient config files
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATE-0007
+  @SYMTestCaseDesc	Create bad certclient config files
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATE-0008
+  @SYMTestCaseDesc	Create bad certclient config files
+*/	
+	//create certclient config files 
+	testCaseType.str("SEC-TOOLS-CERTAPP-CCBADPARAMS_CREATE");
+	testCaseIndex = 0;
+	for(num_tests =0; num_tests<3; num_tests++) 
+		{
+		stringstream badCertClientsFileName;
+		badCertClientsFileName << "SDP-Security_Tools-CertApp-CCBadParams-000"<<num_tests;
+		BadFileCertClientsTests(badCertClientsFileName,num_tests,testCaseType,testCaseIndex);
+		} //End of bad params for cerclients
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0000
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0001
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0002
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0003
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0004
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0005
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0006
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0007
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0008
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0009
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0010
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0011
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0012
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0013
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0014
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0015
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0016
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0017
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0018
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0019
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0020
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0021
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0022
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0023
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0024
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0025
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE-0026
+  @SYMTestCaseDesc	Create bad config files for file certstore
+*/	
+	//create bad config files for file certstore - cacerts.dat
+	testCaseType.str("SEC-TOOLS-CERTAPP-FILEBADPARAMS_CREATE");
+	testCaseIndex = 0;
+	for(num_tests = 0; num_tests<KFileArrayIndex+1; num_tests++)
+		{
+		stringstream badCaCertsFileName;
+		badCaCertsFileName << "SDP-Security_Tools-CertApp-FileBadParams-000"<<num_tests; 
+		BadFileCaCertTests(badCaCertsFileName,num_tests,testCaseType,testCaseIndex);
+		}
+	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0000
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0001
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0002
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0003
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0004
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0005
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0006
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0007
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0008
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0009
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0010
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0011
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0012
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0013
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0014
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0015
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0016
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0017
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0018
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0019
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0020
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0021
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0022
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0023
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0024
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0025
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0026
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0027
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0028
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0029
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE-0030
+  @SYMTestCaseDesc	Create config files with invalid values swi certstore 
+*/	
+	//create config files with invalid values swi certstore 
+	testCaseType.str("SEC-TOOLS-CERTAPP-SWIBADPARAMS_CREATE");
+	testCaseIndex = 0;
+	for(num_tests = 0; num_tests<KSwiBadcertIndex; num_tests++)
+		{
+		stringstream badSwiCertsFileName;
+		badSwiCertsFileName << "SDP-Security_Tools-CertApp-SwiBadParams-000"<<num_tests;
+		BadSwiCertTests(badSwiCertsFileName,num_tests,testCaseType,testCaseIndex);
+		}
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0001
+  @SYMTestCaseDesc	Initializing a CUnifiedCertStore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0002
+  @SYMTestCaseDesc	Get the list of certificates
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0003
+  @SYMTestCaseDesc	Get certificate details
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0004
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0005
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0006
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0007
+  @SYMTestCaseDesc	Get certificate details
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0008
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0009
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0010
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0011
+  @SYMTestCaseDesc	Get certificate details
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0012
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0013
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0014
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0015
+  @SYMTestCaseDesc	Get certificate details
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0016
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0017
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0018
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0019
+  @SYMTestCaseDesc	Get certificate details
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0020
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0021
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0022
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0023
+  @SYMTestCaseDesc	Get certificate details
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0024
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0025
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCACERT-0026
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+	//Code to create Script files for the file/sw/certclients to run validation tests on emulator
+	//create script file for the symbian test harness-  for cacerts.dat
+	testCaseType.str("SEC-TOOLS-CERTAPP-GOODCACERT");
+	testCaseIndex = 0;
+	for(num_tests = 0; num_tests<1; num_tests++)
+		{
+		stringstream emu_CacertsFileName;
+		emu_CacertsFileName << "SDP-Security_Tools-CertApp-FILEDAT-EMU0"<<num_tests<<".script";
+		GenerateGoodCaCertsTestScripts(emu_CacertsFileName,testCaseType,testCaseIndex);
+		}
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCERT-0001
+  @SYMTestCaseDesc	Initialise a CertClientStore
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCERT-0002
+  @SYMTestCaseDesc	Get Count of Applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCERT-0003
+  @SYMTestCaseDesc	Getting the application list
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCERT-0004
+  @SYMTestCaseDesc	Get application with given id
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCERT-0005
+  @SYMTestCaseDesc	Get application with given id
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCERT-0006
+  @SYMTestCaseDesc	Get application with given id
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCERT-0007
+  @SYMTestCaseDesc	Get application with given id
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODCERT-0008
+  @SYMTestCaseDesc	Destroy the manager
+*/	
+	//create script file for certclients.dat
+	testCaseType.str("SEC-TOOLS-CERTAPP-GOODCERT");
+	testCaseIndex = 0;
+	for(num_tests = 0; num_tests<1; num_tests++)
+		{
+		stringstream emu_CertClientsFileName;
+		emu_CertClientsFileName << "SDP-Security_Tools-CertApp-CCDAT-EMU0"<<num_tests<<".script";
+		GenerateGoodCertClientTestScripts(emu_CertClientsFileName,testCaseType,testCaseIndex);
+		}
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0001
+  @SYMTestCaseDesc	Initialise a SWICertStore
+*/
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0002
+  @SYMTestCaseDesc	Get the list of certificates
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0003
+  @SYMTestCaseDesc	Get the systemupgrade flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0004
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0005
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0006
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0007
+  @SYMTestCaseDesc	Get the capabilities
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0008
+  @SYMTestCaseDesc	Get the mandatory flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0009
+  @SYMTestCaseDesc	Get the systemupgrade flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0010
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0011
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0012
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0013
+  @SYMTestCaseDesc	Get the capabilities
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0014
+  @SYMTestCaseDesc	Get the mandatory flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0015
+  @SYMTestCaseDesc	Get the systemupgrade flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0016
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0017
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0018
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0019
+  @SYMTestCaseDesc	Get the capabilities
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0020
+  @SYMTestCaseDesc	Get the mandatory flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0021
+  @SYMTestCaseDesc	Get the systemupgrade flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0022
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0023
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0024
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0025
+  @SYMTestCaseDesc	Get the capabilities
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0026
+  @SYMTestCaseDesc	Get the mandatory flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0027
+  @SYMTestCaseDesc	Get the systemupgrade flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0028
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0029
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0030
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0031
+  @SYMTestCaseDesc	Get the capabilities
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0032
+  @SYMTestCaseDesc	Get the mandatory flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0033
+  @SYMTestCaseDesc	Get the systemupgrade flag
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0034
+  @SYMTestCaseDesc	Retrieve Certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0035
+  @SYMTestCaseDesc	Get applications
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0036
+  @SYMTestCaseDesc	Get Trust certificate
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0037
+  @SYMTestCaseDesc	Get the capabilities
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-GOODSWICERT-0038
+  @SYMTestCaseDesc	Get the mandatory flag
+*/	
+	//create script file for the symbian test harness-  for swicerts.dat
+	testCaseType.str("SEC-TOOLS-CERTAPP-GOODSWICERT");
+	testCaseIndex = 0;
+	for(num_tests = 0; num_tests<1; num_tests++)
+		{
+		stringstream emu_SwiCertsFileName;
+		emu_SwiCertsFileName << "SDP-Security_Tools-CertApp-SWIDAT-EMU0"<<num_tests<<".script";
+		GenerateGoodSwiCertTestScripts(emu_SwiCertsFileName,testCaseType,testCaseIndex);
+		}
+
+	int testCaseCount = failCount+passCount;
+	cout  << "\nTestrun result is :: " << failCount <<" tests failed out of " << testCaseCount <<endl;
+	file << "\n\nTotal number of test cases run is -> " << testCaseCount << endl;
+	file << failCount << " tests failed out of " << testCaseCount <<endl;
+	file.close();
+	return 0;
+}
+
+
+
+/**
+Function to create input file for augmenting the existing store
+*/
+void CreateFileToAugmentStore()
+{
+	stringstream swifilename, cacertsfilename, certclientName;
+	swifilename <<"tswi_Augment.txt";
+	cacertsfilename<< "tfile_Augment.txt";
+	certclientName << "tCertClient_Augment.txt";
+
+	SwiCertStoreConfigWriter swiwriter(swifilename);
+	swiwriter.WriteExtraSwiEntry();
+	
+	FileCertStoreConfigWriter filewriter(cacertsfilename);
+	filewriter.WriteExtraFileEntry();
+
+	FileCertClientConfigWriter certclientwriter(certclientName);
+	certclientwriter.WriteExtraCertClientEntry();
+}
+
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-UNICODEFILE_CREATE-0000
+  @SYMTestCaseDesc	Check the certapp tool for unicode named config file
+*/	
+/**
+Test case to check the certapp tool for unicode named config file
+Testing with only one unicode named config file for now
+*/
+void TestWithUnicodFileName()
+{
+	//unicode file name in utf8 format
+	const char *filename= "\xe4\xb8\x95\xe4\xb8\x8d\xe4\xb8\x8e\xe4\xb8\x90\xe4\xb8\x91\xe4\xb8\x96\xe4\xb8\x99\x2e\x74\x78\x74";
+	fstream fileHandle;
+
+	OpenUtf8FStreamForWrite(fileHandle,filename);
+
+	char * buffer;
+	long size;
+
+	ifstream infile ("SDP-Security_Tools-CertApp-CCDAT_0000.txt",ifstream::binary);
+	// get size of file
+	infile.seekg(0,ifstream::end);
+	size=infile.tellg();
+	infile.seekg(0);
+	// allocate memory for file content
+	buffer = new char [size];
+	// read content of infile
+	infile.read (buffer,size);
+	// write to outfile
+	fileHandle.write (buffer,size);
+  
+	// release dynamically-allocated memory
+	delete[] buffer;
+	fileHandle.close();
+	infile.close();
+
+	//create argument list for certapp
+	const char *argv_certclient[3];
+	stringstream str1;
+	str1 <<"--hcertclients=" << filename;
+	string string1;
+	string1 = str1.str();
+
+	argv_certclient[0] =  string1.c_str();
+	argv_certclient[1] = "--out";
+	argv_certclient[2] = "--bcertclients=SDP-Security_Tools-CertApp-UNI00.dat";
+	
+	char **argv;
+	char *argument_ptr[3];
+	int argCount=3;
+	for(int n = 0; n<argCount; n++)
+		{
+		argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
+		argv = argument_ptr;
+		}
+
+	for(int i =0; i<argCount; i++)
+		{
+		cout << "Arguments Being passed to the RunCertApp tool is " << argv[i] << endl;
+		}
+
+	int ret = RunCertApp(progress, errors, argCount, argv); 
+	cout << "Return value from certapp is " << ret <<endl;
+	stringstream logging;
+	if(ret!= 0)
+		{
+		failCount++;
+		logging << "Error in creating store using the unicode file name config file " << filename << " and result is " << ret << " Fail";
+		}
+	else
+		{
+		passCount++;
+		logging << "No Error in creating store using the unicode file named config file " << filename << " and result is " << ret << " Pass";
+		}
+	
+	stringstream testCaseType("SEC-TOOLS-CERTAPP-UNICODEFILE_CREATE");
+	writeTMSResult(file, testCaseType, 0, ret==0, logging);
+}
+
+/**
+Generate Certclient config files
+*/
+void GoodFileCertClientsTests(const stringstream &aFilename)
+{
+	FileCertClientConfigWriter filewriter(aFilename);
+	const char *certclientPtr1; 
+	const char *certclientPtr2;
+	for(int i = 0; i<KAppUidIndex ; i++)
+		{
+		certclientPtr1 = goodAppNames[i];
+		certclientPtr2 = gooduid_array[i];
+		filewriter.WriteCertClientUid(certclientPtr2);
+		filewriter.WriteCertClientName(certclientPtr1);
+		}
+}
+
+
+/**
+Generate good config files for cacerts
+*/
+void GoodFileCaCertTests(const stringstream &aFilename ,int aValue)
+{
+	FileCertStoreConfigWriter fileCertWriter(aFilename);
+	const char **cacertPtr; 
+	const char **label = filecert_array[0];
+	switch(aValue)
+	{
+	case 0:
+		{
+		// Tests for GoodLabels
+		for(label = filecert_array[aValue]; *label; ++label)
+			{
+		
+			fileCertWriter.WriteFileEntry(*label);
+			}
+		break;
+		}
+	case 1:
+		{
+		// Tests for GoodDeletables
+		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
+			{
+			fileCertWriter.WriteFileEntry(*label,*cacertPtr);
+			label++;
+			}
+		break;
+		}
+	case 2:
+		{
+		//Tests for GoodFormats
+		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
+			{
+			fileCertWriter.WriteFileEntry(*label,0,*cacertPtr);
+			label++;
+			}
+		break;
+		}
+	case 3:
+		{
+		//Tests for GoodCertOwnerTypes
+		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
+			{
+			fileCertWriter.WriteFileEntry(*label,0,0,*cacertPtr);
+			label++;
+			}
+		break;
+		}
+	case 4:
+		{
+		//Tests for GoodSubjectKeyIds
+		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
+			{
+			fileCertWriter.WriteFileEntry(*label,0,0,0,*cacertPtr);
+			label++;
+			}
+		break;
+		}
+	case 5:
+		{
+		//Tests for GoodIssuerKeyIds
+		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
+			{
+			fileCertWriter.WriteFileEntry(*label,0,0,0,0,*cacertPtr);
+			label++;
+			}
+		break;
+		}
+	case 6:
+		{
+		//Tests for GoodApplications
+		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
+			{
+			fileCertWriter.WriteFileEntry(*label,0,0,0,0,0,*cacertPtr);
+			label++;
+			}
+		break;
+		}
+	case 7:
+		{
+		//Tests for GoodTrusteds
+		for(cacertPtr = filecert_array[aValue]; *cacertPtr; ++cacertPtr)
+			{
+			fileCertWriter.WriteFileEntry(*label,0,0,0,0,0,0,*cacertPtr);
+			label++;
+			}
+		break;
+		}
+	
+	case 8:
+		{	
+		//Test for PEM support
+		const char* datafilename = "\"root5ca.pem\"";
+		fileCertWriter.WriteFileEntry(*label,0,0,0,0,0,0,0,datafilename);
+		}
+		break;
+	
+	default:
+		break;
+	}
+}
+
+/**
+Generate  config file for swicert
+*/
+void GoodSwiCertTests(const stringstream &aFilename, int aIndex)
+{
+	SwiCertStoreConfigWriter swiWriter(aFilename);
+	const char **swiPtr1, **swiPtr2; 
+	swiPtr2 = swicert_array[0]; // labels for all scripts
+	switch(aIndex)
+	{
+	case 0:
+		{
+		// Tests for GoodLabels
+		for(swiPtr2=swicert_array[aIndex] ; *swiPtr2; ++swiPtr2)
+			{
+			swiWriter.WriteSwiEntry(*swiPtr2);
+			}
+		break;
+		}
+	case 1:
+		{
+		//Tests for GoodFormats
+		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
+			{
+			swiWriter.WriteSwiEntry(*swiPtr2,*swiPtr1);
+			++swiPtr2;
+			}
+		break;
+		}
+	case 2:
+		{
+		//Tests for GoodCertOwnerTypes
+		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
+			{
+			swiWriter.WriteSwiEntry(*swiPtr2,0,*swiPtr1);
+			++swiPtr2;
+			}
+		break;
+		}
+	case 3:
+		{
+		//Tests for GoodSubjectKeyIds
+		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
+			{
+			swiWriter.WriteSwiEntry(*swiPtr2,0,0,*swiPtr1);
+			++swiPtr2;
+			}
+		break;
+		}
+	case 4:
+		{
+		//Tests for GoodIssuerKeyIds
+		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
+			{
+			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,*swiPtr1);
+			++swiPtr2;
+			}
+		break;
+		}
+	case 5:
+		{
+		//Tests for GoodAswiPtr1lications
+		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
+			{
+			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,*swiPtr1);
+			++swiPtr2;
+			}
+		break;
+		}
+	case 6:
+		{
+		//Tests for GoodTrusteds
+		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
+			{
+			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,0,*swiPtr1);
+			++swiPtr2;
+			}
+		break;
+		}
+	case 7:
+		{
+		//Tests for GoodCapabilities
+		swiPtr1 = swicert_array[aIndex]; 
+		swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,0,0,*swiPtr1);
+		break;
+		}
+	case 8:
+		{
+		//Tests for sGoodMandatory
+		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
+			{
+			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,0,0,0,*swiPtr1);
+			++swiPtr2;
+			}
+		break;
+		}
+	case 9:
+		{
+		//Tests for sGoodSystemUpgrade
+		for(swiPtr1 = swicert_array[aIndex]; *swiPtr1; ++swiPtr1)
+			{
+			swiWriter.WriteSwiEntry(*swiPtr2,0,0,0,0,0,0,0,0,*swiPtr1);
+			++swiPtr2;
+			}
+		break;
+		}
+	default:
+		break;
+	}
+}
+
+/**
+Generate config  files with invalid values for the store
+*/
+void TestBadConfigFiles(const stringstream &aFilename, bool aBool, stringstream &aTestCaseType, int aTestCaseIndex)
+{
+	// create command line input for cacerts
+	//Ex:certapp --hcertclients=t_certclients_0.txt --hfilecertstore=t_cacerts_0.txt --out --bfilecertstore=cacerts_x.dat
+	stringstream strArg1, strArg2, strArg3;
+	stringstream configFileName;
+	configFileName <<aFilename.str() << ".txt";
+	cout << aFilename.str() <<endl;
+	if(aBool == 0) // file store
+		{
+		strArg1 <<"--hfilecertstore="<<aFilename.str() <<".txt";;//--hfilecertstore=t_cacerts_x.txt
+		
+		strArg2<< "--bfilecertstore=" << aFilename.str() <<".dat"; //--bfilecertstore=cacerts_x.dat
+		cout <<"string value is " << strArg2.str().c_str() << endl;	
+		}
+	else  //swi store
+		{
+		strArg1 <<"--hswicertstore="<<aFilename.str() <<".txt";;//--hswicertstore=t_cacerts_x.txt
+		
+		strArg2<< "--bswicertstore=" << aFilename.str() <<".dat"; //--bswicertstore=cacerts_x.dat
+		cout <<"string value is " << strArg2.str().c_str() << endl;	
+		}
+
+	strArg3<< "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
+	cout <<"string value is " << strArg3.str().c_str() << endl;
+
+	string argument1, argument2, argument3;
+	const char *argv_certclient[4];
+	
+	argument1 = strArg1.str().c_str();
+	argument3 = strArg3.str().c_str();
+
+	argv_certclient[0] = argument3.c_str(); // --hcertclients=t_certclients_0.txt
+	argv_certclient[1] = argument1.c_str(); // --hfilecertstore=t_cacerts_x.txt
+	argv_certclient[2] = "--out";			//--out
+	argument2 = strArg2.str().c_str();
+	argv_certclient[3] = argument2.c_str(); //--bfilecertstore=cacerts_x.dat
+
+	char *argument_ptr[4]; 
+	int argCount4 = 4;
+	char **argv;
+	for(int n = 0; n<argCount4; n++)
+		{
+		argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
+		argv = argument_ptr;   
+		}
+	RunCertAppToolForBadParams(argCount4, argv, configFileName, aTestCaseType, aTestCaseIndex); 
+}
+
+/**
+Generate bad config files for cacerts
+*/
+void BadFileCaCertTests(const stringstream &aFilename ,int aValue, stringstream &aTestCaseType, int &aTestIndex)
+{
+	const char **caCertPtr; 
+	int count = 0;
+	switch(aValue)
+	{
+	case 0:
+		{
+		// Tests for BadLabels
+		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr ; ++caCertPtr )
+			{
+			stringstream file1, file2;
+			file1 << aFilename.str() <<"_"<<count;
+			file2 << aFilename.str() <<"_"<<count <<".txt";
+			FileBadCertStoreConfigWriter badcertfileWriter(file2);
+			badcertfileWriter.WriteFileEntry(*caCertPtr);
+			TestBadConfigFiles(file1, 0, aTestCaseType, aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 1:
+		{
+		// Tests for BadDeletables
+		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
+			{
+			stringstream file1, file2;
+			file1 << aFilename.str() <<"_"<<count;
+			file2 << aFilename.str() <<"_"<<count <<".txt";
+			FileBadCertStoreConfigWriter badcertfileWriter(file2);
+			badcertfileWriter.WriteFileEntry(0,*caCertPtr);
+			TestBadConfigFiles(file1,0,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 2:
+		{
+		//Tests for BadFormats
+		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
+			{
+			stringstream file1, file2;
+			file1 << aFilename.str() <<"_"<<count;
+			file2 << aFilename.str() <<"_"<<count <<".txt";
+			FileBadCertStoreConfigWriter badcertfileWriter(file2);
+			badcertfileWriter.WriteFileEntry(0,0,*caCertPtr);
+			TestBadConfigFiles(file1,0,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 3:
+		{
+		//Tests for BadCertOwnerTypes
+		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
+			{
+			stringstream file1, file2;
+			file1 << aFilename.str() <<"_"<<count;
+			file2 << aFilename.str() <<"_"<<count <<".txt";
+			FileBadCertStoreConfigWriter badcertfileWriter(file2);
+			badcertfileWriter.WriteFileEntry(0,0,0,*caCertPtr);
+			TestBadConfigFiles(file1,0,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 4:
+		{
+		//Tests for BadSubjectKeyIds
+		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
+			{
+			stringstream file1, file2;
+			file1 << aFilename.str() <<"_"<<count;
+			file2 << aFilename.str() <<"_"<<count <<".txt";
+			FileBadCertStoreConfigWriter badcertfileWriter(file2);
+			badcertfileWriter.WriteFileEntry(0,0,0,0,*caCertPtr);
+			TestBadConfigFiles(file1,0,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 5:
+		{
+		//Tests for BadIssuerKeyIds
+		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
+			{
+			stringstream file1, file2;
+			file1 << aFilename.str() <<"_"<<count;
+			file2 << aFilename.str() <<"_"<<count <<".txt";
+			FileBadCertStoreConfigWriter badcertfileWriter(file2);
+			badcertfileWriter.WriteFileEntry(0,0,0,0,0,*caCertPtr);
+			TestBadConfigFiles(file1,0,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 6:
+		{
+		//Tests for BadApplications
+		caCertPtr = badfilecert_array[aValue];
+		stringstream file1, file2;
+		file1 << aFilename.str() <<"_"<<count;
+		file2 << aFilename.str() <<"_"<<count <<".txt";
+		FileBadCertStoreConfigWriter badcertfileWriter(file2);
+		badcertfileWriter.WriteFileEntry(0,0,0,0,0,0,*caCertPtr);
+		TestBadConfigFiles(file1,0,aTestCaseType,aTestIndex++);
+		break;
+		}
+	case 7:
+		{
+		//Tests for BadTrusteds
+		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
+			{
+			stringstream file1, file2;
+			file1 << aFilename.str() <<"_"<<count;
+			file2 << aFilename.str() <<"_"<<count <<".txt";
+			FileBadCertStoreConfigWriter badcertfileWriter(file2);
+			badcertfileWriter.WriteFileEntry(0,0,0,0,0,0,0,*caCertPtr);
+			TestBadConfigFiles(file1,0,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 8:
+		{
+		//Tests for BadDataFileName
+		for(caCertPtr = badfilecert_array[aValue]; *caCertPtr; ++caCertPtr)
+			{
+			stringstream file1, file2;
+			file1 << aFilename.str() <<"_"<<count;
+			file2 << aFilename.str() <<"_"<<count <<".txt";
+			FileBadCertStoreConfigWriter badcertfileWriter(file2);
+			badcertfileWriter.WriteFileEntry(0,0,0,0,0,0,0,0,*caCertPtr);
+			TestBadConfigFiles(file1,0,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	default:
+		break;
+	}
+}
+
+
+/**
+Generate bad Certclient config files
+*/
+void BadFileCertClientsTests(const stringstream &aFilename, int aIndex, stringstream &aTestCaseType, int &aTestCaseIndex)
+{
+	FileBadCertClientConfigWriter certfileWriter(aFilename);
+	const char *certfilePtr1, *certfilePtr2; 
+	
+	switch(aIndex)
+	{
+	case 0:
+		{
+		for(int i=0; i<KAppUidIndex; i++) // 4 badUids[] length
+			{
+			stringstream file1, file2;
+			file2 << aFilename.str() << "_" << i ;
+			file1 << aFilename.str() <<"_"<<i <<".txt";
+			FileBadCertClientConfigWriter certfileWriter(file1);
+			certfilePtr1 = goodcertclient_array[0]; // good app name and 
+			certfilePtr2 = badUids[i];
+			certfileWriter.WriteCertClientUid(certfilePtr2); // bad uid entry
+			certfileWriter.WriteCertClientName(certfilePtr1);
+			CertClientBadParamsFuncCall(file2, aTestCaseType, aTestCaseIndex++);
+			}
+		break;
+		}
+
+	case 1:
+		{
+		for(int i = 0; i<4 ; i++) // length of badcertclient_array
+			{
+			stringstream file1, file2;
+			file2 << aFilename.str() << "_" << i ;
+			file1 << aFilename.str() <<"_"<<i <<".txt";
+			FileBadCertClientConfigWriter certfileWriter(file1);
+			certfilePtr1 = badcertclient_array[i];
+			certfilePtr2 = goodUids[0];
+			certfileWriter.WriteCertClientUid(certfilePtr2);
+			certfileWriter.WriteCertClientName(certfilePtr1);
+			CertClientBadParamsFuncCall(file2, aTestCaseType, aTestCaseIndex++);
+			}
+		break;
+		}
+	
+	// multiple names mapping to single uid
+	case 2:
+		{
+		stringstream file1;
+		file1 << aFilename.str() <<".txt";
+		FileBadCertClientConfigWriter certfileWriter(file1);
+		for(int i= 0; i<KAppUidIndex; i++)
+			{
+			certfilePtr1 = goodAppNames[i]; //app names - SW Install,SW install Ocsp Signing etc.
+			certfilePtr2 = goodUids[0];
+			certfileWriter.WriteCertClientName(certfilePtr1);
+			certfileWriter.WriteCertClientUid(certfilePtr2);
+			}
+		CertClientBadParamsFuncCall(file1, aTestCaseType, aTestCaseIndex++);
+		break;
+		}
+	
+	default:
+		break;
+	}
+}
+
+
+void CertClientBadParamsFuncCall(stringstream &aFileName, stringstream &aTestCaseType, int aTestCaseIndex)
+{
+	//Ex:certapp --hcertclients=t_certclients_0.txt --out --bcertclients=t_certclients_0.dat 
+	stringstream strArg1, strArg2, strArg3;
+	strArg1 <<"--hcertclients=" << aFileName.str() << ".txt";   
+	
+	strArg2<< "--bcertclients=" << aFileName.str() << ".dat"; 
+	cout <<"string value is " << strArg2.str().c_str() << endl;	
+	
+	string argument1, argument2;
+	const char *argv_certclient[3];
+	
+	argument1= strArg1.str().c_str();
+	argument2= strArg2.str().c_str();
+
+	argv_certclient[0] = argument1.c_str(); // --hcertclients=tbad_certclients_x.txt
+	argv_certclient[1] = "--out";			//--out
+	argv_certclient[2] = argument2.c_str(); //--bcertclients=t_certclients_x.dat
+
+	char *argument_ptr[3]; 
+	int argCount3 = 3;
+	char **argv;
+	for(int n = 0; n<argCount3; n++)
+		{
+		argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
+		argv = argument_ptr;   
+		}
+	RunCertAppToolForBadParams(argCount3, argv, aFileName, aTestCaseType, aTestCaseIndex); 
+}
+
+
+/**
+Generate  config file for swicert
+*/
+void BadSwiCertTests(const stringstream &aFileName, int aIndex, stringstream &aTestCaseType, int &aTestIndex)
+{
+	const char **swicertPtr1; 
+	int count = 0 ;
+	switch(aIndex)
+	{
+	case 0:
+		{
+		// Tests for BadLabels
+		for(swicertPtr1= badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+
+	case 1:
+		{
+		//Tests for BadFormats
+		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 2:
+		{
+		//Tests for BadCertOwnerTypes
+		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 3:
+		{
+		//Tests for BadSubjectKeyIds
+		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,0,0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;	
+			}
+		break;
+		}
+	case 4:
+		{
+		//Tests for BadIssuerKeyIds
+		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,0,0,0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 5:
+		{
+		//Tests for BadApplications
+		swicertPtr1 = badswicert_array[aIndex];
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,0,0,0,0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 6:
+		{
+		//Tests for BadTrusteds
+		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 7:
+		{
+		//Tests for BadDataFileName
+		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 8:
+		{
+		//Tests for BadCapabilities
+		swicertPtr1 = badswicert_array[aIndex];
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,0,0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 9:
+		{
+		//Tests for BadMandatory
+		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,0,0,0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	case 10:
+		{
+		//Tests for BadSystemUpgrade
+		for(swicertPtr1 = badswicert_array[aIndex]; *swicertPtr1; ++swicertPtr1)
+			{
+			stringstream file1, file2;
+			file1 << aFileName.str() <<"_"<<count;
+			file2 << aFileName.str() <<"_"<<count <<".txt";
+			SwiBadCertStoreConfigWriter badswiWriter(file2);
+			badswiWriter.WriteSwiEntry(0,0,0,0,0,0,0,0,0,0,*swicertPtr1);
+			TestBadConfigFiles(file1,1,aTestCaseType,aTestIndex++);
+			count++;
+			}
+		break;
+		}
+	default:
+		break;
+	}
+}
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-EMPTYFILE_CREATE-0000
+  @SYMTestCaseDesc	Test the tool with empty configuration file as input
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-EMPTYFILE_CREATE-0001
+  @SYMTestCaseDesc	Test the tool with empty configuration file as input
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-EMPTYFILE_CREATE-0002
+  @SYMTestCaseDesc	Test the tool with empty configuration file as input
+*/	
+/**
+Test cases to test the tool with empty configuration files as input for all the stores
+*/
+void TestsWithEmptyConfigFile()
+{
+	stringstream testCaseType("SEC-TOOLS-CERTAPP-EMPTYFILE_CREATE");
+	for(int i = 0 ; i<3 ; i++)
+		{
+		stringstream emptyConfigFileName, configFileName1, configFileName2;
+		emptyConfigFileName<< "SDP-Security_Tools-CertApp-EmptyFile_000"<< i <<".txt";
+		switch(i)
+			{
+			case 0:
+				{
+				configFileName1 << "--hcertclients=" << emptyConfigFileName.str();
+				configFileName2 << "--bcertclients=SDP-Security_Tools-CertApp-EmptyFile_0000"<<".dat";
+				FileCertClientConfigWriter certclient(emptyConfigFileName);
+				}
+			break;
+
+			case 1:
+				{
+				configFileName1 << "--hfilecertstore=" << emptyConfigFileName.str();
+				configFileName2 << "--bfilecertstore=SDP-Security_Tools-CertApp-EmptyFile_0001"<<".dat";
+				FileCertStoreConfigWriter fileWriter(emptyConfigFileName);
+				}
+			break;
+
+			case 2:
+				{
+				configFileName1 << "--hswicertstore=" << emptyConfigFileName.str();
+				configFileName2 << "--bswicertstore=SDP-Security_Tools-CertApp-EmptyFile_0002"<<".dat";
+				SwiCertStoreConfigWriter swiFileWriter(emptyConfigFileName);
+				}
+			break;
+
+			default:
+				break;
+			}
+
+		string argument1, argument2;
+		argument1  = configFileName1.str().c_str();
+		argument2  = configFileName2.str().c_str();
+		const char *argv_certclient[4];
+		argv_certclient[0] = "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
+		argv_certclient[1] = argument1.c_str();  //"--hfilecertstore=t_emptyConfig.txt";
+		argv_certclient[2] = "--out";
+		argv_certclient[3] = argument2.c_str();
+
+		int argcount = 4;
+		char *argument_ptr[4]; 
+		char **argv;
+		for(int n = 0; n<argcount; n++)
+			{
+			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
+			argv = argument_ptr;
+			}
+		for(int z=0; z<argcount; z++)
+			{
+			cout << "Testing with empty configuration file" << argv[z] <<endl;
+			}
+
+		RunCertAppTool(argcount, argv, emptyConfigFileName, testCaseType, i);
+		}
+}
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEFORMATS_CREATE-0000
+  @SYMTestCaseDesc	Test the certapp tool for different file encode formats
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEFORMATS_CREATE-0001
+  @SYMTestCaseDesc	Test the certapp tool for different file encode formats
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEFORMATS_CREATE-0002
+  @SYMTestCaseDesc	Test the certapp tool for different file encode formats
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-FILEFORMATS_CREATE-0003
+  @SYMTestCaseDesc	Test the certapp tool for different file encode formats
+*/	
+/**
+Code to test the certapp tool for different file encode formats
+*/
+void TestsWithEncodedFileFormats()
+{
+	stringstream testCaseType("SEC-TOOLS-CERTAPP-FILEFORMATS_CREATE");
+	bool hasResult;
+
+	//Provide files with different encoded formats
+	for(int i = 0; i<4; i++)
+		{
+		stringstream unicodeName, outputFileName, strArg3;
+		const char *argv_certclient[KIndex];
+		unicodeName<< fileEncodeType[i];
+		outputFileName <<"SDP-Security_Tools-CertApp-FileFormats-000" <<i;
+		strArg3 << "--bfilecertstore="<< "SDP-Security_Tools-CertApp-FileFormats-000" <<i<<".dat";
+		
+		string argument;
+		argument = strArg3.str().c_str();
+		argv_certclient[0] = "--hcertclients=SDP-Security_Tools-CertApp-CCDAT_0000.txt";
+		argv_certclient[1] = fileEncodeType[i];   // manually created unicode content files
+		argv_certclient[2] = "--out";
+		argv_certclient[3] = argument.c_str();
+
+		for(int m=0; m<KIndex; m++)
+			{
+			cout << "Value in argv_certclient " << m << "is " <<argv_certclient[m] <<endl;
+			}
+		 char *argument_ptr[4]; 
+		char **argv;
+		for(int n = 0; n<KIndex; n++)
+			{
+			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
+			argv = argument_ptr;
+			}
+		
+		for(int z=0; z<KIndex; z++)
+			{
+			cout << "Argument array contains : " << argv[z] <<endl;
+			}
+		
+		int ret = RunCertApp(progress, errors, KIndex, argv); 
+		cout << "Return value from RunCertApp tool is "  << ret << endl;
+		
+		hasResult = false;
+		stringstream logging;
+		if(ret!= 0 && ((strcmp(unicodeName.str().c_str(),"--hfilecertstore=ucs2-bigendian.txt")==0) || (strcmp(unicodeName.str().c_str(),"--hfilecertstore=ucs2-littleendian.txt")==0)))
+			{
+			passCount++;
+			logging << "Tool doesnt support for UCS encoded file-"<< outputFileName.str() <<" so the result is " << ret << " Pass";
+			hasResult = true;
+			}
+		else if(ret== 0 && ((strcmp(unicodeName.str().c_str(),"--hfilecertstore=utf8.txt") ==0) || (strcmp(unicodeName.str().c_str(),"--hfilecertstore=utf8_without_bom.txt")==0)))
+			{
+			passCount++;
+			logging << "No Error in creating store for UTF8 encoded file-"<<outputFileName.str()<< " and result is " << ret << " Pass";
+			hasResult = true;
+			}
+		
+		if (hasResult)
+			{
+			writeTMSResult(file, testCaseType, i, true, logging);
+			}
+		} //End of encoded file formats testing
+}
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-AGGRCERTSTORE_CREATE-0000
+  @SYMTestCaseDesc	Test case for REQ-10314 (Reviewing Aggregate Certificate DataBase)
+*/	
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-AGGRCERTSTORE_CREATE-0001
+  @SYMTestCaseDesc	Test case for REQ-10314 (Reviewing Aggregate Certificate DataBase)
+*/	
+/**
+Test case for REQ-10314 (Reviewing Aggregate Certificate DataBase)
+*/
+void TestToReviewingAggregateStore()
+{
+	stringstream testCaseType("SEC-TOOLS-CERTAPP-AGGRCERTSTORE_CREATE");
+
+	for(int index = 0; index<2; index++)
+		{
+		stringstream file1, file2;
+		const char *argv_certclient[4];
+		argv_certclient[2] = "--out";
+		switch(index)
+			{
+			case 0: // different certificate labels in two stores
+				{
+				argv_certclient[0] = "--bfilecertstore=teststore1.dat";   // these are 2 binary stores saved in perforce
+				argv_certclient[1] = "--bfilecertstore=teststore3.dat"; 
+				argv_certclient[3] = "--hfilecertstore=SDP-Security_Tools-CertApp-AggrCertStore-0000.txt";
+				file1 <<"SDP-Security_Tools-CertApp-AggrCertStore-0000.txt";
+				file2 <<"aggregatestorecontents1_3.txt";
+				}
+				break;
+
+			case 1: //duplicate certificate labels in two stores
+				{
+				argv_certclient[0] = "--bfilecertstore=teststore2.dat";   // these are 2 binary stores saved in perforce
+				argv_certclient[1] = "--bfilecertstore=teststore3.dat"; 
+				argv_certclient[3] = "--hfilecertstore=SDP-Security_Tools-CertApp-AggrCertStore-0001.txt";
+				file1 <<"SDP-Security_Tools-CertApp-AggrCertStore-0001.txt";
+				file2 <<"aggregatestorecontents2_3.txt";
+				}
+				break;
+
+			default:
+				break;
+			}
+
+		for(int m=0; m<KIndex; m++)
+			{
+			cout << "Value in argv_certclient " << m << "is " <<argv_certclient[m] <<endl;
+			}
+		char *argument_ptr[KIndex]; 
+		char **argv;
+		for(int n = 0; n<KIndex; n++)
+			{
+			argument_ptr[n] = const_cast<char*>(argv_certclient[n]);
+			argv = argument_ptr;
+			}
+		
+		int ret = RunCertApp(progress, errors, KIndex, argv); 
+		stringstream logging;
+		if(!ret)
+			{
+			passCount++;
+			int compareValue  = CompareFiles(file1,file2); // compare with the reference files in perforce
+			if (compareValue)
+				{
+				logging << "Failed to successfully create Aggregate Database for " << file1.str() << " is Fail";
+				
+				}
+			else
+				{
+				logging << "Successfully created Aggregate Database(text form) for " <<file1.str() << " result is Pass";
+				}
+			}
+		else
+			{
+			failCount++;
+			logging << "Failed to dump the stores to single text format for " <<file1.str();
+			}
+		
+		writeTMSResult(file, testCaseType, index, !ret, logging);		
+		}
+}
+
+
+/**
+  @SYMTestCaseID	SEC-TOOLS-CERTAPP-DECODEENCODE_COMPARE-0000
+  @SYMTestCaseDesc	Encode-decode test for certclient store
+*/	
+/**
+TestCase to test the req of 10313- decode/encode certstore
+Encode-decode test for certclient store
+*/
+void TestToDecodeAndEncodeStore()
+{
+	stringstream testCaseType("SEC-TOOLS-CERTAPP-DECODEENCODE_COMPARE");
+
+	stringstream outputFileName, strArg1, strArg2;
+	outputFileName <<"SDP-Security_Tools-CertApp-DecodeEncode-0000";
+	strArg1 << "decodeoutput1.txt";
+	strArg2 << "decodeoutput2.txt";
+	
+	const char *argv_certclient[3]; //dump store to text
+	argv_certclient[0] = "--bcertclients=certclients_0.dat";
+	argv_certclient[1] = "--out";
+	argv_certclient[2] = "--hcertclients=decodeoutput1.txt";   
+	decodeEncodeCertAppCall(argv_certclient);
+
+	//create store with the decoded text as input
+	argv_certclient[0] = "--hcertclients=decodeoutput1.txt";
+	argv_certclient[2] = "--bcertclients=decodeoutput.dat";   
+	decodeEncodeCertAppCall(argv_certclient);
+
+	//take the encoded store and dump it back to text form
+	argv_certclient[0] = "--bcertclients=decodeoutput.dat";
+	argv_certclient[2] = "--hcertclients=decodeoutput2.txt"; 
+	decodeEncodeCertAppCall(argv_certclient);
+
+	int compVal = CompareFiles(strArg1, strArg2);
+	stringstream logging;
+	cout << "Return value of comparision is " << compVal <<endl;
+	if (compVal)
+		{
+		failCount++;
+		logging << "Encode-Decode fail for " <<outputFileName.str() << " result is Fail";
+		}
+	else
+		{
+		passCount++;
+		logging << "Encode-Decode Pass for " <<outputFileName.str() << " result is Pass";
+		}
+	
+	writeTMSResult(file, testCaseType, 0, compVal==0, logging);			
+}
+
+void decodeEncodeCertAppCall(const char *aArray[])
+{
+	char *argument_ptr[3]; 
+	char **argv;
+	for(int m=0; m<3; m++)
+		{
+		cout << "Value in argv_certclient " << m << "is " <<aArray[m] <<endl;
+		}
+	for(int n = 0; n<3; n++)
+		{
+		argument_ptr[n] = const_cast<char*>(aArray[n]);
+		argv = argument_ptr;
+		}
+	RunCertApp(progress, errors ,3, argv);
+}
+
+
+int CompareFiles(stringstream &aFile1, stringstream &aFile2)
+{
+	ifstream inFile1, inFile2;
+	string name1 = aFile1.str();
+	string name2 = aFile2.str();
+	inFile1.open(name1.c_str(),  ifstream::in);
+	if (inFile1.fail())
+		{
+		cout << "Failed to open the file! May be not existing" << endl;
+		return -1;
+		}
+	inFile2.open(name1.c_str(),  ifstream::in);
+	if (inFile2.fail()) 
+		{
+	    cout << "Failed to open the file! May be not existing" << endl;
+	    return -1;
+		}
+	return Compare(inFile1, inFile2);
+}
+
+
+int Compare(istream &aIstream1, istream &aIstream2)
+{
+  char ch1, ch2;
+  while (aIstream1.get(ch1)) 
+  {
+    if (!aIstream2.get(ch2) || (ch1 != ch2))
+	{
+      cout << "files are not equal";
+	  return -1;
+    }
+  }
+  if (!aIstream2.get(ch2))  // no more chars to read fom file
+	{
+	  cout << "files are equal\n";
+	  return 0;
+	}
+  else 
+	{
+	  cout << "files are not equal";
+	  return -1;
+	}
+}
+
+
+/**
+Generate script files for the filecertstore emulator tests
+*/
+void GenerateGoodCertClientTestScripts(const stringstream &aFilename, const stringstream &aTestCaseType, int &aTestIndex)
+{
+	CertClientsStoreScriptGeneration cert_clients(aFilename);
+
+	cert_clients.WriteInitialiseCertClient(aTestCaseType, aTestIndex);
+	cert_clients.WriteGetCount(KAppUidIndex, aTestCaseType, aTestIndex);
+	cert_clients.WriteGetApplicationsList(aTestCaseType, aTestIndex);
+	
+	for(int i = 0; i<KAppUidIndex;i++)
+		{
+		const char *goodlabel = goodcertclient_array[i]; 
+		const char *uid = gooddecimalUid_array[i];
+		cert_clients.WriteGetAppWithUid(goodlabel, uid, aTestCaseType, aTestIndex);
+		}
+	cert_clients.WriteDestroyManager(aTestCaseType, aTestIndex);
+}
+
+/**
+Generates config files for cacerts
+*/
+void GenerateGoodCaCertsTestScripts(const stringstream &aFilename, const stringstream &aTestCaseType, int &aTestIndex)
+{
+	FileStoreScriptGeneration fileStore(aFilename);
+
+	const char *mode = "write"; 
+	const char *ownertype = goodOwnerType[0]; //CA ownerType
+
+	fileStore.WriteInitialiseCert(mode, aTestCaseType, aTestIndex);
+	fileStore.WriteListcert(ownertype, aTestCaseType, aTestIndex);
+	
+	for(int i = 0; i<6;i++)
+		{
+		const char *trust = goodTrust[0]; // true
+		const char *goodlabel = goodEmuCert_array[i]; // list of label - root5ca , symbiandtestcsa, symbiantestrcsa
+
+		fileStore.WriteGetCertificateDetails(goodlabel, aTestCaseType, aTestIndex);
+		fileStore.WriteGetTrust(goodlabel, trust, aTestCaseType, aTestIndex);
+		fileStore.WriteGetApplications(goodlabel, aTestCaseType, aTestIndex);
+		fileStore.WriteRetrieveCerts(goodlabel, aTestCaseType, aTestIndex);
+		}
+}
+
+/**
+Generate script files for the swicertstore emulator tests
+*/
+void GenerateGoodSwiCertTestScripts(const stringstream &aFilename, const stringstream &aTestCaseType, int &aTestIndex)
+{
+	SWIStoreScriptGeneration swiStore(aFilename);
+	
+	const char *ownertype = goodOwnerType[0]; //CA ownerType
+	
+	//initilaise the store and get list all the certificate ones
+	swiStore.WriteInitialiseCert(aTestCaseType, aTestIndex);
+	swiStore.WriteListcert(ownertype, aTestCaseType, aTestIndex);
+
+	for(int i = 0; i<6;i++)
+		{
+		const char *trust = goodTrust[0]; // true
+		const char *goodlabel = goodSwiCert_array[i]; // list of label - root5ca , symbiandtestcsa, symbiantestrcsa
+		const char *mandatoryVal = mandatory[0];
+		const char *systemupgrade = systemUpgrade[0];
+
+		swiStore.WriteGetSystemUpgrade(goodlabel, systemupgrade, aTestCaseType, aTestIndex);
+		swiStore.WriteRetrieveCerts(goodlabel, aTestCaseType, aTestIndex);
+		swiStore.WriteGetApplications(goodlabel, aTestCaseType, aTestIndex);
+		swiStore.WriteGetTrust(goodlabel, trust, aTestCaseType, aTestIndex);
+		swiStore.WriteGetCapabilities(goodlabel, aTestCaseType, aTestIndex);
+		swiStore.WriteGetMandatoryFlag(goodlabel, mandatoryVal, aTestCaseType, aTestIndex);
+		}
+}
+
+//End of file
+
+