1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/security/cryptoservices/certificateandkeymgmt/tpkixcert/testspecs.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,703 @@
1.4 +/*
1.5 +* Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
1.6 +* All rights reserved.
1.7 +* This component and the accompanying materials are made available
1.8 +* under the terms of the License "Eclipse Public License v1.0"
1.9 +* which accompanies this distribution, and is available
1.10 +* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.11 +*
1.12 +* Initial Contributors:
1.13 +* Nokia Corporation - initial contribution.
1.14 +*
1.15 +* Contributors:
1.16 +*
1.17 +* Description:
1.18 +*
1.19 +*/
1.20 +
1.21 +
1.22 +#include "testspecs.h"
1.23 +
1.24 +//test chain superclass
1.25 +CTestChain::CTestChain()
1.26 + {
1.27 + }
1.28 +
1.29 +CTestChain::~CTestChain()
1.30 + {
1.31 + delete iServerCerts;
1.32 + delete iRootCerts;
1.33 + delete iExtraCerts;
1.34 + }
1.35 +
1.36 +void CTestChain::ConstructL()
1.37 + {
1.38 + iServerCerts = new(ELeave) CDesCArrayFlat (1);
1.39 + iRootCerts = new(ELeave) CDesCArrayFlat (1);
1.40 + iExtraCerts = new(ELeave) CDesCArrayFlat (1);
1.41 + }
1.42 +
1.43 +//test build class
1.44 +CTestChainBuild* CTestChainBuild::NewL()
1.45 + {
1.46 + CTestChainBuild* self = CTestChainBuild::NewLC();
1.47 + CleanupStack::Pop();
1.48 + return self;
1.49 + }
1.50 +
1.51 +CTestChainBuild* CTestChainBuild::NewLC()
1.52 + {
1.53 + CTestChainBuild* self = new(ELeave) CTestChainBuild;
1.54 + CleanupStack::PushL(self);
1.55 + self->ConstructL();
1.56 + return self;
1.57 + }
1.58 +
1.59 +CTestChainBuild::~CTestChainBuild()
1.60 + {
1.61 + delete iCorrectChain;
1.62 + }
1.63 +
1.64 +//test chain validate class
1.65 +CTestChainValidate* CTestChainValidate::NewL()
1.66 + {
1.67 + CTestChainValidate* self = CTestChainValidate::NewLC();
1.68 + CleanupStack::Pop();
1.69 + return self;
1.70 + }
1.71 +
1.72 +CTestChainValidate* CTestChainValidate::NewLC()
1.73 + {
1.74 + CTestChainValidate* self = new(ELeave) CTestChainValidate;
1.75 + CleanupStack::PushL(self);
1.76 + self->ConstructL();
1.77 + return self;
1.78 + }
1.79 +
1.80 +void CTestChainValidate::ConstructL()
1.81 + {
1.82 + CTestChain::ConstructL();
1.83 + iWarnings = new(ELeave)CArrayFixFlat<TValidationStatus> (1);
1.84 + iPolicies = new(ELeave) CDesCArrayFlat (1);
1.85 + }
1.86 +
1.87 +CTestChainValidate::~CTestChainValidate()
1.88 + {
1.89 + delete iError;
1.90 + delete iWarnings;
1.91 + delete iPolicies;
1.92 + };
1.93 +
1.94 +//test specs
1.95 +TestSpec::TestSpec()
1.96 + {
1.97 + }
1.98 +
1.99 +CTestChainBuild* TestSpec::TestBuildSpec1()
1.100 + {
1.101 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.102 + ret->iServerCerts->AppendL(KEE);
1.103 + ret->iServerCerts->AppendL(KCA1);
1.104 + ret->iServerCerts->AppendL(KCA2);
1.105 + ret->iRootCerts->AppendL(KRoot);
1.106 + const TPtrC name(KCorrectFile1);
1.107 + ret->iCorrectChain = name.AllocL();
1.108 + CleanupStack::Pop();
1.109 + return ret;
1.110 + }
1.111 +
1.112 +CTestChainBuild* TestSpec::TestBuildSpec2()
1.113 + {
1.114 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.115 + ret->iServerCerts->AppendL(KEE);
1.116 + ret->iServerCerts->AppendL(KCA2);
1.117 + ret->iServerCerts->AppendL(KCA1);
1.118 + ret->iRootCerts->AppendL(KRoot);
1.119 + const TPtrC name(KCorrectFile1);
1.120 + ret->iCorrectChain = name.AllocL();
1.121 + CleanupStack::Pop();
1.122 + return ret;
1.123 + }
1.124 +
1.125 +CTestChainBuild* TestSpec::TestBuildSpec3()
1.126 + {
1.127 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.128 + ret->iServerCerts->AppendL(KEE);
1.129 + ret->iServerCerts->AppendL(KCA1);
1.130 + ret->iExtraCerts->AppendL(KCA2);
1.131 + ret->iRootCerts->AppendL(KRoot);
1.132 + const TPtrC name(KCorrectFile1);
1.133 + ret->iCorrectChain = name.AllocL();
1.134 + CleanupStack::Pop();
1.135 + return ret;
1.136 + }
1.137 +
1.138 +CTestChainBuild* TestSpec::TestBuildSpec4()
1.139 + {
1.140 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.141 + ret->iServerCerts->AppendL(KEE);
1.142 + ret->iServerCerts->AppendL(KCA2);
1.143 + ret->iExtraCerts->AppendL(KCA1);
1.144 + ret->iRootCerts->AppendL(KRoot);
1.145 + const TPtrC name(KCorrectFile1);
1.146 + ret->iCorrectChain = name.AllocL();
1.147 + CleanupStack::Pop();
1.148 + return ret;
1.149 + }
1.150 +
1.151 +CTestChainBuild* TestSpec::TestBuildSpec5()
1.152 + {
1.153 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.154 + ret->iServerCerts->AppendL(KEE);
1.155 + ret->iServerCerts->AppendL(KCA1);
1.156 + ret->iServerCerts->AppendL(KCA2);
1.157 + ret->iServerCerts->AppendL(KRoot);
1.158 + ret->iRootCerts->AppendL(KRoot);
1.159 + const TPtrC name(KCorrectFile1);
1.160 + ret->iCorrectChain = name.AllocL();
1.161 + CleanupStack::Pop();
1.162 + return ret;
1.163 + }
1.164 +
1.165 +CTestChainBuild* TestSpec::TestBuildSpec6()
1.166 + {
1.167 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.168 + ret->iServerCerts->AppendL(KEE);
1.169 + ret->iServerCerts->AppendL(KRoot);
1.170 + ret->iServerCerts->AppendL(KCA2);
1.171 + ret->iServerCerts->AppendL(KCA1);
1.172 + ret->iRootCerts->AppendL(KRoot);
1.173 + const TPtrC name(KCorrectFile1);
1.174 + ret->iCorrectChain = name.AllocL();
1.175 + CleanupStack::Pop();
1.176 + return ret;
1.177 + }
1.178 +
1.179 +CTestChainBuild* TestSpec::TestBuildSpec7()
1.180 + {
1.181 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.182 + ret->iServerCerts->AppendL(KEE);
1.183 + ret->iServerCerts->AppendL(KCA1);
1.184 + ret->iServerCerts->AppendL(KCA2SameDN);
1.185 + ret->iServerCerts->AppendL(KCA2);
1.186 + ret->iRootCerts->AppendL(KRoot);
1.187 + const TPtrC name(KCorrectFile1);
1.188 + ret->iCorrectChain = name.AllocL();
1.189 + CleanupStack::Pop();
1.190 + return ret;
1.191 + }
1.192 +
1.193 +CTestChainBuild* TestSpec::TestBuildSpec8()
1.194 + {
1.195 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.196 + ret->iServerCerts->AppendL(KEE);
1.197 + ret->iServerCerts->AppendL(KCA2SameDN);
1.198 + ret->iServerCerts->AppendL(KCA1);
1.199 + ret->iServerCerts->AppendL(KCA2);
1.200 + ret->iRootCerts->AppendL(KRoot);
1.201 + const TPtrC name(KCorrectFile1);
1.202 + ret->iCorrectChain = name.AllocL();
1.203 + CleanupStack::Pop();
1.204 + return ret;
1.205 + }
1.206 +
1.207 +CTestChainBuild* TestSpec::TestBuildSpec9()
1.208 + {
1.209 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.210 + ret->iServerCerts->AppendL(KEE);
1.211 + ret->iServerCerts->AppendL(KCA1);
1.212 + ret->iServerCerts->AppendL(KCA2SameDN);
1.213 + ret->iExtraCerts->AppendL(KCA2);
1.214 + ret->iRootCerts->AppendL(KRoot);
1.215 + const TPtrC name(KCorrectFile1);
1.216 + ret->iCorrectChain = name.AllocL();
1.217 + CleanupStack::Pop();
1.218 + return ret;
1.219 + }
1.220 +
1.221 +CTestChainBuild* TestSpec::TestBuildSpec10()
1.222 + {
1.223 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.224 + ret->iServerCerts->AppendL(KEE);
1.225 + ret->iServerCerts->AppendL(KCA1);
1.226 + ret->iServerCerts->AppendL(KCA2);
1.227 + ret->iExtraCerts->AppendL(KCA2SameDN);
1.228 + ret->iRootCerts->AppendL(KRoot);
1.229 + const TPtrC name(KCorrectFile1);
1.230 + ret->iCorrectChain = name.AllocL();
1.231 + CleanupStack::Pop();
1.232 + return ret;
1.233 + }
1.234 +
1.235 +CTestChainBuild* TestSpec::TestBuildSpec11()
1.236 + {
1.237 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.238 + ret->iServerCerts->AppendL(KEE);
1.239 + ret->iServerCerts->AppendL(KCA2);
1.240 + ret->iServerCerts->AppendL(KCA1);
1.241 + ret->iExtraCerts->AppendL(KCA1SameDN);
1.242 + ret->iRootCerts->AppendL(KRoot);
1.243 + const TPtrC name(KCorrectFile1);
1.244 + ret->iCorrectChain = name.AllocL();
1.245 + CleanupStack::Pop();
1.246 + return ret;
1.247 + }
1.248 +
1.249 +CTestChainBuild* TestSpec::TestBuildSpec12()
1.250 + {
1.251 + CTestChainBuild* ret = CTestChainBuild::NewLC();
1.252 + ret->iServerCerts->AppendL(KEE);
1.253 + ret->iServerCerts->AppendL(KCA2);
1.254 + ret->iServerCerts->AppendL(KCA1SameDN);
1.255 + ret->iExtraCerts->AppendL(KCA1);
1.256 + ret->iRootCerts->AppendL(KRoot);
1.257 + const TPtrC name(KCorrectFile1);
1.258 + ret->iCorrectChain = name.AllocL();
1.259 + CleanupStack::Pop();
1.260 + return ret;
1.261 + }
1.262 +
1.263 +//validate tests
1.264 +CTestChainValidate* TestSpec::TestValidateSpec1()
1.265 + {
1.266 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.267 + ret->iServerCerts->AppendL(KFortezzaCA1EE1);
1.268 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.269 + ret->iServerCerts->AppendL(KFortezzaCA1);
1.270 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.271 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.272 + ret->iError = status;
1.273 + CleanupStack::Pop();
1.274 + return ret;
1.275 + }
1.276 +
1.277 +CTestChainValidate* TestSpec::TestValidateSpec2()
1.278 + {
1.279 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.280 + ret->iServerCerts->AppendL(KFortezzaCA1EE2);
1.281 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.282 + ret->iServerCerts->AppendL(KFortezzaCA1);
1.283 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.284 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.285 + ret->iError = status;
1.286 + CleanupStack::Pop();
1.287 + return ret;
1.288 + }
1.289 +
1.290 +CTestChainValidate* TestSpec::TestValidateSpec3()
1.291 + {
1.292 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.293 + ret->iServerCerts->AppendL(KFortezzaExpired);
1.294 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.295 + ret->iServerCerts->AppendL(KFortezzaCA1);
1.296 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.297 + TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0);
1.298 + ret->iError = status;
1.299 + CleanupStack::Pop();
1.300 + return ret;
1.301 + }
1.302 +
1.303 +CTestChainValidate* TestSpec::TestValidateSpec4()
1.304 + {
1.305 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.306 + ret->iServerCerts->AppendL(KFortezzaFuture);
1.307 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.308 + ret->iServerCerts->AppendL(KFortezzaCA1);
1.309 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.310 + TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0);
1.311 + ret->iError = status;
1.312 + CleanupStack::Pop();
1.313 + return ret;
1.314 + }
1.315 +
1.316 +CTestChainValidate* TestSpec::TestValidateSpec5()
1.317 + {
1.318 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.319 + ret->iServerCerts->AppendL(KFortezzaInvalidSig);
1.320 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.321 + ret->iServerCerts->AppendL(KFortezzaCA1);
1.322 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.323 + TValidationStatus* status = new(ELeave) TValidationStatus(ESignatureInvalid, 0);
1.324 + ret->iError = status;
1.325 + CleanupStack::Pop();
1.326 + return ret;
1.327 + }
1.328 +
1.329 +CTestChainValidate* TestSpec::TestValidateSpec6()
1.330 + {
1.331 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.332 + ret->iServerCerts->AppendL(KFortezzaKeyCompromise);
1.333 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.334 + ret->iServerCerts->AppendL(KFortezzaCA1);
1.335 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.336 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.337 + ret->iError = status;
1.338 + CleanupStack::Pop();
1.339 + return ret;
1.340 + }
1.341 +
1.342 +CTestChainValidate* TestSpec::TestValidateSpec7()
1.343 + {
1.344 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.345 + ret->iServerCerts->AppendL(KFortezzaBadSubjName2);
1.346 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.347 + ret->iServerCerts->AppendL(KFortezzaTestCA2);
1.348 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.349 + TValidationStatus* status = new(ELeave) TValidationStatus(ENameIsExcluded, 0);
1.350 + ret->iError = status;
1.351 + CleanupStack::Pop();
1.352 + return ret;
1.353 + }
1.354 +
1.355 +CTestChainValidate* TestSpec::TestValidateSpec8()
1.356 + {
1.357 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.358 + ret->iServerCerts->AppendL(KFortezzaBadSubjName1);
1.359 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.360 + ret->iServerCerts->AppendL(KFortezzaTestCA2);
1.361 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.362 + TValidationStatus* status = new(ELeave) TValidationStatus(ENameNotPermitted, 0);
1.363 + ret->iError = status;
1.364 + CleanupStack::Pop();
1.365 + return ret;
1.366 + }
1.367 +
1.368 +//
1.369 +CTestChainValidate* TestSpec::TestValidateSpec9()
1.370 + {
1.371 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.372 + ret->iServerCerts->AppendL(KFortezzaPathLen);
1.373 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.374 + ret->iServerCerts->AppendL(KFortezzaTestCA2);
1.375 + ret->iServerCerts->AppendL(KFortezzaTestSubCA2);
1.376 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.377 + TValidationStatus* status = new(ELeave) TValidationStatus(EPathTooLong, 0);
1.378 + ret->iError = status;
1.379 + CleanupStack::Pop();
1.380 + return ret;
1.381 + }
1.382 +
1.383 +CTestChainValidate* TestSpec::TestValidateSpec10()
1.384 + {
1.385 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.386 + ret->iServerCerts->AppendL(KFortezzaInvalidCAUser1);
1.387 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.388 + ret->iServerCerts->AppendL(KFortezzaBadCA1);
1.389 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.390 + TValidationStatus* status = new(ELeave) TValidationStatus(ENotCACert, 1);
1.391 + ret->iError = status;
1.392 + CleanupStack::Pop();
1.393 + return ret;
1.394 + }
1.395 +
1.396 +CTestChainValidate* TestSpec::TestValidateSpec11()
1.397 + {
1.398 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.399 + ret->iServerCerts->AppendL(KFortezzaInvalidCAUser2);
1.400 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.401 + ret->iServerCerts->AppendL(KFortezzaBadCA2);
1.402 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.403 + TValidationStatus* status = new(ELeave) TValidationStatus(EBadKeyUsage, 1);
1.404 + ret->iError = status;
1.405 + CleanupStack::Pop();
1.406 + return ret;
1.407 + }
1.408 +
1.409 +CTestChainValidate* TestSpec::TestValidateSpec12()
1.410 + {
1.411 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.412 + ret->iServerCerts->AppendL(KFortezzaCA2EE1);
1.413 + ret->iServerCerts->AppendL(KFortezzaPCA2);
1.414 + ret->iServerCerts->AppendL(KFortezzaCA2);
1.415 + ret->iRootCerts->AppendL(KFortezzaPAA2);
1.416 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.417 + ret->iError = status;
1.418 + CleanupStack::Pop();
1.419 + return ret;
1.420 + }
1.421 +
1.422 +CTestChainValidate* TestSpec::TestValidateSpec13()
1.423 + {
1.424 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.425 + ret->iServerCerts->AppendL(KFortezzaCA2BadAltName);
1.426 + ret->iServerCerts->AppendL(KFortezzaPCA2);
1.427 + ret->iServerCerts->AppendL(KFortezzaCA2);
1.428 + ret->iRootCerts->AppendL(KFortezzaPAA2);
1.429 + TValidationStatus* status = new(ELeave) TValidationStatus(ENameIsExcluded, 0);
1.430 + ret->iError = status;
1.431 + CleanupStack::Pop();
1.432 + return ret;
1.433 + }
1.434 +
1.435 +CTestChainValidate* TestSpec::TestValidateSpec14()
1.436 + {
1.437 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.438 + ret->iServerCerts->AppendL(KDashnet);
1.439 + ret->iRootCerts->AppendL(KRSASSCA);
1.440 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.441 + ret->iError = status;
1.442 + CleanupStack::Pop();
1.443 + return ret;
1.444 + }
1.445 +
1.446 +
1.447 +CTestChainValidate* TestSpec::TestValidateSpec15()
1.448 + {
1.449 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.450 + ret->iServerCerts->AppendL(K3Do);
1.451 + ret->iRootCerts->AppendL(KRSASSCA);
1.452 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.453 + ret->iError = status;
1.454 + CleanupStack::Pop();
1.455 + return ret;
1.456 + }
1.457 +
1.458 +CTestChainValidate* TestSpec::TestValidateSpec16()
1.459 + {
1.460 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.461 + ret->iServerCerts->AppendL(KDashnet);
1.462 + ret->iRootCerts->AppendL(KRSASSCA_OLD);
1.463 + TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0);
1.464 + ret->iError = status;
1.465 + CleanupStack::Pop();
1.466 + return ret;
1.467 + }
1.468 +
1.469 +CTestChainValidate* TestSpec::TestValidateSpec17()
1.470 + {
1.471 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.472 + ret->iServerCerts->AppendL(K3Do);
1.473 + ret->iRootCerts->AppendL(KRSASSCA_OLD);
1.474 + TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0);
1.475 + ret->iError = status;
1.476 + CleanupStack::Pop();
1.477 + return ret;
1.478 + }
1.479 +
1.480 +CTestChainValidate* TestSpec::TestValidateSpec18()
1.481 + {
1.482 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.483 + ret->iServerCerts->AppendL(KLloyds);
1.484 + ret->iServerCerts->AppendL(KVSignServer3);
1.485 + ret->iRootCerts->AppendL(KVSignCA3);
1.486 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.487 + ret->iError = status;
1.488 + CleanupStack::Pop();
1.489 + return ret;
1.490 + }
1.491 +
1.492 +CTestChainValidate* TestSpec::TestValidateSpec19()
1.493 + {
1.494 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.495 + ret->iServerCerts->AppendL(KRoot);
1.496 + ret->iRootCerts->AppendL(KRoot);
1.497 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.498 + ret->iError = status;
1.499 + CleanupStack::Pop();
1.500 + return ret;
1.501 + }
1.502 +
1.503 +CTestChainValidate* TestSpec::TestValidateSpec20()
1.504 + {
1.505 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.506 + ret->iServerCerts->AppendL(KRoot);
1.507 + ret->iRootCerts->AppendL(KVSignCA3);
1.508 + TValidationStatus* status = new(ELeave) TValidationStatus(EChainHasNoRoot, 0);
1.509 + ret->iError = status;
1.510 + CleanupStack::Pop();
1.511 + return ret;
1.512 + }
1.513 +
1.514 +//n.b. this test should leave with KErrArgument
1.515 +CTestChainValidate* TestSpec::TestValidateSpec21()
1.516 + {
1.517 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.518 + TValidationStatus* status = new(ELeave) TValidationStatus(EChainHasNoRoot, 0);
1.519 + ret->iError = status;
1.520 + CleanupStack::Pop();
1.521 + return ret;
1.522 + }
1.523 +
1.524 +CTestChainValidate* TestSpec::TestValidateSpec22()
1.525 + {
1.526 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.527 + ret->iServerCerts->AppendL(KMedCA1EE1);
1.528 + ret->iServerCerts->AppendL(KMedCA1);
1.529 + ret->iRootCerts->AppendL(KMedRootCA);
1.530 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.531 + ret->iError = status;
1.532 + CleanupStack::Pop();
1.533 + return ret;
1.534 + }
1.535 +
1.536 +CTestChainValidate* TestSpec::TestValidateSpec23()
1.537 + {
1.538 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.539 + ret->iServerCerts->AppendL(KMedCA1EE2);
1.540 + ret->iServerCerts->AppendL(KMedCA1);
1.541 + ret->iRootCerts->AppendL(KMedRootCA);
1.542 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.543 + ret->iError = status;
1.544 + CleanupStack::Pop();
1.545 + return ret;
1.546 + }
1.547 +
1.548 +//FINEID test cases
1.549 +CTestChainValidate* TestSpec::TestValidateSpec24()
1.550 + {
1.551 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.552 + ret->iServerCerts->AppendL(KFINEIDLipponenSign);
1.553 + ret->iRootCerts->AppendL(KFINEIDCitizenCA);
1.554 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.555 + ret->iError = status;
1.556 + CleanupStack::Pop();
1.557 + return ret;
1.558 + }
1.559 +
1.560 +CTestChainValidate* TestSpec::TestValidateSpec25()
1.561 + {
1.562 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.563 + ret->iServerCerts->AppendL(KFINEIDLipponenEncrypt);
1.564 + ret->iRootCerts->AppendL(KFINEIDCitizenCA);
1.565 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.566 + ret->iError = status;
1.567 + CleanupStack::Pop();
1.568 + return ret;
1.569 + }
1.570 +
1.571 +CTestChainValidate* TestSpec::TestValidateSpec26()
1.572 + {
1.573 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.574 + ret->iServerCerts->AppendL(KFINEIDHelsinkiSign);
1.575 + ret->iRootCerts->AppendL(KFINEIDTestCA3);
1.576 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.577 + ret->iError = status;
1.578 + CleanupStack::Pop();
1.579 + return ret;
1.580 + }
1.581 +
1.582 +CTestChainValidate* TestSpec::TestValidateSpec27()
1.583 + {
1.584 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.585 + ret->iServerCerts->AppendL(KFINEIDHelsinkiEncrypt);
1.586 + ret->iRootCerts->AppendL(KFINEIDTestCA3);
1.587 + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.588 + ret->iError = status;
1.589 + CleanupStack::Pop();
1.590 + return ret;
1.591 + }
1.592 +
1.593 +//test warning generated when cert not self signed
1.594 +CTestChainValidate* TestSpec::TestValidateSpec28()
1.595 + {
1.596 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.597 + ret->iServerCerts->AppendL(KLloyds);
1.598 + ret->iRootCerts->AppendL(KVSignServer3);//not self signed
1.599 + TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.600 + TValidationStatus warning(ERootCertNotSelfSigned, 0);
1.601 + ret->iError = error;
1.602 + ret->iWarnings->AppendL(warning);
1.603 + CleanupStack::Pop();
1.604 + return ret;
1.605 + }
1.606 +
1.607 +//test case with OpenSSL default certs
1.608 +CTestChainValidate* TestSpec::TestValidateSpec29()
1.609 + {
1.610 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.611 + ret->iRootCerts->AppendL(KApacheRSARoot);
1.612 + ret->iServerCerts->AppendL(KApacheRSAServer);
1.613 + TValidationStatus* error = new(ELeave) TValidationStatus(EDateOutOfRange, 0);
1.614 + ret->iError = error;
1.615 + CleanupStack::Pop();
1.616 + return ret;
1.617 + }
1.618 +
1.619 +CTestChainValidate* TestSpec::TestValidateSpec30()
1.620 + {
1.621 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.622 + ret->iRootCerts->AppendL(KApacheDSARoot);
1.623 + ret->iServerCerts->AppendL(KApacheDSAServer);
1.624 + TValidationStatus* error = new(ELeave) TValidationStatus(EDateOutOfRange, 0);
1.625 + ret->iError = error;
1.626 + CleanupStack::Pop();
1.627 + return ret;
1.628 + }
1.629 +
1.630 +//normal chain, supply policy in chain, should work
1.631 +CTestChainValidate* TestSpec::TestValidateSpec31()
1.632 + {
1.633 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.634 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.635 + ret->iServerCerts->AppendL(KFortezzaCA1EE1);
1.636 + ret->iServerCerts->AppendL(KFortezzaCA1);
1.637 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.638 + ret->iPolicies->AppendL(KX22Policy);
1.639 + TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.640 + ret->iError = error;
1.641 + CleanupStack::Pop();
1.642 + return ret;
1.643 + }
1.644 +
1.645 +//normal chain, supply policy not in chain, should fail
1.646 +CTestChainValidate* TestSpec::TestValidateSpec32()
1.647 + {
1.648 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.649 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.650 + ret->iServerCerts->AppendL(KFortezzaCA1EE1);
1.651 + ret->iServerCerts->AppendL(KFortezzaCA1);
1.652 + ret->iServerCerts->AppendL(KFortezzaPCA1);
1.653 + ret->iPolicies->AppendL(KExtraBogusPolicy);
1.654 + TValidationStatus* error = new(ELeave) TValidationStatus(ERequiredPolicyNotFound, 0);
1.655 + ret->iError = error;
1.656 + CleanupStack::Pop();
1.657 + return ret;
1.658 + }
1.659 +
1.660 +//chain with policy mapping, supply first policy, should work
1.661 +CTestChainValidate* TestSpec::TestValidateSpec33()
1.662 + {
1.663 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.664 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.665 + ret->iServerCerts->AppendL(KFortezzaCA2EE1);
1.666 + ret->iServerCerts->AppendL(KFortezzaCA2);
1.667 + ret->iServerCerts->AppendL(KFortezzaPCA2);
1.668 + ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert);
1.669 + ret->iPolicies->AppendL(KX22Policy);
1.670 + TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.671 + ret->iError = error;
1.672 + CleanupStack::Pop();
1.673 + return ret;
1.674 + }
1.675 +
1.676 +//chain with policy mapping, supply second policy, should work
1.677 +CTestChainValidate* TestSpec::TestValidateSpec34()
1.678 + {
1.679 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.680 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.681 + ret->iServerCerts->AppendL(KFortezzaCA2EE1);
1.682 + ret->iServerCerts->AppendL(KFortezzaCA2);
1.683 + ret->iServerCerts->AppendL(KFortezzaPCA2);
1.684 + ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert);
1.685 + ret->iPolicies->AppendL(KRNPolicy);
1.686 + TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0);
1.687 + ret->iError = error;
1.688 + CleanupStack::Pop();
1.689 + return ret;
1.690 + }
1.691 +
1.692 +//chain with policy mappng, supply different policy, should fail
1.693 +CTestChainValidate* TestSpec::TestValidateSpec35()
1.694 + {
1.695 + CTestChainValidate* ret = CTestChainValidate::NewLC();
1.696 + ret->iRootCerts->AppendL(KFortezzaPAA1);
1.697 + ret->iServerCerts->AppendL(KFortezzaCA2EE1);
1.698 + ret->iServerCerts->AppendL(KFortezzaCA2);
1.699 + ret->iServerCerts->AppendL(KFortezzaPCA2);
1.700 + ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert);
1.701 + ret->iPolicies->AppendL(KExtraBogusPolicy);
1.702 + TValidationStatus* error = new(ELeave) TValidationStatus(ERequiredPolicyNotFound, 0);
1.703 + ret->iError = error;
1.704 + CleanupStack::Pop();
1.705 + return ret;
1.706 + }