networksecurity/tlsprovider/Test/src/TlsProvTestSteps9.cpp
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networksecurity/tlsprovider/Test/src/TlsProvTestSteps9.cpp	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,223 @@
+
+// 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 "TlsProvTestStep.h"
+#include <test/testexecutelog.h>
+#include <hash.h>
+
+	
+TVerdict CTlsProvTestActive::doTest9_0L( CTlsProvStep* aStep )
+	{
+	
+	CTlsTestRandom rnd;
+	
+	SetThreadRandomL( &rnd );
+	
+	RArray<TTLSCipherSuite> userCipherSuiteList;
+	CTLSProvider* tlsProvider = CTLSProvider::ConnectL();
+	
+	iStatus = KRequestPending;
+	tlsProvider->CipherSuitesL( userCipherSuiteList ,iStatus);	
+	SetActive();
+	CActiveScheduler::Start();
+	
+			
+	CTLSSession* sessionObj;
+	
+	CTlsCryptoAttributes* tlsCryptoAttributes = tlsProvider->Attributes();
+			
+	HBufC8* encServerCert = NULL;
+			
+	TInt res = StandardTestInitL(aStep, tlsCryptoAttributes, encServerCert);
+	if( res  < 0 )
+		{
+		iLogInfo.Copy( _L("	9.0:  problems with test data files") );
+		return EFail;
+		}
+		
+	CX509Certificate* serverCert = NULL;
+	iStatus = KRequestPending;
+	tlsProvider->VerifyServerCertificate( encServerCert->Des(), serverCert, iStatus);
+	tlsProvider->CancelRequest();
+	
+	iStatus = KRequestPending;
+	tlsProvider->VerifyServerCertificate( encServerCert->Des(), serverCert, iStatus);
+	SetActive();
+	CActiveScheduler::Start();
+	
+		
+	HBufC8* clientKeyExch = NULL;
+	
+	tlsProvider->CreateL( sessionObj,
+						iStatus);	
+	SetActive();
+	CActiveScheduler::Start();	
+	
+	// check that ClientKeyExch is not NULL
+	if ( (iStatus.Int() != KErrNone ) || (NULL == sessionObj) )
+		{
+		iLogInfo.Copy( _L("	9.0:  CTLSProvider::Create failed") );
+		return EInconclusive;
+		}
+		
+		
+	iStatus = KRequestPending;
+	sessionObj->ClientKeyExchange(clientKeyExch, iStatus);
+	sessionObj->CancelRequest();
+	
+	
+	sessionObj->ClientKeyExchange(clientKeyExch, iStatus);
+	SetActive();
+	CActiveScheduler::Start();
+	
+	// check that ClientKeyExch is not NULL
+	if ( (NULL == clientKeyExch) || ( 0 == clientKeyExch->Length()) ) 
+		{
+		iLogInfo.Copy( _L("	9.0:  CTLSSession::ClientKeyExchange failed") );
+		return EInconclusive;
+		}
+		
+	HBufC8* verifySrvFinInput = NULL;
+	HBufC8* finshedMsg = NULL;
+	
+	res = aStep->ReadDataForSrvFinishedL(verifySrvFinInput, finshedMsg);
+		if( res  < 0 )
+		{
+		iLogInfo.Copy( _L("	9.0:  problems with test data files (for server finished check)") );
+		return EFail;
+		}
+	
+	CMessageDigest* md5Dig = NULL;
+	CMessageDigest* shaDig = NULL;
+	
+	md5Dig = CMD5::NewL(); 
+	CleanupStack::PushL( md5Dig );
+	shaDig = CSHA1::NewL(); 
+	CleanupStack::PushL( shaDig );
+						
+	md5Dig->Reset();
+	md5Dig->Update( verifySrvFinInput->Des() );
+			
+	shaDig->Reset();
+	shaDig->Update( verifySrvFinInput->Des() );
+			
+			
+	iStatus = KRequestPending;
+	sessionObj->VerifyServerFinishedMsgL( 
+		md5Dig,
+		shaDig,
+		finshedMsg->Des(), 
+		iStatus) ;
+	SetActive();
+	CActiveScheduler::Start();
+	
+				
+	CleanupStack::PopAndDestroy( 2, md5Dig );
+	if ( iStatus.Int() != KErrNone )
+		{
+		iLogInfo.Copy( _L("	9.0:  CTLSSession::VerifyServerFinishedMsgL failed") );
+		return EInconclusive;
+		}
+			
+	
+	RArray<TTLSCipherSuite> userCipherSuiteList2;
+	CTLSProvider* tlsProvider2 = CTLSProvider::ConnectL();
+	
+		
+	iStatus = KRequestPending;
+	tlsProvider2->CipherSuitesL( userCipherSuiteList2 ,iStatus);	
+	SetActive();
+	CActiveScheduler::Start();
+	
+			
+	CTLSSession* sessionObj2;
+	
+	CTlsCryptoAttributes* tlsCryptoAttributes2 = tlsProvider2->Attributes();
+			
+	HBufC8* encServerCert2 = NULL;
+			
+	res = StandardTestInitL(aStep, tlsCryptoAttributes2, encServerCert2);
+	if( res  < 0 )
+		{
+		iLogInfo.Copy( _L("	9.0:  problems with test data files (2)") );
+		return EFail;
+		}		
+	
+	iStatus = KRequestPending;
+	tlsProvider2->CreateL( sessionObj2,
+						iStatus);	
+	SetActive();
+	CActiveScheduler::Start();	
+	
+	// check that ClientKeyExch is not NULL
+	if ( (iStatus.Int() != KErrNone ) || (NULL == sessionObj) )
+		{
+		iLogInfo.Copy( _L("	9.0:  CTLSProvider::Create failed (2)") );
+		return EInconclusive;
+		}
+	iStatus = KRequestPending;
+	CX509Certificate* cert;
+	sessionObj2->ServerCertificate( cert, iStatus );
+	sessionObj2->CancelRequest();
+		
+	TTLSSessionNameAndID sessionNameAndId;
+	
+	sessionNameAndId.iServerName.iAddress.Copy( KServer1 );
+	sessionNameAndId.iServerName.iPort = 10;
+	sessionNameAndId.iSessionId.Append( KSessionId1 );
+	
+	
+	iStatus = KRequestPending;
+	tlsProvider2->ClearSessionCacheL( 
+			sessionNameAndId, 
+			iStatus);
+	tlsProvider2->CancelRequest();
+	
+	
+	TTLSSessionId sessionId;
+	
+	iStatus = KRequestPending;
+	tlsProvider->GetSessionL(
+		tlsCryptoAttributes->iSessionNameAndID.iServerName,
+		sessionId,
+		iStatus );
+	tlsProvider->CancelRequest();
+	
+			
+	iStatus = KRequestPending;
+	tlsProvider->GetSessionL(
+		tlsCryptoAttributes->iSessionNameAndID.iServerName,
+		sessionId,
+		iStatus );
+	SetActive();
+	CActiveScheduler::Start();
+	
+	
+	
+	if ( KErrNone != iStatus.Int() )
+		{
+		iLogInfo.Copy( _L("	9.0:  CTLSProvider::GetSession - returned with error") );
+		return EFail;
+		}
+	
+			
+		
+	iLogInfo.Copy( _L("	9.0:  OK") );
+	
+			
+	return EPass;
+	
+	}