diff -r 000000000000 -r af10295192d8 networksecurity/tlsprovider/Test/src/tlstest2servercertstep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networksecurity/tlsprovider/Test/src/tlstest2servercertstep.cpp Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,126 @@ +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "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 "tlstest2servercertstep.h" + +#include +#include + +CServerCertStep::CServerCertStep() + { + SetTestStepName(KServerCertStep); + } + +CServerCertStep::~CServerCertStep() + { + delete iProvider; + } + +TVerdict CServerCertStep::doTestStepL() + { + // Load the server certificate to use for this test + TPtrC serverCertName; + if (!GetStringFromConfig(ConfigSection(), KServerCert, serverCertName)) + { + Logger().Write(_L("Failed to read server certificate file from ini.")); + SetTestStepResult(EFail); + return TestStepResult(); + } + + Logger().WriteFormat(_L("Using server certificate file '%S'."), &serverCertName); + + RFs fs; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + + RFile certFile; + User::LeaveIfError(certFile.Open(fs, serverCertName, EFileRead)); + CleanupClosePushL(certFile); + + TInt size(0); + User::LeaveIfError(certFile.Size(size)); + HBufC8* certData = HBufC8::NewLC(size); + TPtr8 ptr = certData->Des(); + + User::LeaveIfError(certFile.Read(ptr, size)); + + TPtrC domainName; + if (!GetStringFromConfig(ConfigSection(), KDomainName, domainName)) + { + Logger().Write(_L("Failed to read domain name from ini.")); + SetTestStepResult(EFail); + return TestStepResult(); + } + + Logger().WriteFormat(_L("Using domain name '%S'."), &domainName); + Logger().Write(_L("Connecting to TLS provider.")); + + CActiveScheduler* sched=NULL; + sched=new(ELeave) CActiveScheduler; + CleanupStack::PushL(sched); + CActiveScheduler::Install(sched); + + iProvider = CTLSProvider::ConnectL(); + + Logger().Write(_L("Setting TLS Parameters.")); + + CTlsCryptoAttributes* atts = iProvider->Attributes(); + // set non-attended mode. + atts->iDialogNonAttendedMode = ETrue; + // set the domain name + atts->idomainName.Copy(domainName); + + Logger().Write(_L("Running verify step.")); + CX509Certificate* cert = CX509Certificate::NewLC(*certData); + + CGenericActive* active = new (ELeave) CGenericActive; + + iProvider->VerifyServerCertificate(*certData, cert, active->iStatus); + active->Start(); + CActiveScheduler::Start(); + + TInt result = active->iStatus.Int(); + delete active; + + Logger().WriteFormat(_L("Certificate Validation Result Was: %d."), result); + + TInt expectedResult; + + if (!GetIntFromConfig(ConfigSection(), KExpectedResult, expectedResult)) + { + Logger().Write(_L("Failed to get expected result from config, assuming KErrNone.")); + expectedResult = KErrNone; + } + else + { + Logger().WriteFormat(_L("Expected Validation Result Was: %d."), expectedResult); + } + + if (result == expectedResult) + { + Logger().Write(_L("Test step passed.")); + SetTestStepResult(EPass); + } + else + { + Logger().Write(_L("Test step failed.")); + SetTestStepResult(EFail); + } + + CActiveScheduler::Install(NULL); + CleanupStack::PopAndDestroy(5, &fs); // certFile, certData, cert, sched + return TestStepResult(); + }