diff -r 000000000000 -r af10295192d8 networksecurity/tlsprovider/Test/ttlsoom/tlsoomkeyexchangestep.cpp --- /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 + + +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 + + }