sl@0: /* sl@0: * Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of the License "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: sl@0: #include "testspecs.h" sl@0: sl@0: //test chain superclass sl@0: CTestChain::CTestChain() sl@0: { sl@0: } sl@0: sl@0: CTestChain::~CTestChain() sl@0: { sl@0: delete iServerCerts; sl@0: delete iRootCerts; sl@0: delete iExtraCerts; sl@0: } sl@0: sl@0: void CTestChain::ConstructL() sl@0: { sl@0: iServerCerts = new(ELeave) CDesCArrayFlat (1); sl@0: iRootCerts = new(ELeave) CDesCArrayFlat (1); sl@0: iExtraCerts = new(ELeave) CDesCArrayFlat (1); sl@0: } sl@0: sl@0: //test build class sl@0: CTestChainBuild* CTestChainBuild::NewL() sl@0: { sl@0: CTestChainBuild* self = CTestChainBuild::NewLC(); sl@0: CleanupStack::Pop(); sl@0: return self; sl@0: } sl@0: sl@0: CTestChainBuild* CTestChainBuild::NewLC() sl@0: { sl@0: CTestChainBuild* self = new(ELeave) CTestChainBuild; sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: return self; sl@0: } sl@0: sl@0: CTestChainBuild::~CTestChainBuild() sl@0: { sl@0: delete iCorrectChain; sl@0: } sl@0: sl@0: //test chain validate class sl@0: CTestChainValidate* CTestChainValidate::NewL() sl@0: { sl@0: CTestChainValidate* self = CTestChainValidate::NewLC(); sl@0: CleanupStack::Pop(); sl@0: return self; sl@0: } sl@0: sl@0: CTestChainValidate* CTestChainValidate::NewLC() sl@0: { sl@0: CTestChainValidate* self = new(ELeave) CTestChainValidate; sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: return self; sl@0: } sl@0: sl@0: void CTestChainValidate::ConstructL() sl@0: { sl@0: CTestChain::ConstructL(); sl@0: iWarnings = new(ELeave)CArrayFixFlat (1); sl@0: iPolicies = new(ELeave) CDesCArrayFlat (1); sl@0: } sl@0: sl@0: CTestChainValidate::~CTestChainValidate() sl@0: { sl@0: delete iError; sl@0: delete iWarnings; sl@0: delete iPolicies; sl@0: }; sl@0: sl@0: //test specs sl@0: TestSpec::TestSpec() sl@0: { sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec1() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec2() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec3() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iExtraCerts->AppendL(KCA2); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec4() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iExtraCerts->AppendL(KCA1); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec5() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iServerCerts->AppendL(KRoot); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec6() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KRoot); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec7() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iServerCerts->AppendL(KCA2SameDN); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec8() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA2SameDN); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec9() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iServerCerts->AppendL(KCA2SameDN); sl@0: ret->iExtraCerts->AppendL(KCA2); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec10() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iExtraCerts->AppendL(KCA2SameDN); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec11() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iServerCerts->AppendL(KCA1); sl@0: ret->iExtraCerts->AppendL(KCA1SameDN); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainBuild* TestSpec::TestBuildSpec12() sl@0: { sl@0: CTestChainBuild* ret = CTestChainBuild::NewLC(); sl@0: ret->iServerCerts->AppendL(KEE); sl@0: ret->iServerCerts->AppendL(KCA2); sl@0: ret->iServerCerts->AppendL(KCA1SameDN); sl@0: ret->iExtraCerts->AppendL(KCA1); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: const TPtrC name(KCorrectFile1); sl@0: ret->iCorrectChain = name.AllocL(); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //validate tests sl@0: CTestChainValidate* TestSpec::TestValidateSpec1() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1EE1); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec2() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1EE2); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec3() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaExpired); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec4() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaFuture); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec5() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaInvalidSig); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(ESignatureInvalid, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec6() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaKeyCompromise); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec7() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaBadSubjName2); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaTestCA2); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(ENameIsExcluded, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec8() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaBadSubjName1); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaTestCA2); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(ENameNotPermitted, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: // sl@0: CTestChainValidate* TestSpec::TestValidateSpec9() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaPathLen); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaTestCA2); sl@0: ret->iServerCerts->AppendL(KFortezzaTestSubCA2); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EPathTooLong, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec10() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaInvalidCAUser1); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaBadCA1); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(ENotCACert, 1); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec11() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaInvalidCAUser2); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaBadCA2); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EBadKeyUsage, 1); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec12() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2EE1); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA2); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA2); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec13() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2BadAltName); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA2); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA2); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(ENameIsExcluded, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec14() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KDashnet); sl@0: ret->iRootCerts->AppendL(KRSASSCA); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec15() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(K3Do); sl@0: ret->iRootCerts->AppendL(KRSASSCA); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec16() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KDashnet); sl@0: ret->iRootCerts->AppendL(KRSASSCA_OLD); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec17() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(K3Do); sl@0: ret->iRootCerts->AppendL(KRSASSCA_OLD); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec18() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KLloyds); sl@0: ret->iServerCerts->AppendL(KVSignServer3); sl@0: ret->iRootCerts->AppendL(KVSignCA3); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec19() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KRoot); sl@0: ret->iRootCerts->AppendL(KRoot); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec20() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KRoot); sl@0: ret->iRootCerts->AppendL(KVSignCA3); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EChainHasNoRoot, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //n.b. this test should leave with KErrArgument sl@0: CTestChainValidate* TestSpec::TestValidateSpec21() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EChainHasNoRoot, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec22() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KMedCA1EE1); sl@0: ret->iServerCerts->AppendL(KMedCA1); sl@0: ret->iRootCerts->AppendL(KMedRootCA); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec23() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KMedCA1EE2); sl@0: ret->iServerCerts->AppendL(KMedCA1); sl@0: ret->iRootCerts->AppendL(KMedRootCA); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //FINEID test cases sl@0: CTestChainValidate* TestSpec::TestValidateSpec24() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFINEIDLipponenSign); sl@0: ret->iRootCerts->AppendL(KFINEIDCitizenCA); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec25() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFINEIDLipponenEncrypt); sl@0: ret->iRootCerts->AppendL(KFINEIDCitizenCA); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec26() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFINEIDHelsinkiSign); sl@0: ret->iRootCerts->AppendL(KFINEIDTestCA3); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec27() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KFINEIDHelsinkiEncrypt); sl@0: ret->iRootCerts->AppendL(KFINEIDTestCA3); sl@0: TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = status; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //test warning generated when cert not self signed sl@0: CTestChainValidate* TestSpec::TestValidateSpec28() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iServerCerts->AppendL(KLloyds); sl@0: ret->iRootCerts->AppendL(KVSignServer3);//not self signed sl@0: TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: TValidationStatus warning(ERootCertNotSelfSigned, 0); sl@0: ret->iError = error; sl@0: ret->iWarnings->AppendL(warning); sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //test case with OpenSSL default certs sl@0: CTestChainValidate* TestSpec::TestValidateSpec29() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iRootCerts->AppendL(KApacheRSARoot); sl@0: ret->iServerCerts->AppendL(KApacheRSAServer); sl@0: TValidationStatus* error = new(ELeave) TValidationStatus(EDateOutOfRange, 0); sl@0: ret->iError = error; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: CTestChainValidate* TestSpec::TestValidateSpec30() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iRootCerts->AppendL(KApacheDSARoot); sl@0: ret->iServerCerts->AppendL(KApacheDSAServer); sl@0: TValidationStatus* error = new(ELeave) TValidationStatus(EDateOutOfRange, 0); sl@0: ret->iError = error; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //normal chain, supply policy in chain, should work sl@0: CTestChainValidate* TestSpec::TestValidateSpec31() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1EE1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iPolicies->AppendL(KX22Policy); sl@0: TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = error; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //normal chain, supply policy not in chain, should fail sl@0: CTestChainValidate* TestSpec::TestValidateSpec32() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1EE1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA1); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA1); sl@0: ret->iPolicies->AppendL(KExtraBogusPolicy); sl@0: TValidationStatus* error = new(ELeave) TValidationStatus(ERequiredPolicyNotFound, 0); sl@0: ret->iError = error; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //chain with policy mapping, supply first policy, should work sl@0: CTestChainValidate* TestSpec::TestValidateSpec33() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2EE1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA2); sl@0: ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert); sl@0: ret->iPolicies->AppendL(KX22Policy); sl@0: TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = error; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //chain with policy mapping, supply second policy, should work sl@0: CTestChainValidate* TestSpec::TestValidateSpec34() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2EE1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA2); sl@0: ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert); sl@0: ret->iPolicies->AppendL(KRNPolicy); sl@0: TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); sl@0: ret->iError = error; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: } sl@0: sl@0: //chain with policy mappng, supply different policy, should fail sl@0: CTestChainValidate* TestSpec::TestValidateSpec35() sl@0: { sl@0: CTestChainValidate* ret = CTestChainValidate::NewLC(); sl@0: ret->iRootCerts->AppendL(KFortezzaPAA1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2EE1); sl@0: ret->iServerCerts->AppendL(KFortezzaCA2); sl@0: ret->iServerCerts->AppendL(KFortezzaPCA2); sl@0: ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert); sl@0: ret->iPolicies->AppendL(KExtraBogusPolicy); sl@0: TValidationStatus* error = new(ELeave) TValidationStatus(ERequiredPolicyNotFound, 0); sl@0: ret->iError = error; sl@0: CleanupStack::Pop(); sl@0: return ret; sl@0: }