cryptoservices/certificateandkeymgmt/twtlscert/TestChain.cpp
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/certificateandkeymgmt/twtlscert/TestChain.cpp	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,202 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+
+/**
+ @file
+*/
+
+
+#include "TestChain.h"
+#include "t_input.h"
+
+_LIT(KServerStart, "<server>");
+_LIT(KRootStart, "<root>");
+_LIT(KValueStart, "<value>");
+
+_LIT(KCertificateStart, "<certificate>");
+_LIT(KLabelStart, "<label>");
+_LIT(KResultStart, "<oresult>");
+
+//test chain superclass
+CTestChain::CTestChain()
+	{
+	}
+
+CTestChain::~CTestChain()
+	{
+	delete iServerCerts;
+	delete iServerLabels;
+	delete iRootCerts;
+	delete iRootLabels;
+	delete iExtraCerts;
+	delete iExtraLabels;
+	}
+
+void CTestChain::ConstructL()
+	{
+	iServerCerts = new(ELeave) CDesCArrayFlat (1);
+	iServerLabels = new(ELeave) CDesCArrayFlat (1);
+	iRootCerts = new(ELeave) CDesCArrayFlat (1);
+	iRootLabels = new(ELeave) CDesCArrayFlat (1);
+	iExtraCerts = new(ELeave) CDesCArrayFlat (1);
+	iExtraLabels = new(ELeave) CDesCArrayFlat (1);
+	}
+
+//test build class		
+CTestChainBuild* CTestChainBuild::NewL()
+	{
+	CTestChainBuild* self = CTestChainBuild::NewLC();
+	CleanupStack::Pop();
+	return self;
+	}
+
+CTestChainBuild* CTestChainBuild::NewLC()
+	{
+	CTestChainBuild* self = new(ELeave) CTestChainBuild;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestChainBuild::~CTestChainBuild()
+	{
+	delete iCorrectChain;
+	}
+
+//test chain validate class
+CTestChainValidate* CTestChainValidate::NewL(void)
+	{
+	CTestChainValidate* self = CTestChainValidate::NewLC();
+	CleanupStack::Pop();
+	return self;
+	}
+
+CTestChainValidate* CTestChainValidate::NewLC(void)
+	{
+	CTestChainValidate* self = new(ELeave) CTestChainValidate;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+void CTestChainValidate::ConstructL(void)
+	{
+	CTestChain::ConstructL();
+	iWarnings = new(ELeave)CArrayFixFlat<TWTLSValidationStatus> (1);
+	iDateIssued = 0;
+	}
+
+void CTestChainValidate::AddChainL(const TDesC& aValues)
+	{
+	AddServerL(aValues);
+	AddRootL(aValues);
+	}
+
+void CTestChainValidate::AddDateIssued(const TDesC& aValues)
+	{
+	TPtrC iResultBuf = Input::ParseElement(aValues, KValueStart);
+	if((iResultBuf == _L("true")) || (iResultBuf == _L("1")))
+		iDateIssued = ETrue;
+	}
+void CTestChainValidate::AddIOL(const TDesC& aValues)
+	{
+	TPtrC iResultBuf = Input::ParseElement(aValues, KResultStart);
+	if (iResultBuf != KNullDesC)
+		{
+		TValidationError expectedError;
+
+		if(iResultBuf == _L("ValidatedOK"))
+			expectedError = EValidatedOK;
+		else if(iResultBuf == _L("SignatureInvalid"))
+			expectedError = ESignatureInvalid;
+		else if(iResultBuf == _L("ChainHasNoRoot"))
+			expectedError = EChainHasNoRoot;
+		else if(iResultBuf == _L("NamesDontChain"))
+			expectedError = ENamesDontChain;
+		else if(iResultBuf == _L("NotCACert"))
+			expectedError = ENotCACert;
+		else 
+			return;
+
+		iError = new(ELeave) TWTLSValidationStatus(expectedError, 0);
+		}
+	}
+
+CTestChainValidate::~CTestChainValidate()
+	{
+	delete iError;
+	delete iWarnings;
+	};
+
+TBool CTestChainValidate::AddServerL(const TDesC& aBuf)
+	{
+	TInt nPos, n;
+	TPtrC ioSection(aBuf);
+	TPtrC ioBuf;
+	if (ioSection != KNullDesC)
+		{
+		do
+			{
+			nPos = 0;
+			ioBuf.Set(Input::ParseElement(ioSection, KServerStart, nPos));
+			if(nPos > 0)
+				{
+				ioSection.Set(ioSection.Mid(nPos));
+				n=0;
+				TPtrC iCertBuf = Input::ParseElement(ioBuf, KCertificateStart, n);
+				iServerCerts->AppendL(iCertBuf);
+				TPtrC iLabelBuf = Input::ParseElement(ioBuf, KLabelStart, n);
+				iServerLabels->AppendL(iLabelBuf);
+				};
+			
+			}
+		while(nPos > 0);
+		return ETrue;
+		}
+	return EFalse;
+	}
+
+TBool CTestChainValidate::AddRootL(const TDesC& aBuf)
+	{
+	TInt nPos, n;
+	TPtrC ioSection(aBuf);
+	TPtrC ioBuf;
+	if (ioSection != KNullDesC)
+		{
+		do
+			{
+			nPos = 0;
+			ioBuf.Set(Input::ParseElement(ioSection, KRootStart, nPos));
+			if(nPos > 0)
+				{
+				ioSection.Set(ioSection.Mid(nPos));
+				n=0;
+				TPtrC iCertBuf = Input::ParseElement(ioBuf, KCertificateStart, n);
+				iRootCerts->AppendL(iCertBuf);
+				TPtrC iLabelBuf = Input::ParseElement(ioBuf, KLabelStart, n);
+				iRootLabels->AppendL(iLabelBuf);
+				};
+			
+			}
+		while(nPos > 0);
+		return ETrue;
+		}
+	return EFalse;
+	}