diff -r 6385c4c93049 -r 8e6fa1719340 pushmtm/MtmUtilSrc/PushAuthenticationUtilitiesWL.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pushmtm/MtmUtilSrc/PushAuthenticationUtilitiesWL.cpp Wed Sep 01 12:31:04 2010 +0100 @@ -0,0 +1,147 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Authentication utilities using White List. +* +*/ + + + +// INCLUDE FILES + +#include "PushAuthenticationUtilities.h" +#include "PushInitiatorList.h" +#include "PushInitiator.h" +#include "PushMtmSettings.h" +#include "PushMtmUtilPanic.h" +#include "PushMtmLog.h" +#include +#include + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// TPushAuthenticationUtil::AuthenticateMsgL +// --------------------------------------------------------- +// +EXPORT_C TBool TPushAuthenticationUtil::AuthenticateMsgL + ( + const CPushMtmSettings& aMtmSettings, + const CPushMessage& aPushMsg + ) + { + PUSHLOG_ENTERFN("TPushAuthenticationUtil::AuthenticateMsgL") + + // In case of white listing by default do not accept messages. + TBool msgAuthenticated = EFalse; + + // Get server address. + TPtrC8 srvAddress; + if ( !aPushMsg.GetServerAddress( srvAddress ) ) + { + srvAddress.Set( KNullDesC8 ); + } + + if ( srvAddress.Length() == 0 ) + { + PUSHLOG_WRITE(" No Server address") + } + else + { + PUSHLOG_WRITE_FORMAT(" Server address: <%S>",&srvAddress) + + CPushInitiator* sender = new (ELeave) CPushInitiator; + CleanupStack::PushL( sender ); + + // Copy the 8-bit text into a 16-bit one. + HBufC* from = HBufC::NewMaxLC( srvAddress.Length() ); + + from->Des().Copy( srvAddress ); + sender->SetAddressL( *from, CPushInitiator::ETypeAny ); + + CleanupStack::PopAndDestroy( from ); // from + + CPushInitiatorList& whiteList = aMtmSettings.PushInitiatorList(); + TInt index( 0 ); + TInt err = whiteList.Find( *sender, index ); + if ( !err ) + { + // Sender is in White list. + msgAuthenticated = ETrue; + PUSHLOG_WRITE(" Is in White List: msg accepted") + } + + CleanupStack::PopAndDestroy( sender ); // sender + } + + PUSHLOG_WRITE_FORMAT(" msgAuthenticated <%d>",msgAuthenticated) + PUSHLOG_LEAVEFN("TPushAuthenticationUtil::AuthenticateMsgL") + return msgAuthenticated; + } + +// --------------------------------------------------------- +// TPushAuthenticationUtil::AuthenticateMsgL +// --------------------------------------------------------- +// +EXPORT_C TBool TPushAuthenticationUtil::AuthenticateMsgL + ( + const CPushMtmSettings& aMtmSettings, + const CPushMsgEntryBase& aPushMsg + ) + { + PUSHLOG_ENTERFN("TPushAuthenticationUtil::AuthenticateMsgL 2") + + // In case of white listing by default do not accept messages. + TBool msgAuthenticated = EFalse; + + // Get server address. + TPtrC8 srvAddress = aPushMsg.From(); + + if ( srvAddress.Length() == 0 ) + { + PUSHLOG_WRITE(" Empty server address") + } + else + { + PUSHLOG_WRITE_FORMAT(" Server address: <%S>",&srvAddress) + + CPushInitiator* sender = new (ELeave) CPushInitiator; + CleanupStack::PushL( sender ); + + // Copy the 8-bit text into a 16-bit one. + HBufC* from = HBufC::NewMaxLC( srvAddress.Length() ); + + from->Des().Copy( srvAddress ); + sender->SetAddressL( *from, CPushInitiator::ETypeAny ); + + CleanupStack::PopAndDestroy( from ); // from + + CPushInitiatorList& whiteList = aMtmSettings.PushInitiatorList(); + TInt index( 0 ); + TInt err = whiteList.Find( *sender, index ); + if ( !err ) + { + // Sender is in White list. + msgAuthenticated = ETrue; + PUSHLOG_WRITE(" Is in White List: msg accepted") + } + + CleanupStack::PopAndDestroy( sender ); // sender + } + + PUSHLOG_WRITE_FORMAT(" msgAuthenticated <%d>",msgAuthenticated) + PUSHLOG_LEAVEFN("TPushAuthenticationUtil::AuthenticateMsgL 2") + return msgAuthenticated; + } + +// End of file.