networksecurity/tlsprovider/Test/ttlsoom/tlsoomkeyexchangestep.cpp
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networksecurity/tlsprovider/Test/ttlsoom/tlsoomkeyexchangestep.cpp	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,107 @@
+// Copyright (c) 2005-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:
+//
+
+/**
+ @file
+*/
+
+#include "tlsoomkeyexchangestep.h"
+
+#include <x509cert.h>
+
+
+CTlsOOMKeyExchangeStep* CTlsOOMKeyExchangeStep::NewL(const TDesC& aConfigPath, const TDesC& aServerName,
+	const TDesC& aSessionID, CTestExecuteLogger& aLogger)
+	{
+	
+	CTlsOOMKeyExchangeStep* self = new (ELeave) CTlsOOMKeyExchangeStep(aConfigPath, aServerName, aSessionID, aLogger);
+	return self;
+	
+	}
+	
+CTlsOOMKeyExchangeStep::CTlsOOMKeyExchangeStep(const TDesC& aConfigPath, const TDesC& aServerName, 
+	const TDesC& aSessionID, CTestExecuteLogger& aLogger)
+	: CTlsOOMStepBase(aLogger, aConfigPath),
+	  iSessionID(aSessionID),
+	  iServerName(aServerName)
+	{
+	}
+	
+void CTlsOOMKeyExchangeStep::DoTestStepL()
+	{
+	
+	CTLSProvider* tlsProvider;
+	CTLSSession* tlsSession;
+	CTlsCryptoAttributes* tlsAttributes;
+	HBufC8* serverCert;
+	
+	InitTlsProviderLC(tlsProvider, tlsAttributes, serverCert);
+	
+	TTLSCipherSuite cipherSuite;
+	cipherSuite.iHiByte = 0;
+	cipherSuite.iLoByte = 3;
+	
+	tlsAttributes->iClientAuthenticate = EFalse;
+	tlsAttributes->iDialogNonAttendedMode = ETrue;
+	tlsAttributes->iCurrentCipherSuite = cipherSuite;
+	
+	tlsAttributes->iSessionNameAndID.iServerName.iAddress.Copy(iServerName);
+	tlsAttributes->iSessionNameAndID.iServerName.iPort = 10;
+	tlsAttributes->iSessionNameAndID.iSessionId.Append(iSessionID);
+	 
+	tlsAttributes->iCompressionMethod = ENullCompression;
+		
+	tlsAttributes->iNegotiatedProtocol.iMajor = 3;
+	tlsAttributes->iNegotiatedProtocol.iMinor = 1; 
+	tlsAttributes->iProposedProtocol.iMajor = 3;
+	tlsAttributes->iProposedProtocol.iMinor = 1; 
+		
+	tlsAttributes->iPublicKeyParams->iKeyType = ERsa;
+	
+	CX509Certificate* serverCertObj;
+	iStatus = KRequestPending;
+	tlsProvider->VerifyServerCertificate(*serverCert, serverCertObj, iStatus);
+	CleanupStack::PushL(serverCertObj);
+	SetActive();
+	CActiveScheduler::Start();
+	
+	if (iStatus != KErrNone)
+		{
+		User::Leave(iStatus.Int());
+		}
+	
+	iStatus = KRequestPending;
+	tlsProvider->CreateL(tlsSession, iStatus);
+	CleanupStack::PushL(tlsSession);
+	SetActive();
+	CActiveScheduler::Start();
+	
+	// leave if the status is failure
+	if (iStatus != KErrNone)
+		{
+		User::Leave(iStatus.Int());
+		}
+	
+	HBufC8* clientKeyExch;
+	
+	iStatus = KRequestPending;
+	tlsSession->ClientKeyExchange(clientKeyExch, iStatus);
+	CleanupStack::PushL(clientKeyExch);
+	SetActive();
+	CActiveScheduler::Start();
+	
+	CleanupStack::PopAndDestroy(5, tlsProvider); //serverCert, tlsSession, clientKeyExchange, serverCertObj
+	
+	}