os/security/cryptoservices/certificateandkeymgmt/twtlscert/TestChain.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of the License "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description: 
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
sl@0
    19
/**
sl@0
    20
 @file
sl@0
    21
*/
sl@0
    22
sl@0
    23
sl@0
    24
#include "TestChain.h"
sl@0
    25
#include "t_input.h"
sl@0
    26
sl@0
    27
_LIT(KServerStart, "<server>");
sl@0
    28
_LIT(KRootStart, "<root>");
sl@0
    29
_LIT(KValueStart, "<value>");
sl@0
    30
sl@0
    31
_LIT(KCertificateStart, "<certificate>");
sl@0
    32
_LIT(KLabelStart, "<label>");
sl@0
    33
_LIT(KResultStart, "<oresult>");
sl@0
    34
sl@0
    35
//test chain superclass
sl@0
    36
CTestChain::CTestChain()
sl@0
    37
	{
sl@0
    38
	}
sl@0
    39
sl@0
    40
CTestChain::~CTestChain()
sl@0
    41
	{
sl@0
    42
	delete iServerCerts;
sl@0
    43
	delete iServerLabels;
sl@0
    44
	delete iRootCerts;
sl@0
    45
	delete iRootLabels;
sl@0
    46
	delete iExtraCerts;
sl@0
    47
	delete iExtraLabels;
sl@0
    48
	}
sl@0
    49
sl@0
    50
void CTestChain::ConstructL()
sl@0
    51
	{
sl@0
    52
	iServerCerts = new(ELeave) CDesCArrayFlat (1);
sl@0
    53
	iServerLabels = new(ELeave) CDesCArrayFlat (1);
sl@0
    54
	iRootCerts = new(ELeave) CDesCArrayFlat (1);
sl@0
    55
	iRootLabels = new(ELeave) CDesCArrayFlat (1);
sl@0
    56
	iExtraCerts = new(ELeave) CDesCArrayFlat (1);
sl@0
    57
	iExtraLabels = new(ELeave) CDesCArrayFlat (1);
sl@0
    58
	}
sl@0
    59
sl@0
    60
//test build class		
sl@0
    61
CTestChainBuild* CTestChainBuild::NewL()
sl@0
    62
	{
sl@0
    63
	CTestChainBuild* self = CTestChainBuild::NewLC();
sl@0
    64
	CleanupStack::Pop();
sl@0
    65
	return self;
sl@0
    66
	}
sl@0
    67
sl@0
    68
CTestChainBuild* CTestChainBuild::NewLC()
sl@0
    69
	{
sl@0
    70
	CTestChainBuild* self = new(ELeave) CTestChainBuild;
sl@0
    71
	CleanupStack::PushL(self);
sl@0
    72
	self->ConstructL();
sl@0
    73
	return self;
sl@0
    74
	}
sl@0
    75
sl@0
    76
CTestChainBuild::~CTestChainBuild()
sl@0
    77
	{
sl@0
    78
	delete iCorrectChain;
sl@0
    79
	}
sl@0
    80
sl@0
    81
//test chain validate class
sl@0
    82
CTestChainValidate* CTestChainValidate::NewL(void)
sl@0
    83
	{
sl@0
    84
	CTestChainValidate* self = CTestChainValidate::NewLC();
sl@0
    85
	CleanupStack::Pop();
sl@0
    86
	return self;
sl@0
    87
	}
sl@0
    88
sl@0
    89
CTestChainValidate* CTestChainValidate::NewLC(void)
sl@0
    90
	{
sl@0
    91
	CTestChainValidate* self = new(ELeave) CTestChainValidate;
sl@0
    92
	CleanupStack::PushL(self);
sl@0
    93
	self->ConstructL();
sl@0
    94
	return self;
sl@0
    95
	}
sl@0
    96
sl@0
    97
void CTestChainValidate::ConstructL(void)
sl@0
    98
	{
sl@0
    99
	CTestChain::ConstructL();
sl@0
   100
	iWarnings = new(ELeave)CArrayFixFlat<TWTLSValidationStatus> (1);
sl@0
   101
	iDateIssued = 0;
sl@0
   102
	}
sl@0
   103
sl@0
   104
void CTestChainValidate::AddChainL(const TDesC& aValues)
sl@0
   105
	{
sl@0
   106
	AddServerL(aValues);
sl@0
   107
	AddRootL(aValues);
sl@0
   108
	}
sl@0
   109
sl@0
   110
void CTestChainValidate::AddDateIssued(const TDesC& aValues)
sl@0
   111
	{
sl@0
   112
	TPtrC iResultBuf = Input::ParseElement(aValues, KValueStart);
sl@0
   113
	if((iResultBuf == _L("true")) || (iResultBuf == _L("1")))
sl@0
   114
		iDateIssued = ETrue;
sl@0
   115
	}
