diff -r 7d88c1eb7da3 -r 751cd8585b82 deviceupdatesui/cpqtsp/src/CWPBioControl.cpp --- a/deviceupdatesui/cpqtsp/src/CWPBioControl.cpp Fri Jun 11 16:23:35 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,312 +0,0 @@ -/* -* 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 "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: -* Bio control for Provisioning documents. -* -*/ - -// INCLUDE FILES -#include "CWPBioControl.h" -#include -#include -#include -#include -#include -#include "CWPEngine.h" -#include "CWPAdapter.h" -#include "MWPPhone.h" -#include "WPPhoneFactory.h" -#include "CWPPushMessage.h" -#include "ProvisioningUIDs.h" -#include "MWPContextManager.h" -#include "ProvisioningDebug.h" -#include "CWPNameValue.h" -#include -#include "ProvisioningInternalCRKeys.h" - -// CONSTANTS -/// Maximum length of PIN code -const TInt KMaxPinSize = 20; -/// Number of retries for PIN -// const TInt KPinRetries = 3; // Removed, because iMtmData1 data member of TMsvEntry in CWPMessage.cpp contains Max tries, default=3. -///NONE -_LIT(KNone,""); - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// Constructor. -// ----------------------------------------------------------------------------- -// -CWPBioControl::CWPBioControl(CMsvSession* aSession,TMsvId aId) - - { - } - -// ----------------------------------------------------------------------------- -// CWPBioControl::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CWPBioControl::ConstructL(CMsvSession* aSession,TMsvId aId) - { - FLOG( _L( "[ProvisioningBC] CWPBioControl::ConstructL:" ) ); - FeatureManager::InitializeLibL(); - iSession = aSession; - iId = aId; - iEngine = CWPEngine::NewL(); - RestoreMsgL(); - FLOG( _L( "[ProvisioningBC] CWPBioControl::ConstructL: done" ) ); - } - -// ----------------------------------------------------------------------------- -// CWPBioControl::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -EXPORT_C CWPBioControl* CWPBioControl::NewL(CMsvSession* aSession,TMsvId aId) - { - CWPBioControl* self = new( ELeave ) CWPBioControl(aSession,aId); - CleanupStack::PushL( self ); - self->ConstructL(aSession,aId); - CleanupStack::Pop(); - return self; - } -// ----------------------------------------------------------------------------- -// CWPBioControl::returnEngine -// Return CWPEngine pointer -// ----------------------------------------------------------------------------- -// -EXPORT_C CWPEngine* CWPBioControl::returnEngine() - { - return iEngine; - } - -// ----------------------------------------------------------------------------- -// Destructor -// ----------------------------------------------------------------------------- -CWPBioControl::~CWPBioControl() - { - delete iEngine; - delete iMessage; - FeatureManager::UnInitializeLib(); - } -// ---------------------------------------------------------------------------- -// CWPBioControl ::RestoreMsgL -// ---------------------------------------------------------------------------- -// -void CWPBioControl::RestoreMsgL() - { - CMsvEntry* entry = iSession->GetEntryL(iId); - CleanupStack::PushL( entry ); - TMsvEntry tentry( entry->Entry() ); - iMessage = CWPPushMessage::NewL(); - CMsvStore* readStore = entry->ReadStoreL(); - CleanupStack::PushL( readStore ); - iMessage->RestoreL( *readStore ); - CleanupStack::PopAndDestroy(); // readStore - - TRAPD( result, iEngine->ImportDocumentL( iMessage->Body() ) ); - if( result == KErrCorrupt ) - { - //result = KErrMsgBioMessageNotValid; - } - FTRACE(RDebug::Print(_L("[ProvisioningBC] CWPBioControl::RestoreMsgL result (%d)"), result)); - User::LeaveIfError( result ); - - TBool preAuthenticated( iMessage->Authenticated() ); - // If the message was not authenticated, give a warning - AuthenticateL( *iMessage ); - if( !tentry.ReadOnly() && preAuthenticated != iMessage->Authenticated() ) - { - // If the entry can be written to, get its edit store and save - // authentication flag. Failing is not dangerous, as the only - // effect is that the user has to re-enter the PIN. - // FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 4 " ) ); - TRAPD( ignoreError, SaveMessageL() ); - if ( ignoreError ) ignoreError = 0; // prevent compiler warning - } - - iEngine->PopulateL(); - if( iEngine->ItemCount() == 0 ) - { - FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 7 " ) ); - } - - TPtrC8 orig8( iMessage->Originator() ); - HBufC* orig16 = HBufC::NewLC( orig8.Length() ); - orig16->Des().Copy( orig8 ); - FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 8 " ) ); - if( iMessage->Authenticated() - && iEngine->ContextExistsL( *orig16 ) ) - { - TUint32 context( iEngine->ContextL( *orig16 ) ); - iEngine->SetCurrentContextL( context ); - } - else - { - iEngine->SetCurrentContextL( KWPMgrUidNoContext ); - } - - - CleanupStack::PopAndDestroy(2); - FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL done" ) ); - } - -// ---------------------------------------------------------------------------- -// CWPBioControl ::AuthenticateL -// ---------------------------------------------------------------------------- -// -void CWPBioControl::AuthenticateL( CWPPushMessage& aMessage ) - { - if( !aMessage.Authenticated() ) - { - MWPPhone* phone = NULL; - TBuf imsi; - TRAPD(err, phone = WPPhoneFactory::CreateL()); - if(err!=KErrNone) - { - imsi = KNone; - } - else - { - imsi = phone->SubscriberId(); - } - CWPBootstrap* bootstrap = CWPBootstrap::NewL( imsi ); - if(phone) - delete phone; - - CleanupStack::PushL( bootstrap ); - CWPBootstrap::TBootstrapResult result( bootstrap->BootstrapL(aMessage,*iEngine,KNullDesC ) ); - if( result == CWPBootstrap::EPinRequired ) - { - CMsvEntry* entry = iSession->GetEntryL(iId); - TInt count = (entry->Entry()).MtmData1(); - TInt ipin = 1234; - TBuf pin; - pin.AppendNum(ipin); - result = bootstrap->BootstrapL( aMessage, *iEngine, pin ); - CleanupStack::PopAndDestroy( bootstrap ); - } - } - if (aMessage.Authenticated() ) - { - //update Cenrep key - TBuf8<100> orig; - orig.Copy(aMessage.Originator()); - TRAPD(err, SetCenrepKeyL(orig)); - User::LeaveIfError(err); - - } - } -// ---------------------------------------------------------------------------- -// CWPBioControl ::SaveMessageL -// ---------------------------------------------------------------------------- -// -void CWPBioControl::SaveMessageL() - { - CMsvEntry* entry = iSession->GetEntryL(iId); - CleanupStack::PushL( entry ); - - CMsvStore* editStore = entry->EditStoreL(); - CleanupStack::PushL( editStore ); - iMessage->StoreL( *editStore ); - editStore->CommitL(); - CleanupStack::PopAndDestroy(2); // editStore, entry - } - -// ---------------------------------------------------------------------------- -// CWPBioControl ::CollectItemsL -// ---------------------------------------------------------------------------- -// -EXPORT_C RPointerArray* CWPBioControl::CollectItemsLC() const - { - RPointerArray* array = new(ELeave) RPointerArray; - CleanupStack::PushL( TCleanupItem( Cleanup, array ) ); - - TInt count( iEngine->ItemCount() ); - FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 83 " ) ); - for( TInt index = 0; index < count; index++ ) - { - const TDesC& text = iEngine->SummaryText( index ); - const TDesC& title = iEngine->SummaryTitle( index ); - - CWPNameValue* pair = CWPNameValue::NewLC( title, text ); - User::LeaveIfError( array->Append( pair ) ); - CleanupStack::Pop( pair ); - } - array->Sort( TLinearOrder( CWPBioControl::Compare ) ); - return array; - } - -// ----------------------------------------------------------------------------- -// CWPBioControl::Cleanup -// ----------------------------------------------------------------------------- -// -void CWPBioControl::Cleanup( TAny* aAny ) - { - RPointerArray* array = reinterpret_cast*>( aAny ); - array->ResetAndDestroy(); - array->Close(); - delete array; - } - -// ----------------------------------------------------------------------------- -// CWPBioControl::Compare -// ----------------------------------------------------------------------------- -// -TInt CWPBioControl::Compare( const CWPNameValue& aItem1, - const CWPNameValue& aItem2 ) - { - return aItem1.Name().Compare( aItem2.Name() ); - } - -// ---------------------------------------------------------------------------- -// CWPBioControl ::SetCenrepKey -// ---------------------------------------------------------------------------- -// -void CWPBioControl::SetCenrepKeyL(const TDesC8& aValue) - { - - FLOG( _L( "[ProvisioningBC] CWPBioControl::SetCenrepKeyL" ) ); - - CRepository* rep= NULL; - TInt errorStatus = KErrNone; - - TRAPD( errVal, rep = CRepository::NewL( KCRUidOMAProvisioningLV )) - ; - - if (errVal == KErrNone) - { - errorStatus = rep->Set(KOMAProvOriginatorContent, aValue); - } - else - { - errorStatus = errVal; - } - - if (rep) - { - delete rep; - } - - if (errorStatus != KErrNone) - { - User::Leave(errorStatus); - } - - FLOG( _L( "[ProvisioningBC] CWPBioControl::SetCenrepKeyL done" ) ); - - } -// End of File