diff -r 9f4e37332ce5 -r 473321461bba vpnengine/ikev1lib/src/credentialcache.cpp --- a/vpnengine/ikev1lib/src/credentialcache.cpp Thu Aug 19 10:54:34 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,260 +0,0 @@ - /* -* Copyright (c) 2010 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: Cache for authentication credentials -* -*/ - -#include - -#include "credentialcache.h" -#include "ikedebug.h" -#include "cmutils.h" - - -_LIT( KFileName, "cache" ); - - -CCredentialCache* CCredentialCache::NewL( MIkeDebug& aDebug ) -{ - CCredentialCache* cache = new (ELeave) CCredentialCache( aDebug ); - - CleanupStack::PushL( cache ); - - cache->ConstructL(); - - CleanupStack::Pop(); - - return cache; -} - - -CCredentialCache::CCredentialCache( MIkeDebug& aDebug ) - : iDebug( aDebug ) -{ -} - - -void CCredentialCache::ConstructL() -{ - User::LeaveIfError( iFs.Connect() ); - - DEBUG_LOG( _L( "CCredentialCache::ConstructL" ) ); -} - - -CCredentialCache::~CCredentialCache() -{ - iFs.Close(); -} - - -void CCredentialCache::SetUserName( const TDesC8& aUser ) -{ - if( KErrNone != CheckCredential( aUser ) ) - { - return; - } - - iBuf.iUser.Copy( aUser ); -} - - -void CCredentialCache::SetSecret( const TDesC8& aSecret ) -{ - if( KErrNone != CheckCredential( aSecret ) ) - { - return; - } - - iBuf.iSecret.Copy( aSecret ); -} - - -TInt CCredentialCache::GetCredentials( - const TUint32 aVpnApId, HBufC8*& aUser, HBufC8*& aSecret ) -{ - TInt ret = KErrNone; - - TRAPD( err, ret = GetCredentialsL( aVpnApId, aUser, aSecret ) ); - - if( KErrNone != err ) - { - DEBUG_LOG1( _L("CCredentialCache::GetCredentials, err=%d"), err ); - return err; - } - - return ret; -} - - -TInt CCredentialCache::GetCredentialsL( - const TUint32 aVpnApId, HBufC8*& aUser, HBufC8*& aSecret ) -{ - TInt ret = ReadFile(); - - if( KErrNone != ret ) - { - return ret; - } - - TVpnPolicyId id; - - CmUtils::GetPolicyIdL( aVpnApId, id ); - - if( id != iBuf.iId ) - { - DEBUG_LOG1( - _L("CCredentialCache::GetCredentialsL, pol=%S"), &iBuf.iId - ); - - return KErrNotFound; - } - - aUser = iBuf.iUser.AllocL(); - aSecret = iBuf.iSecret.AllocL(); - - return KErrNone; -} - - -void CCredentialCache::Store( const TUint32 aVpnApId ) -{ - TRAPD( err, StoreL( aVpnApId ) ); - - if( KErrNone != err ) - { - DEBUG_LOG1( _L("CCredentialCache::Store, err=%d"), err ); - } -} - - -void CCredentialCache::StoreL( const TUint32 aVpnApId ) -{ - CmUtils::GetPolicyIdL( aVpnApId, iBuf.iId ); - - StoreToFileL(); -} - - -void CCredentialCache::Clear() -{ - TInt ret = CreateFileNameAndPath(); - - if( KErrNone != ret ) - { - return; - } - - ret = iFs.Delete( iFileName ); - - if( KErrNone != ret ) - { - DEBUG_LOG1( _L("CCredentialCache::Clear, ret=%d"), ret ); - } -} - - -TInt CCredentialCache::CheckCredential( const TDesC8& cr ) -{ - TInt len = cr.Length(); - - if( 0 == len || KCredentialMaxLen < len ) - { - DEBUG_LOG1( _L("CCredentialCache::CheckCredential, len=%d"), len ); - return KErrArgument; - } - - return KErrNone; -} - - -void CCredentialCache::StoreToFileL() -{ - RFile cache; - - User::LeaveIfError( CreateFileNameAndPath() ); - - User::LeaveIfError( cache.Replace( - iFs, iFileName, EFileShareExclusive | EFileWrite - ) ); - - CleanupClosePushL( cache ); - - TPckg< TCacheBuffer > data( iBuf ); - - User::LeaveIfError( cache.Write( data ) ); - - CleanupStack::PopAndDestroy( &cache ); -} - - -TInt CCredentialCache::ReadFile() -{ - RFile cache; - - TInt ret = cache.Open( iFs, KFileName, EFileRead ); - - if( KErrNone != ret ) - { - return ret; - } - - TInt size = 0; - - ret = cache.Size( size ); - - TPckg< TCacheBuffer > data( iBuf ); - - if( size != data.Size() ) - { - DEBUG_LOG1( _L("CCredentialCache::ReadFile, size=%d"), size ); - cache.Close(); - Clear(); - return KErrCorrupt; - } - - ret = cache.Read( data ); - - cache.Close(); - - return ret; -} - - -TInt CCredentialCache::CreateFileNameAndPath() -{ - TInt ret = iFs.CreatePrivatePath( RFs::GetSystemDrive() ); - - if( KErrNone != ret && - KErrAlreadyExists != ret ) - { - DEBUG_LOG1( _L("CCredentialCache, CreatePrivatePath ret=%d"), ret ); - return ret; - } - - ret = iFs.PrivatePath( iFileName ); - - if( KErrNone != ret ) - { - DEBUG_LOG1( _L("CCredentialCache, PrivatePath ret=%d"), ret ); - return ret; - } - - iFileName.Append( KFileName ); - - return KErrNone; -} - - -/***/