diff -r 000000000000 -r af10295192d8 networksecurity/tlsprovider/Test/ttlsoom/tlsoomstepbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networksecurity/tlsprovider/Test/ttlsoom/tlsoomstepbase.cpp Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,171 @@ +// 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 "tlsoomstepbase.h" + +#include + +TVerdict CTlsOOMStepBase::Start() + { + + for (TInt i = 1; i < KMaxOOMSteps; i++) + { + + __UHEAP_MARK; + __UHEAP_FAILNEXT(i); + + TRAPD(err, DoTestStepL()); + + __UHEAP_MARKEND; + __UHEAP_RESET; + + if (err == KErrNone && iStatus == KErrNone) + { + + return EPass; + + } + + + } + + return EFail; + + } + +void CTlsOOMStepBase::RunL() + { + CActiveScheduler::Stop(); + } + +CTlsOOMStepBase::CTlsOOMStepBase(CTestExecuteLogger& aLogger, const TDesC& aConfigPath) + : CActive(EPriorityStandard), + iLogger(aLogger), + iConfigPath(aConfigPath) + { + CActiveScheduler::Add(this); + } + +void CTlsOOMStepBase::DoCancel() + { + } + +// Leaves the tlsprovider and certificate on the stack +// the attributes become owned by the provider. + +void CTlsOOMStepBase::InitTlsProviderLC(CTLSProvider*& aTlsProvider, CTlsCryptoAttributes*& aCryptoAttributes, + HBufC8*& aServerCert) + { + + aTlsProvider = CTLSProvider::ConnectL(); + CleanupStack::PushL(aTlsProvider); + + RArray userCipherSuites; + CleanupClosePushL(userCipherSuites); + iStatus = KRequestPending; + aTlsProvider->CipherSuitesL(userCipherSuites, iStatus); + SetActive(); + CActiveScheduler::Start(); + TInt err = (0 == userCipherSuites.Count()) ? KErrNotSupported : KErrNone; + User::LeaveIfError(err); + CleanupStack::PopAndDestroy(&userCipherSuites); + + aCryptoAttributes = aTlsProvider->Attributes(); + + RFs fs; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + + // Read server random + + static const TInt KRandomDataLen = 32; + + TBuf8 input; + _LIT(KServerRandomFileName, "server.rnd"); + ReadFileDataL(input, KServerRandomFileName, fs); + aCryptoAttributes->iMasterSecretInput.iServerRandom.Copy(input.Ptr(), KRandomDataLen); + + // Read Client Random + input.Zero(); + _LIT(KClientRandomFileName, "client.rnd"); + ReadFileDataL(input, KClientRandomFileName, fs); + aCryptoAttributes->iMasterSecretInput.iClientRandom.Copy(input.Ptr(), KRandomDataLen); + + // Read server key parameters + + TBuf8<1000> paramInput; + _LIT(KParamFileFormat, "keyparam%d.prm"); + + TBuf<14> paramFile; + + for (TInt i = 1; i <= 3; i++) + { + + paramFile.Format(KParamFileFormat, i); + ReadFileDataL(paramInput, paramFile, fs); + + switch (i) + { + case 1: + aCryptoAttributes->iPublicKeyParams->iValue1 = paramInput.AllocL(); + break; + case 2: + aCryptoAttributes->iPublicKeyParams->iValue2 = paramInput.AllocL(); + break; + case 3: + aCryptoAttributes->iPublicKeyParams->iValue3 = paramInput.AllocL(); + break; + } + + paramInput.Zero(); + + } + + aCryptoAttributes->iPublicKeyParams->iKeyType = ERsa; + + // Read server certificate + + TBuf8<1000> certInput; + _LIT(KCertFileName, "server.cer"); + ReadFileDataL(certInput, KCertFileName, fs); + + aServerCert = certInput.AllocL(); + + CleanupStack::PopAndDestroy(&fs); + CleanupStack::PushL(aServerCert); + + } + +void CTlsOOMStepBase::ReadFileDataL(TDes8& aDest, const TDesC& aFileName, RFs& aFileServer) + { + + TPath fileName; + RFile file; + _LIT(KFileNameFormat, "%S\\%S"); + + fileName.Format(KFileNameFormat, &iConfigPath, &aFileName); + + User::LeaveIfError(file.Open(aFileServer, fileName, EFileRead)); + CleanupClosePushL(file); + + User::LeaveIfError(file.Read(aDest)); + + CleanupStack::PopAndDestroy(&file); + + }