cryptoservices/certificateandkeymgmt/tpkixcert_tef/src/pkixcertstepbase.cpp
changeset 8 35751d3474b7
parent 0 2c201484c85f
--- a/cryptoservices/certificateandkeymgmt/tpkixcert_tef/src/pkixcertstepbase.cpp	Tue Jul 21 01:04:32 2009 +0100
+++ b/cryptoservices/certificateandkeymgmt/tpkixcert_tef/src/pkixcertstepbase.cpp	Thu Sep 10 14:01:51 2009 +0300
@@ -1,257 +1,257 @@
-/*
-* 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 "pkixcertstepbase.h"
-#include "cleanuputils.h"
-#include <s32file.h>
-
-CPkixCertStepBase::~CPkixCertStepBase()
-	{
-	delete iConcatenatedChain;	
-	iConcatenatedChain = NULL;
-	iFileServer.Close();
-	iProcessedOids.Reset();
-	iOids.Reset();
-	iRootCerts.ResetAndDestroy();
-	CActiveScheduler::Install(NULL);
-	delete iScheduler;
-	}
-
-TVerdict CPkixCertStepBase::doTestStepPreambleL()
-	{
-	//read in stuff from config
-	
-	GetBoolFromConfig(ConfigSection(), KPerformOom, iPerformOom);
-
-	iFileServer.Connect();	
-	TPtrC configString;
-
-	//temporary storage of the DER encoded certs so we can calculate the combined size for iConcatenatedChain
-	RPointerArray<HBufC8> rawCerts;
-	CleanupResetAndDestroy<RPointerArray<HBufC8> >::PushL(rawCerts);
-	TInt chainSize = 0;
-
-	GetStringFromConfig(ConfigSection(), KEndEntity, configString);
-	HBufC8* certBuf = ReadFileLC(configString);
-	rawCerts.AppendL(certBuf);
-	CleanupStack::Pop(certBuf);
-	chainSize += certBuf->Size();
-	
-
-	RArray<TPtrC> certFileNames;
-	CleanupClosePushL(certFileNames);
-	
-	GetStringArrayFromConfigL(ConfigSection(), KIntermediateCert, certFileNames);
-
-	TInt i;
-	for (i = 0; i < certFileNames.Count(); ++i)
-		{
-		certBuf = ReadFileLC(certFileNames[i]);
-		rawCerts.AppendL(certBuf);
-		CleanupStack::Pop(certBuf);
-		chainSize += certBuf->Size();
-		}
-	
-	CleanupStack::PopAndDestroy(&certFileNames);	
-		
-	iConcatenatedChain = HBufC8::NewL(chainSize);
-	TPtr8 modPtr = iConcatenatedChain->Des();
-	for (i = 0; i < rawCerts.Count(); i++)
-		{
-		modPtr.Append(*rawCerts[i]);
-		}	
-	
-	CleanupStack::PopAndDestroy(&rawCerts);
-	
-	///////////
-	
-	//read in oid values.  the usage of these is dependant on the test step
-	GetStringArrayFromConfigL(ConfigSection(), KOid, iOids);
-	//convert into argument format used by APIs
-	for (i=0; i < iOids.Count(); ++i)
-		{
-		iProcessedOids.AppendL(&(iOids[i]));
-		}
-		
-		
-	RArray<TPtrC> certFileNames2;
-	CleanupClosePushL(certFileNames2);
-	
-	GetStringArrayFromConfigL(ConfigSection(), KRootCert, certFileNames2);
-	CX509Certificate* cert;
-	for (i = 0; i < certFileNames2.Count(); ++i)
-		{
-		certBuf = ReadFileLC(certFileNames2[i]);
-		cert = CX509Certificate::NewLC(*certBuf);
-		iRootCerts.AppendL(cert);
-		CleanupStack::Pop(cert);
-		CleanupStack::PopAndDestroy(certBuf);
-		}
-	CleanupStack::PopAndDestroy(&certFileNames2);	
-	
-	TInt uid;
-	iUseUidOverload = GetIntFromConfig(ConfigSection(), KUid, uid);
-	iUid.iUid = uid;
-	
-    iScheduler=new(ELeave) CActiveScheduler(); 
-	CActiveScheduler::Install(iScheduler);
-	
-	return EPass;	
-	}
-
-
-//N.B. iCertChain must be popped and destroyed at the end of any deriving class's PerformTestL() method
-void CPkixCertStepBase::PerformTestL()
-	{
-	iPtr.Set(*iConcatenatedChain);
-	
-	//split on which of the NewLs to use
-	if (iUseUidOverload)
-		{
-		iCertChain = CPKIXCertChain::NewLC(iFileServer, iPtr, iUid);
-		}
-	else
-		{		
-		iCertChain = CPKIXCertChain::NewLC(iFileServer, iPtr, iRootCerts);			
-		}
-	}
-	
-	
-HBufC8* CPkixCertStepBase::ReadFileLC(const TDesC& aFileName)
-	{
-	RFile file;
-	User::LeaveIfError(file.Open(iFileServer, aFileName, EFileRead));
-	CleanupClosePushL(file);
-    TInt size;
-    file.Size(size);
-    CleanupStack::PopAndDestroy();//fileClose
-
-    HBufC8* result = HBufC8::NewLC(size);
-    TPtr8 ptr(result->Des());
-    ptr.SetLength(size);
-
-    RFileReadStream stream;
-    User::LeaveIfError(stream.Open(iFileServer, aFileName, EFileStream));
-    CleanupClosePushL(stream);
-    stream.ReadL(ptr, size);
-    CleanupStack::PopAndDestroy();//streamClose
-    return result;	
-	}
-
-
-void CPkixCertStepBase::GetStringArrayFromConfigL(const TDesC& aSectName, const TDesC& aKeyName, RArray<TPtrC>& aArray)
-	{
-    HBufC* buf = HBufC::NewLC(aKeyName.Length() + KKeyFormat().Length());
-    TPtr ptr(buf->Des());
-    INFO_PRINTF2(_L("Parsing attribute: %S"), &aKeyName);
-
-    TInt i = 0;
-    TBool cont = ETrue;
-    do
-        {
-        ++i;
-        ptr = aKeyName;
-        ptr.AppendFormat(KKeyFormat(), i);
-        TPtrC val;
-
-        cont = GetStringFromConfig(aSectName, ptr, val);
-        if (cont)
-            {
-            User::LeaveIfError(aArray.Append(val));
-            }
-        } while (cont);
-
-    INFO_PRINTF2(_L("Element count: %d"), i-1);
-    CleanupStack::PopAndDestroy(buf);
-	}
-	
-	
-void CPkixCertStepBase::GetIntArrayFromConfigL(const TDesC& aSectName, const TDesC& aKeyName, RArray<TInt>& aArray)
-	{
-	HBufC* buf = HBufC::NewLC(aKeyName.Length() + KKeyFormat().Length());
-    TPtr ptr(buf->Des());
-    INFO_PRINTF2(_L("Parsing attribute: %S"), &aKeyName);
-
-    TInt i = 0;
-    TBool cont = ETrue;
-    do
-        {
-        ++i;
-        ptr = aKeyName;
-        ptr.AppendFormat(KKeyFormat(), i);
-        TInt val;
-
-        cont = GetIntFromConfig(aSectName, ptr, val);
-        if (cont)
-            {
-            User::LeaveIfError(aArray.Append(val));
-            }
-        } while (cont);
-
-    INFO_PRINTF2(_L("Element count: %d"), i-1);
-    CleanupStack::PopAndDestroy(buf);
-	}
-
-TVerdict CPkixCertStepBase::doTestStepL()
-	{
-	if (!iPerformOom)	
-		{
-		TRAPD(err, PerformTestL());
-		if (err == KErrNone)
-			{
-			SetTestStepResult(EPass);
-			}
-		else{
-			SetTestStepResult(EFail);
-			}
-		}
-	else
-		{
- 		PerformOomTestL();
-	    }	
-
-   	return TestStepResult();	
-	}
-	
-		
-
-void CPkixCertStepBase::PerformOomTestL()
-	{
- 	for (TInt oomCount = 0; ; oomCount++)
- 		{
- 		__UHEAP_RESET;
- 		__UHEAP_SETFAIL(RHeap::EDeterministic, oomCount);
- 		TInt countBefore = User::CountAllocCells();
- 		TRAPD(error, PerformTestL());// ----> This is the actual test that runs under OOM conditions.
- 		TInt countAfter = User::CountAllocCells();
- 		
- 		if (countBefore != countAfter)
- 			{
- 			INFO_PRINTF2(_L("OOM Failed at %d"), oomCount);
- 			SetTestStepResult(EFail);  
- 			break;
- 			}
- 		INFO_PRINTF2(_L("Result: %d"), error); 			
- 		if (error == KErrNone)
- 			{
-			INFO_PRINTF1(_L("Test outcome : Passed"));
-			SetTestStepResult(EPass); 
- 			break;
- 			}
-		}	 	
-	}
+/*
+* 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 "pkixcertstepbase.h"
+#include "cleanuputils.h"
+#include <s32file.h>
+
+CPkixCertStepBase::~CPkixCertStepBase()
+	{
+	delete iConcatenatedChain;	
+	iConcatenatedChain = NULL;
+	iFileServer.Close();
+	iProcessedOids.Reset();
+	iOids.Reset();
+	iRootCerts.ResetAndDestroy();
+	CActiveScheduler::Install(NULL);
+	delete iScheduler;
+	}
+
+TVerdict CPkixCertStepBase::doTestStepPreambleL()
+	{
+	//read in stuff from config
+	
+	GetBoolFromConfig(ConfigSection(), KPerformOom, iPerformOom);
+
+	iFileServer.Connect();	
+	TPtrC configString;
+
+	//temporary storage of the DER encoded certs so we can calculate the combined size for iConcatenatedChain
+	RPointerArray<HBufC8> rawCerts;
+	CleanupResetAndDestroy<RPointerArray<HBufC8> >::PushL(rawCerts);
+	TInt chainSize = 0;
+
+	GetStringFromConfig(ConfigSection(), KEndEntity, configString);
+	HBufC8* certBuf = ReadFileLC(configString);
+	rawCerts.AppendL(certBuf);
+	CleanupStack::Pop(certBuf);
+	chainSize += certBuf->Size();
+	
+
+	RArray<TPtrC> certFileNames;
+	CleanupClosePushL(certFileNames);
+	
+	GetStringArrayFromConfigL(ConfigSection(), KIntermediateCert, certFileNames);
+
+	TInt i;
+	for (i = 0; i < certFileNames.Count(); ++i)
+		{
+		certBuf = ReadFileLC(certFileNames[i]);
+		rawCerts.AppendL(certBuf);
+		CleanupStack::Pop(certBuf);
+		chainSize += certBuf->Size();
+		}
+	
+	CleanupStack::PopAndDestroy(&certFileNames);	
+		
+	iConcatenatedChain = HBufC8::NewL(chainSize);
+	TPtr8 modPtr = iConcatenatedChain->Des();
+	for (i = 0; i < rawCerts.Count(); i++)
+		{
+		modPtr.Append(*rawCerts[i]);
+		}	
+	
+	CleanupStack::PopAndDestroy(&rawCerts);
+	
+	///////////
+	
+	//read in oid values.  the usage of these is dependant on the test step
+	GetStringArrayFromConfigL(ConfigSection(), KOid, iOids);
+	//convert into argument format used by APIs
+	for (i=0; i < iOids.Count(); ++i)
+		{
+		iProcessedOids.AppendL(&(iOids[i]));
+		}
+		
+		
+	RArray<TPtrC> certFileNames2;
+	CleanupClosePushL(certFileNames2);
+	
+	GetStringArrayFromConfigL(ConfigSection(), KRootCert, certFileNames2);
+	CX509Certificate* cert;
+	for (i = 0; i < certFileNames2.Count(); ++i)
+		{
+		certBuf = ReadFileLC(certFileNames2[i]);
+		cert = CX509Certificate::NewLC(*certBuf);
+		iRootCerts.AppendL(cert);
+		CleanupStack::Pop(cert);
+		CleanupStack::PopAndDestroy(certBuf);
+		}
+	CleanupStack::PopAndDestroy(&certFileNames2);	
+	
+	TInt uid;
+	iUseUidOverload = GetIntFromConfig(ConfigSection(), KUid, uid);
+	iUid.iUid = uid;
+	
+    iScheduler=new(ELeave) CActiveScheduler(); 
+	CActiveScheduler::Install(iScheduler);
+	
+	return EPass;	
+	}
+
+
+//N.B. iCertChain must be popped and destroyed at the end of any deriving class's PerformTestL() method
+void CPkixCertStepBase::PerformTestL()
+	{
+	iPtr.Set(*iConcatenatedChain);
+	
+	//split on which of the NewLs to use
+	if (iUseUidOverload)
+		{
+		iCertChain = CPKIXCertChain::NewLC(iFileServer, iPtr, iUid);
+		}
+	else
+		{		
+		iCertChain = CPKIXCertChain::NewLC(iFileServer, iPtr, iRootCerts);			
+		}
+	}
+	
+	
+HBufC8* CPkixCertStepBase::ReadFileLC(const TDesC& aFileName)
+	{
+	RFile file;
+	User::LeaveIfError(file.Open(iFileServer, aFileName, EFileRead));
+	CleanupClosePushL(file);
+    TInt size;
+    file.Size(size);
+    CleanupStack::PopAndDestroy();//fileClose
+
+    HBufC8* result = HBufC8::NewLC(size);
+    TPtr8 ptr(result->Des());
+    ptr.SetLength(size);
+
+    RFileReadStream stream;
+    User::LeaveIfError(stream.Open(iFileServer, aFileName, EFileStream));
+    CleanupClosePushL(stream);
+    stream.ReadL(ptr, size);
+    CleanupStack::PopAndDestroy();//streamClose
+    return result;	
+	}
+
+
+void CPkixCertStepBase::GetStringArrayFromConfigL(const TDesC& aSectName, const TDesC& aKeyName, RArray<TPtrC>& aArray)
+	{
+    HBufC* buf = HBufC::NewLC(aKeyName.Length() + KKeyFormat().Length());
+    TPtr ptr(buf->Des());
+    INFO_PRINTF2(_L("Parsing attribute: %S"), &aKeyName);
+
+    TInt i = 0;
+    TBool cont = ETrue;
+    do
+        {
+        ++i;
+        ptr = aKeyName;
+        ptr.AppendFormat(KKeyFormat(), i);
+        TPtrC val;
+
+        cont = GetStringFromConfig(aSectName, ptr, val);
+        if (cont)
+            {
+            User::LeaveIfError(aArray.Append(val));
+            }
+        } while (cont);
+
+    INFO_PRINTF2(_L("Element count: %d"), i-1);
+    CleanupStack::PopAndDestroy(buf);
+	}
+	
+	
+void CPkixCertStepBase::GetIntArrayFromConfigL(const TDesC& aSectName, const TDesC& aKeyName, RArray<TInt>& aArray)
+	{
+	HBufC* buf = HBufC::NewLC(aKeyName.Length() + KKeyFormat().Length());
+    TPtr ptr(buf->Des());
+    INFO_PRINTF2(_L("Parsing attribute: %S"), &aKeyName);
+
+    TInt i = 0;
+    TBool cont = ETrue;
+    do
+        {
+        ++i;
+        ptr = aKeyName;
+        ptr.AppendFormat(KKeyFormat(), i);
+        TInt val;
+
+        cont = GetIntFromConfig(aSectName, ptr, val);
+        if (cont)
+            {
+            User::LeaveIfError(aArray.Append(val));
+            }
+        } while (cont);
+
+    INFO_PRINTF2(_L("Element count: %d"), i-1);
+    CleanupStack::PopAndDestroy(buf);
+	}
+
+TVerdict CPkixCertStepBase::doTestStepL()
+	{
+	if (!iPerformOom)	
+		{
+		TRAPD(err, PerformTestL());
+		if (err == KErrNone)
+			{
+			SetTestStepResult(EPass);
+			}
+		else{
+			SetTestStepResult(EFail);
+			}
+		}
+	else
+		{
+ 		PerformOomTestL();
+	    }	
+
+   	return TestStepResult();	
+	}
+	
+		
+
+void CPkixCertStepBase::PerformOomTestL()
+	{
+ 	for (TInt oomCount = 0; ; oomCount++)
+ 		{
+ 		__UHEAP_RESET;
+ 		__UHEAP_SETFAIL(RHeap::EDeterministic, oomCount);
+ 		TInt countBefore = User::CountAllocCells();
+ 		TRAPD(error, PerformTestL());// ----> This is the actual test that runs under OOM conditions.
+ 		TInt countAfter = User::CountAllocCells();
+ 		
+ 		if (countBefore != countAfter)
+ 			{
+ 			INFO_PRINTF2(_L("OOM Failed at %d"), oomCount);
+ 			SetTestStepResult(EFail);  
+ 			break;
+ 			}
+ 		INFO_PRINTF2(_L("Result: %d"), error); 			
+ 		if (error == KErrNone)
+ 			{
+			INFO_PRINTF1(_L("Test outcome : Passed"));
+			SetTestStepResult(EPass); 
+ 			break;
+ 			}
+		}	 	
+	}