networksecurity/tlsprovider/Test/src/tlstest2servercertstep.cpp
changeset 0 af10295192d8
--- /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 <test/testexecutelogger.h>
+#include <f32file.h>
+
+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();
+	}