--- /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;
+
+ }