diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/certificateandkeymgmt/tpkixcert/testspecs.cpp --- a/cryptoservices/certificateandkeymgmt/tpkixcert/testspecs.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/certificateandkeymgmt/tpkixcert/testspecs.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,703 +1,703 @@ -/* -* Copyright (c) 1998-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 "testspecs.h" - -//test chain superclass -CTestChain::CTestChain() - { - } - -CTestChain::~CTestChain() - { - delete iServerCerts; - delete iRootCerts; - delete iExtraCerts; - } - -void CTestChain::ConstructL() - { - iServerCerts = new(ELeave) CDesCArrayFlat (1); - iRootCerts = new(ELeave) CDesCArrayFlat (1); - iExtraCerts = 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() - { - CTestChainValidate* self = CTestChainValidate::NewLC(); - CleanupStack::Pop(); - return self; - } - -CTestChainValidate* CTestChainValidate::NewLC() - { - CTestChainValidate* self = new(ELeave) CTestChainValidate; - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -void CTestChainValidate::ConstructL() - { - CTestChain::ConstructL(); - iWarnings = new(ELeave)CArrayFixFlat (1); - iPolicies = new(ELeave) CDesCArrayFlat (1); - } - -CTestChainValidate::~CTestChainValidate() - { - delete iError; - delete iWarnings; - delete iPolicies; - }; - -//test specs -TestSpec::TestSpec() - { - } - -CTestChainBuild* TestSpec::TestBuildSpec1() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA1); - ret->iServerCerts->AppendL(KCA2); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec2() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA2); - ret->iServerCerts->AppendL(KCA1); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec3() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA1); - ret->iExtraCerts->AppendL(KCA2); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec4() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA2); - ret->iExtraCerts->AppendL(KCA1); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec5() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA1); - ret->iServerCerts->AppendL(KCA2); - ret->iServerCerts->AppendL(KRoot); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec6() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KRoot); - ret->iServerCerts->AppendL(KCA2); - ret->iServerCerts->AppendL(KCA1); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec7() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA1); - ret->iServerCerts->AppendL(KCA2SameDN); - ret->iServerCerts->AppendL(KCA2); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec8() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA2SameDN); - ret->iServerCerts->AppendL(KCA1); - ret->iServerCerts->AppendL(KCA2); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec9() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA1); - ret->iServerCerts->AppendL(KCA2SameDN); - ret->iExtraCerts->AppendL(KCA2); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec10() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA1); - ret->iServerCerts->AppendL(KCA2); - ret->iExtraCerts->AppendL(KCA2SameDN); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec11() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA2); - ret->iServerCerts->AppendL(KCA1); - ret->iExtraCerts->AppendL(KCA1SameDN); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -CTestChainBuild* TestSpec::TestBuildSpec12() - { - CTestChainBuild* ret = CTestChainBuild::NewLC(); - ret->iServerCerts->AppendL(KEE); - ret->iServerCerts->AppendL(KCA2); - ret->iServerCerts->AppendL(KCA1SameDN); - ret->iExtraCerts->AppendL(KCA1); - ret->iRootCerts->AppendL(KRoot); - const TPtrC name(KCorrectFile1); - ret->iCorrectChain = name.AllocL(); - CleanupStack::Pop(); - return ret; - } - -//validate tests -CTestChainValidate* TestSpec::TestValidateSpec1() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaCA1EE1); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaCA1); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec2() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaCA1EE2); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaCA1); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec3() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaExpired); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaCA1); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec4() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaFuture); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaCA1); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec5() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaInvalidSig); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaCA1); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(ESignatureInvalid, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec6() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaKeyCompromise); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaCA1); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec7() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaBadSubjName2); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaTestCA2); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(ENameIsExcluded, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec8() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaBadSubjName1); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaTestCA2); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(ENameNotPermitted, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -// -CTestChainValidate* TestSpec::TestValidateSpec9() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaPathLen); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaTestCA2); - ret->iServerCerts->AppendL(KFortezzaTestSubCA2); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(EPathTooLong, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec10() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaInvalidCAUser1); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaBadCA1); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(ENotCACert, 1); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec11() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaInvalidCAUser2); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iServerCerts->AppendL(KFortezzaBadCA2); - ret->iRootCerts->AppendL(KFortezzaPAA1); - TValidationStatus* status = new(ELeave) TValidationStatus(EBadKeyUsage, 1); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec12() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaCA2EE1); - ret->iServerCerts->AppendL(KFortezzaPCA2); - ret->iServerCerts->AppendL(KFortezzaCA2); - ret->iRootCerts->AppendL(KFortezzaPAA2); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec13() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFortezzaCA2BadAltName); - ret->iServerCerts->AppendL(KFortezzaPCA2); - ret->iServerCerts->AppendL(KFortezzaCA2); - ret->iRootCerts->AppendL(KFortezzaPAA2); - TValidationStatus* status = new(ELeave) TValidationStatus(ENameIsExcluded, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec14() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KDashnet); - ret->iRootCerts->AppendL(KRSASSCA); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - - -CTestChainValidate* TestSpec::TestValidateSpec15() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(K3Do); - ret->iRootCerts->AppendL(KRSASSCA); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec16() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KDashnet); - ret->iRootCerts->AppendL(KRSASSCA_OLD); - TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec17() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(K3Do); - ret->iRootCerts->AppendL(KRSASSCA_OLD); - TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec18() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KLloyds); - ret->iServerCerts->AppendL(KVSignServer3); - ret->iRootCerts->AppendL(KVSignCA3); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec19() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KRoot); - ret->iRootCerts->AppendL(KRoot); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec20() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KRoot); - ret->iRootCerts->AppendL(KVSignCA3); - TValidationStatus* status = new(ELeave) TValidationStatus(EChainHasNoRoot, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -//n.b. this test should leave with KErrArgument -CTestChainValidate* TestSpec::TestValidateSpec21() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - TValidationStatus* status = new(ELeave) TValidationStatus(EChainHasNoRoot, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec22() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KMedCA1EE1); - ret->iServerCerts->AppendL(KMedCA1); - ret->iRootCerts->AppendL(KMedRootCA); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec23() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KMedCA1EE2); - ret->iServerCerts->AppendL(KMedCA1); - ret->iRootCerts->AppendL(KMedRootCA); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -//FINEID test cases -CTestChainValidate* TestSpec::TestValidateSpec24() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFINEIDLipponenSign); - ret->iRootCerts->AppendL(KFINEIDCitizenCA); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec25() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFINEIDLipponenEncrypt); - ret->iRootCerts->AppendL(KFINEIDCitizenCA); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec26() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFINEIDHelsinkiSign); - ret->iRootCerts->AppendL(KFINEIDTestCA3); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec27() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KFINEIDHelsinkiEncrypt); - ret->iRootCerts->AppendL(KFINEIDTestCA3); - TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = status; - CleanupStack::Pop(); - return ret; - } - -//test warning generated when cert not self signed -CTestChainValidate* TestSpec::TestValidateSpec28() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iServerCerts->AppendL(KLloyds); - ret->iRootCerts->AppendL(KVSignServer3);//not self signed - TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); - TValidationStatus warning(ERootCertNotSelfSigned, 0); - ret->iError = error; - ret->iWarnings->AppendL(warning); - CleanupStack::Pop(); - return ret; - } - -//test case with OpenSSL default certs -CTestChainValidate* TestSpec::TestValidateSpec29() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iRootCerts->AppendL(KApacheRSARoot); - ret->iServerCerts->AppendL(KApacheRSAServer); - TValidationStatus* error = new(ELeave) TValidationStatus(EDateOutOfRange, 0); - ret->iError = error; - CleanupStack::Pop(); - return ret; - } - -CTestChainValidate* TestSpec::TestValidateSpec30() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iRootCerts->AppendL(KApacheDSARoot); - ret->iServerCerts->AppendL(KApacheDSAServer); - TValidationStatus* error = new(ELeave) TValidationStatus(EDateOutOfRange, 0); - ret->iError = error; - CleanupStack::Pop(); - return ret; - } - -//normal chain, supply policy in chain, should work -CTestChainValidate* TestSpec::TestValidateSpec31() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iRootCerts->AppendL(KFortezzaPAA1); - ret->iServerCerts->AppendL(KFortezzaCA1EE1); - ret->iServerCerts->AppendL(KFortezzaCA1); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iPolicies->AppendL(KX22Policy); - TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = error; - CleanupStack::Pop(); - return ret; - } - -//normal chain, supply policy not in chain, should fail -CTestChainValidate* TestSpec::TestValidateSpec32() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iRootCerts->AppendL(KFortezzaPAA1); - ret->iServerCerts->AppendL(KFortezzaCA1EE1); - ret->iServerCerts->AppendL(KFortezzaCA1); - ret->iServerCerts->AppendL(KFortezzaPCA1); - ret->iPolicies->AppendL(KExtraBogusPolicy); - TValidationStatus* error = new(ELeave) TValidationStatus(ERequiredPolicyNotFound, 0); - ret->iError = error; - CleanupStack::Pop(); - return ret; - } - -//chain with policy mapping, supply first policy, should work -CTestChainValidate* TestSpec::TestValidateSpec33() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iRootCerts->AppendL(KFortezzaPAA1); - ret->iServerCerts->AppendL(KFortezzaCA2EE1); - ret->iServerCerts->AppendL(KFortezzaCA2); - ret->iServerCerts->AppendL(KFortezzaPCA2); - ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert); - ret->iPolicies->AppendL(KX22Policy); - TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = error; - CleanupStack::Pop(); - return ret; - } - -//chain with policy mapping, supply second policy, should work -CTestChainValidate* TestSpec::TestValidateSpec34() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iRootCerts->AppendL(KFortezzaPAA1); - ret->iServerCerts->AppendL(KFortezzaCA2EE1); - ret->iServerCerts->AppendL(KFortezzaCA2); - ret->iServerCerts->AppendL(KFortezzaPCA2); - ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert); - ret->iPolicies->AppendL(KRNPolicy); - TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); - ret->iError = error; - CleanupStack::Pop(); - return ret; - } - -//chain with policy mappng, supply different policy, should fail -CTestChainValidate* TestSpec::TestValidateSpec35() - { - CTestChainValidate* ret = CTestChainValidate::NewLC(); - ret->iRootCerts->AppendL(KFortezzaPAA1); - ret->iServerCerts->AppendL(KFortezzaCA2EE1); - ret->iServerCerts->AppendL(KFortezzaCA2); - ret->iServerCerts->AppendL(KFortezzaPCA2); - ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert); - ret->iPolicies->AppendL(KExtraBogusPolicy); - TValidationStatus* error = new(ELeave) TValidationStatus(ERequiredPolicyNotFound, 0); - ret->iError = error; - CleanupStack::Pop(); - return ret; - } +/* +* Copyright (c) 1998-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 "testspecs.h" + +//test chain superclass +CTestChain::CTestChain() + { + } + +CTestChain::~CTestChain() + { + delete iServerCerts; + delete iRootCerts; + delete iExtraCerts; + } + +void CTestChain::ConstructL() + { + iServerCerts = new(ELeave) CDesCArrayFlat (1); + iRootCerts = new(ELeave) CDesCArrayFlat (1); + iExtraCerts = 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() + { + CTestChainValidate* self = CTestChainValidate::NewLC(); + CleanupStack::Pop(); + return self; + } + +CTestChainValidate* CTestChainValidate::NewLC() + { + CTestChainValidate* self = new(ELeave) CTestChainValidate; + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +void CTestChainValidate::ConstructL() + { + CTestChain::ConstructL(); + iWarnings = new(ELeave)CArrayFixFlat (1); + iPolicies = new(ELeave) CDesCArrayFlat (1); + } + +CTestChainValidate::~CTestChainValidate() + { + delete iError; + delete iWarnings; + delete iPolicies; + }; + +//test specs +TestSpec::TestSpec() + { + } + +CTestChainBuild* TestSpec::TestBuildSpec1() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA1); + ret->iServerCerts->AppendL(KCA2); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec2() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA2); + ret->iServerCerts->AppendL(KCA1); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec3() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA1); + ret->iExtraCerts->AppendL(KCA2); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec4() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA2); + ret->iExtraCerts->AppendL(KCA1); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec5() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA1); + ret->iServerCerts->AppendL(KCA2); + ret->iServerCerts->AppendL(KRoot); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec6() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KRoot); + ret->iServerCerts->AppendL(KCA2); + ret->iServerCerts->AppendL(KCA1); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec7() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA1); + ret->iServerCerts->AppendL(KCA2SameDN); + ret->iServerCerts->AppendL(KCA2); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec8() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA2SameDN); + ret->iServerCerts->AppendL(KCA1); + ret->iServerCerts->AppendL(KCA2); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec9() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA1); + ret->iServerCerts->AppendL(KCA2SameDN); + ret->iExtraCerts->AppendL(KCA2); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec10() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA1); + ret->iServerCerts->AppendL(KCA2); + ret->iExtraCerts->AppendL(KCA2SameDN); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec11() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA2); + ret->iServerCerts->AppendL(KCA1); + ret->iExtraCerts->AppendL(KCA1SameDN); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +CTestChainBuild* TestSpec::TestBuildSpec12() + { + CTestChainBuild* ret = CTestChainBuild::NewLC(); + ret->iServerCerts->AppendL(KEE); + ret->iServerCerts->AppendL(KCA2); + ret->iServerCerts->AppendL(KCA1SameDN); + ret->iExtraCerts->AppendL(KCA1); + ret->iRootCerts->AppendL(KRoot); + const TPtrC name(KCorrectFile1); + ret->iCorrectChain = name.AllocL(); + CleanupStack::Pop(); + return ret; + } + +//validate tests +CTestChainValidate* TestSpec::TestValidateSpec1() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaCA1EE1); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaCA1); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec2() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaCA1EE2); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaCA1); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec3() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaExpired); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaCA1); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec4() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaFuture); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaCA1); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec5() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaInvalidSig); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaCA1); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(ESignatureInvalid, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec6() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaKeyCompromise); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaCA1); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec7() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaBadSubjName2); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaTestCA2); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(ENameIsExcluded, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec8() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaBadSubjName1); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaTestCA2); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(ENameNotPermitted, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +// +CTestChainValidate* TestSpec::TestValidateSpec9() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaPathLen); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaTestCA2); + ret->iServerCerts->AppendL(KFortezzaTestSubCA2); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(EPathTooLong, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec10() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaInvalidCAUser1); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaBadCA1); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(ENotCACert, 1); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec11() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaInvalidCAUser2); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iServerCerts->AppendL(KFortezzaBadCA2); + ret->iRootCerts->AppendL(KFortezzaPAA1); + TValidationStatus* status = new(ELeave) TValidationStatus(EBadKeyUsage, 1); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec12() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaCA2EE1); + ret->iServerCerts->AppendL(KFortezzaPCA2); + ret->iServerCerts->AppendL(KFortezzaCA2); + ret->iRootCerts->AppendL(KFortezzaPAA2); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec13() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFortezzaCA2BadAltName); + ret->iServerCerts->AppendL(KFortezzaPCA2); + ret->iServerCerts->AppendL(KFortezzaCA2); + ret->iRootCerts->AppendL(KFortezzaPAA2); + TValidationStatus* status = new(ELeave) TValidationStatus(ENameIsExcluded, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec14() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KDashnet); + ret->iRootCerts->AppendL(KRSASSCA); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + + +CTestChainValidate* TestSpec::TestValidateSpec15() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(K3Do); + ret->iRootCerts->AppendL(KRSASSCA); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec16() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KDashnet); + ret->iRootCerts->AppendL(KRSASSCA_OLD); + TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec17() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(K3Do); + ret->iRootCerts->AppendL(KRSASSCA_OLD); + TValidationStatus* status = new(ELeave) TValidationStatus(EDateOutOfRange, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec18() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KLloyds); + ret->iServerCerts->AppendL(KVSignServer3); + ret->iRootCerts->AppendL(KVSignCA3); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec19() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KRoot); + ret->iRootCerts->AppendL(KRoot); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec20() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KRoot); + ret->iRootCerts->AppendL(KVSignCA3); + TValidationStatus* status = new(ELeave) TValidationStatus(EChainHasNoRoot, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +//n.b. this test should leave with KErrArgument +CTestChainValidate* TestSpec::TestValidateSpec21() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + TValidationStatus* status = new(ELeave) TValidationStatus(EChainHasNoRoot, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec22() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KMedCA1EE1); + ret->iServerCerts->AppendL(KMedCA1); + ret->iRootCerts->AppendL(KMedRootCA); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec23() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KMedCA1EE2); + ret->iServerCerts->AppendL(KMedCA1); + ret->iRootCerts->AppendL(KMedRootCA); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +//FINEID test cases +CTestChainValidate* TestSpec::TestValidateSpec24() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFINEIDLipponenSign); + ret->iRootCerts->AppendL(KFINEIDCitizenCA); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec25() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFINEIDLipponenEncrypt); + ret->iRootCerts->AppendL(KFINEIDCitizenCA); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec26() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFINEIDHelsinkiSign); + ret->iRootCerts->AppendL(KFINEIDTestCA3); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec27() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KFINEIDHelsinkiEncrypt); + ret->iRootCerts->AppendL(KFINEIDTestCA3); + TValidationStatus* status = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = status; + CleanupStack::Pop(); + return ret; + } + +//test warning generated when cert not self signed +CTestChainValidate* TestSpec::TestValidateSpec28() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iServerCerts->AppendL(KLloyds); + ret->iRootCerts->AppendL(KVSignServer3);//not self signed + TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); + TValidationStatus warning(ERootCertNotSelfSigned, 0); + ret->iError = error; + ret->iWarnings->AppendL(warning); + CleanupStack::Pop(); + return ret; + } + +//test case with OpenSSL default certs +CTestChainValidate* TestSpec::TestValidateSpec29() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iRootCerts->AppendL(KApacheRSARoot); + ret->iServerCerts->AppendL(KApacheRSAServer); + TValidationStatus* error = new(ELeave) TValidationStatus(EDateOutOfRange, 0); + ret->iError = error; + CleanupStack::Pop(); + return ret; + } + +CTestChainValidate* TestSpec::TestValidateSpec30() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iRootCerts->AppendL(KApacheDSARoot); + ret->iServerCerts->AppendL(KApacheDSAServer); + TValidationStatus* error = new(ELeave) TValidationStatus(EDateOutOfRange, 0); + ret->iError = error; + CleanupStack::Pop(); + return ret; + } + +//normal chain, supply policy in chain, should work +CTestChainValidate* TestSpec::TestValidateSpec31() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iRootCerts->AppendL(KFortezzaPAA1); + ret->iServerCerts->AppendL(KFortezzaCA1EE1); + ret->iServerCerts->AppendL(KFortezzaCA1); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iPolicies->AppendL(KX22Policy); + TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = error; + CleanupStack::Pop(); + return ret; + } + +//normal chain, supply policy not in chain, should fail +CTestChainValidate* TestSpec::TestValidateSpec32() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iRootCerts->AppendL(KFortezzaPAA1); + ret->iServerCerts->AppendL(KFortezzaCA1EE1); + ret->iServerCerts->AppendL(KFortezzaCA1); + ret->iServerCerts->AppendL(KFortezzaPCA1); + ret->iPolicies->AppendL(KExtraBogusPolicy); + TValidationStatus* error = new(ELeave) TValidationStatus(ERequiredPolicyNotFound, 0); + ret->iError = error; + CleanupStack::Pop(); + return ret; + } + +//chain with policy mapping, supply first policy, should work +CTestChainValidate* TestSpec::TestValidateSpec33() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iRootCerts->AppendL(KFortezzaPAA1); + ret->iServerCerts->AppendL(KFortezzaCA2EE1); + ret->iServerCerts->AppendL(KFortezzaCA2); + ret->iServerCerts->AppendL(KFortezzaPCA2); + ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert); + ret->iPolicies->AppendL(KX22Policy); + TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = error; + CleanupStack::Pop(); + return ret; + } + +//chain with policy mapping, supply second policy, should work +CTestChainValidate* TestSpec::TestValidateSpec34() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iRootCerts->AppendL(KFortezzaPAA1); + ret->iServerCerts->AppendL(KFortezzaCA2EE1); + ret->iServerCerts->AppendL(KFortezzaCA2); + ret->iServerCerts->AppendL(KFortezzaPCA2); + ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert); + ret->iPolicies->AppendL(KRNPolicy); + TValidationStatus* error = new(ELeave) TValidationStatus(EValidatedOK, 0); + ret->iError = error; + CleanupStack::Pop(); + return ret; + } + +//chain with policy mappng, supply different policy, should fail +CTestChainValidate* TestSpec::TestValidateSpec35() + { + CTestChainValidate* ret = CTestChainValidate::NewLC(); + ret->iRootCerts->AppendL(KFortezzaPAA1); + ret->iServerCerts->AppendL(KFortezzaCA2EE1); + ret->iServerCerts->AppendL(KFortezzaCA2); + ret->iServerCerts->AppendL(KFortezzaPCA2); + ret->iServerCerts->AppendL(KFortezzaX22RNCrossCert); + ret->iPolicies->AppendL(KExtraBogusPolicy); + TValidationStatus* error = new(ELeave) TValidationStatus(ERequiredPolicyNotFound, 0); + ret->iError = error; + CleanupStack::Pop(); + return ret; + }