sl@0
   116
void CTestChainValidate::AddIOL(const TDesC& aValues)
sl@0
   117
	{
sl@0
   118
	TPtrC iResultBuf = Input::ParseElement(aValues, KResultStart);
sl@0
   119
	if (iResultBuf != KNullDesC)
sl@0
   120
		{
sl@0
   121
		TValidationError expectedError;
sl@0
   122
sl@0
   123
		if(iResultBuf == _L("ValidatedOK"))
sl@0
   124
			expectedError = EValidatedOK;
sl@0
   125
		else if(iResultBuf == _L("SignatureInvalid"))
sl@0
   126
			expectedError = ESignatureInvalid;
sl@0
   127
		else if(iResultBuf == _L("ChainHasNoRoot"))
sl@0
   128
			expectedError = EChainHasNoRoot;
sl@0
   129
		else if(iResultBuf == _L("NamesDontChain"))
sl@0
   130
			expectedError = ENamesDontChain;
sl@0
   131
		else if(iResultBuf == _L("NotCACert"))
sl@0
   132
			expectedError = ENotCACert;
sl@0
   133
		else 
sl@0
   134
			return;
sl@0
   135
sl@0
   136
		iError = new(ELeave) TWTLSValidationStatus(expectedError, 0);
sl@0
   137
		}
sl@0
   138
	}
sl@0
   139
sl@0
   140
CTestChainValidate::~CTestChainValidate()
sl@0
   141
	{
sl@0
   142
	delete iError;
sl@0
   143
	delete iWarnings;
sl@0
   144
	};
sl@0
   145
sl@0
   146
TBool CTestChainValidate::AddServerL(const TDesC& aBuf)
sl@0
   147
	{
sl@0
   148
	TInt nPos, n;
sl@0
   149
	TPtrC ioSection(aBuf);
sl@0
   150
	TPtrC ioBuf;
sl@0
   151
	if (ioSection != KNullDesC)
sl@0
   152
		{
sl@0
   153
		do
sl@0
   154
			{
sl@0
   155
			nPos = 0;
sl@0
   156
			ioBuf.Set(Input::ParseElement(ioSection, KServerStart, nPos));
sl@0
   157
			if(nPos > 0)
sl@0
   158
				{
sl@0
   159
				ioSection.Set(ioSection.Mid(nPos));
sl@0
   160
				n=0;
sl@0
   161
				TPtrC iCertBuf = Input::ParseElement(ioBuf, KCertificateStart, n);
sl@0
   162
				iServerCerts->AppendL(iCertBuf);
sl@0
   163
				TPtrC iLabelBuf = Input::ParseElement(ioBuf, KLabelStart, n);
sl@0
   164
				iServerLabels->AppendL(iLabelBuf);
sl@0
   165
				};
sl@0
   166
			
sl@0
   167
			}
sl@0
   168
		while(nPos > 0);
sl@0
   169
		return ETrue;
sl@0
   170
		}
sl@0
   171
	return EFalse;
sl@0
   172
	}
sl@0
   173
sl@0
   174
TBool CTestChainValidate::AddRootL(const TDesC& aBuf)
sl@0
   175
	{
sl@0
   176
	TInt nPos, n;
sl@0
   177
	TPtrC ioSection(aBuf);
sl@0
   178
	TPtrC ioBuf;
sl@0
   179
	if (ioSection != KNullDesC)
sl@0
   180
		{
sl@0
   181
		do
sl@0
   182
			{
sl@0
   183
			nPos = 0;
sl@0
   184
			ioBuf.Set(Input::ParseElement(ioSection, KRootStart, nPos));
sl@0
   185
			if(nPos > 0)
sl@0
   186
				{
sl@0
   187
				ioSection.Set(ioSection.Mid(nPos));
sl@0
   188
				n=0;
sl@0
   189
				TPtrC iCertBuf = Input::ParseElement(ioBuf, KCertificateStart, n);
sl@0
   190
				iRootCerts->AppendL(iCertBuf);
sl@0
   191
				TPtrC iLabelBuf = Input::ParseElement(ioBuf, KLabelStart, n);
sl@0
   192
				iRootLabels->AppendL(iLabelBuf);
sl@0
   193
				};
sl@0
   194
			
sl@0
   195
			}
sl@0
   196
		while(nPos > 0);
sl@0
   197
		return ETrue;
sl@0
   198
		}
sl@0
   199
	return EFalse;
sl@0
   200
	}
sl@0
   201
sl@0
   202