diff -r 3f7d9dbe57c8 -r 57a65a3a658c terminalsecurity/SCP/SCPHistoryPlugin/src/SCPHistoryPlugin.cpp --- a/terminalsecurity/SCP/SCPHistoryPlugin/src/SCPHistoryPlugin.cpp Tue Feb 02 00:44:00 2010 +0200 +++ b/terminalsecurity/SCP/SCPHistoryPlugin/src/SCPHistoryPlugin.cpp Fri Feb 19 23:41:35 2010 +0200 @@ -84,360 +84,333 @@ // Status : Approved // ---------------------------------------------------------------------------- // -CSCPParamObject* CSCPHistoryPlugin::HandleEvent( TInt aID, CSCPParamObject& aParam ) - { - Dprint ( ( _L( "CSCPHistoryPlugin::HandleEvent()" ) ) ); - // Make the ParamObject for success ack, Delete later - CSCPParamObject* retParams = NULL; - - TBool errRaised; - errRaised = EFalse; - - TBool isInvalid = EFalse; - - if ( iFs == NULL ) - { - return NULL; // Eventhandler not available - } - - // Insert the default security code into the history-buffer if not there yet - { - TInt errSCF = SetConfigFile (); - if (errSCF != KErrNone) - { - return NULL; - } - - TInt historyItemCounter = 0; - if ( GetHistoryItemCount( historyItemCounter ) != KErrNone ) - { - Dprint ( ( _L( "CSCPHistoryPlugin::HandleEvent historyItemCounter = %d" ), historyItemCounter ) ); - // Hash the security code - TBuf codeBuf; - TBuf hashBuf; - - codeBuf.Copy( KSCPDefaultEnchSecCode ); - hashBuf.Zero(); - - iEventHandler->HashInput( codeBuf, hashBuf ); - - CSCPParamObject* historyObject = NULL; - TRAPD( err, historyObject = CSCPParamObject::NewL() ); - if ( err == KErrNone ) - { - historyObject->Set( KHistoryCounterParamID, 1 ); - historyObject->Set( KHistoryItemParamBase, hashBuf ); - - TRAP_IGNORE( historyObject->WriteToFileL( iCfgFilenamepath, iFs ) ); - } - - delete historyObject; - } - } - - - // check for Case - switch ( aID ) +CSCPParamObject* CSCPHistoryPlugin::HandleEvent(TInt aID, + CSCPParamObject& aParam) + { + Dprint((_L("CSCPHistoryPlugin::HandleEvent()"))); + // Make the ParamObject for success ack, Delete later + CSCPParamObject* retParams = NULL; + + TBool errRaised; + errRaised = EFalse; + + TBool isInvalid = EFalse; + + if (iFs == NULL) + { + return NULL; // Eventhandler not available + } + + // check for Case + switch (aID) { - case ( KSCPEventValidate ) : - { - // Obtain the paramValue - Dprint ( ( _L( "CSCPHistoryPlugin::KSCPEventValidate" ) ) ); - TInt passhistoryParamValue; - passhistoryParamValue = GetHistoryCountParamValue(); - Dprint ( ( _L( "CSCPHistoryPlugin::HandleEvent passhistoryParamValue = %d" ), passhistoryParamValue ) ); - // if all required bounds are zero, there is nothing to do. - if ( passhistoryParamValue != 0) - { - // Get the configFile's path. - // If this fails, there is something badly wrong(Private folder is not there) - TInt errSCF = SetConfigFile (); - if (errSCF != KErrNone) - { - errRaised = ETrue; - break; // Break out from Case - } + case (KSCPEventValidate): + { + // Obtain the paramValue + Dprint((_L("CSCPHistoryPlugin::KSCPEventValidate"))); + TInt passhistoryParamValue; + passhistoryParamValue = GetHistoryCountParamValue(); + Dprint( + (_L( + "CSCPHistoryPlugin::HandleEvent passhistoryParamValue = %d"), passhistoryParamValue)); + // if all required bounds are zero, there is nothing to do. + if (passhistoryParamValue != 0) + { + // Get the configFile's path. + // If this fails, there is something badly wrong(Private folder is not there) + TInt errSCF = SetConfigFile(); + if (errSCF != KErrNone) + { + errRaised = ETrue; + break; // Break out from Case + } - // Get the historyItemCount, If the err is raised, the file is not there - // This will lead to KSCPEventPasswordChanged event and new history file will - // be created - TInt historyItemCounter; - TInt errHC = GetHistoryItemCount( historyItemCounter ); - Dprint ( ( _L( "CSCPHistoryPlugin::HandleEvent historyItemCounter = %d" ), historyItemCounter ) ); - if (errHC != KErrNone) - { - errRaised = ETrue; - break; // Break out from Case - } + // Get the historyItemCount, If the err is raised, the file is not there + // This will lead to KSCPEventPasswordChanged event and new history file will + // be created + TInt historyItemCounter; + TInt errHC = GetHistoryItemCount(historyItemCounter); + Dprint( + (_L( + "CSCPHistoryPlugin::HandleEvent historyItemCounter = %d"), historyItemCounter)); + if (errHC != KErrNone) + { + errRaised = ETrue; + break; // Break out from Case + } + + // continue with the KSCPEventValidate Check - // continue with the KSCPEventValidate Check + // Get the password from the paramObject + TBuf seccode; + if (aParam.Get(KSCPParamPassword, seccode) != KErrNone) + { + // Nothing to do anymore + Dprint( + (_L( + "CSCPHistoryPlugin::HandleEvent()\ + ERROR: KSCPEventValidate/KSCPParamPassword is != KErrNone"))); + errRaised = ETrue; + break; // Break out from Case + } + + // Hash the securitycode + TBuf securityhash; + iEventHandler->HashInput(seccode, securityhash); + + // get history + CDesCArrayFlat* array = NULL; + TInt errGH = KErrNone; - // Get the password from the paramObject - TBuf seccode; - if ( aParam.Get( KSCPParamPassword, seccode ) != KErrNone ) - { - // Nothing to do anymore - Dprint( (_L("CSCPHistoryPlugin::HandleEvent()\ - ERROR: KSCPEventValidate/KSCPParamPassword is != KErrNone") )); - errRaised = ETrue; - break; // Break out from Case - } - - // Hash the securitycode - TBuf securityhash; - iEventHandler->HashInput(seccode,securityhash); - - // get history - CDesCArrayFlat* array = NULL; - TInt errGH = KErrNone; - - array = new CDesCArrayFlat(1); - if ( array != NULL ) - { - TRAPD( err2, errGH = GetHistoryArrayL( *array ) ); - if ( err2 != KErrNone ) - { - errGH = err2; - } - } - else - { - errGH = KErrNoMemory; - } - - // If for some reason err is raised, break out - // If the Historyonfig file get deleted on the fly ex - if (errGH != KErrNone) - { - errRaised = ETrue; - array->Reset(); - delete array; - break; // Break out from Case - } - TInt correction; - correction = 0; + array = new CDesCArrayFlat(1); + if (array != NULL) + { + TRAPD(err2, errGH = GetHistoryArrayL(*array)); + if (err2 != KErrNone) + { + errGH = err2; + } + } + else + { + errGH = KErrNoMemory; + } + + // If for some reason err is raised, break out + // If the Historyonfig file get deleted on the fly ex + if (errGH != KErrNone) + { + errRaised = ETrue; + array->Reset(); + delete array; + break; // Break out from Case + } + TInt correction; + correction = 0; + + if (array->Count() >= passhistoryParamValue) + { + correction = array->Count() - passhistoryParamValue; + } + // check for match + TBuf arrayItem; - if ( array->Count() >= passhistoryParamValue ) - { - correction = array->Count() - passhistoryParamValue; - } - // check for match - TBuf arrayItem; - - // Set the historyobject - for (TInt i= 0 + correction; i < array->Count(); i++) - { - arrayItem = array->MdcaPoint(i); - if (arrayItem.Compare(securityhash) == KErrNone) - { - // Get the filesystem for Resource - // If fail, bail out - TInt errgGR = GetResource(); - if (errgGR != KErrNone) - { - errRaised = ETrue; - break; // Break out from the For - } + // Set the historyobject + for (TInt i = 0 + correction; i < array->Count(); i++) + { + arrayItem = array->MdcaPoint(i); + if (arrayItem.Compare(securityhash) == KErrNone) + { + // Get the filesystem for Resource + // If fail, bail out + TInt errgGR = GetResource(); + if (errgGR != KErrNone) + { + errRaised = ETrue; + break; // Break out from the For + } - // Prompt buf, iNote can show only 97 chars, - // without ... markings. - HBufC* hbuf = NULL; - - if ( passhistoryParamValue == 1 ) - { - isInvalid = ETrue; - TRAP_IGNORE( - hbuf = LoadAndFormatResL( R_SET_SEC_CODE_INFO_PREVIOUS ); - ); - } - else - { - isInvalid = ETrue; - TRAP_IGNORE( - hbuf = LoadAndFormatResL( - R_SET_SEC_CODE_INFO_CHECK, - &passhistoryParamValue ); - ); - } + // Prompt buf, iNote can show only 97 chars, + // without ... markings. + HBufC* hbuf = NULL; + + if (passhistoryParamValue == 1) + { + isInvalid = ETrue; +TRAP_IGNORE ( + hbuf = LoadAndFormatResL( R_SET_SEC_CODE_INFO_PREVIOUS ); + ); + } + else + { + isInvalid = ETrue; + TRAP_IGNORE( + hbuf = LoadAndFormatResL( + R_SET_SEC_CODE_INFO_CHECK, + &passhistoryParamValue ); + ); + } if ( isInvalid ) - { - // Create the result-object to return - TRAPD( err, retParams = CSCPParamObject::NewL() ); - + { + // Create the result-object to return + TRAPD( err, retParams = CSCPParamObject::NewL() ); + if ( err == KErrNone ) - { - retParams->Set( KSCPParamStatus, KErrSCPInvalidCode ); - retParams->Set( KSCPParamAction, KSCPActionShowUI ); - retParams->Set( KSCPParamUIMode, KSCPUINote ); - - if ( hbuf != NULL ) - { - TPtr ptr = hbuf->Des(); - retParams->Set( KSCPParamPromptText, ptr ); - delete hbuf; - } - } - - break; - } - - } // End of compare IF - } // End of For - - // kill the local - array->Reset(); - delete array; - - } // passhistoryParamValue - else - { - retParams = NULL; - } + { + retParams->Set( KSCPParamStatus, KErrSCPInvalidCode ); + retParams->Set( KSCPParamAction, KSCPActionShowUI ); + retParams->Set( KSCPParamUIMode, KSCPUINote ); + + if ( hbuf != NULL ) + { + TPtr ptr = hbuf->Des(); + retParams->Set( KSCPParamPromptText, ptr ); + delete hbuf; + } + } + + break; + } + + } // End of compare IF + } // End of For + + // kill the local + array->Reset(); + delete array; - break; - } // end of KSCPEventValidate - + } // passhistoryParamValue + + else + { + retParams = NULL; + } + + break; + } // end of KSCPEventValidate + // Someone has changed the Seccode and I need to include it to history - case ( KSCPEventPasswordChanged ) : - { - // Get the configFile's path. - Dprint ( ( _L( "CSCPHistoryPlugin::KSCPEventPasswordChanged" ) ) ); - TInt errSCF = SetConfigFile (); - if (errSCF != KErrNone) - { - errRaised = ETrue; - break; // Break out from the case - } - - // Get the password from the paramObject - TBuf securitycode; + case ( KSCPEventPasswordChanged ) : + { + // Get the configFile's path. + Dprint ( ( _L( "CSCPHistoryPlugin::KSCPEventPasswordChanged" ) ) ); + TInt errSCF = SetConfigFile (); + if (errSCF != KErrNone) + { + errRaised = ETrue; + break; // Break out from the case + } + + // Get the password from the paramObject + TBuf securitycode; if ( aParam.Get( KSCPParamPassword, securitycode ) != KErrNone ) { - // Nothing to do anymore - Dprint( (_L("CSCPHistoryPlugin::HandleEvent()\ + // Nothing to do anymore + Dprint( (_L("CSCPHistoryPlugin::HandleEvent()\ ERROR: KSCPEventPasswordChanged/KSCPParamPassword is != KErrNone") )); - errRaised = ETrue; - break; // Break out from the Case - } + errRaised = ETrue; + break; // Break out from the Case + } - // Hash the securitycode - TBuf securityhash; - iEventHandler->HashInput(securitycode,securityhash); + // Hash the securitycode + TBuf securityhash; + iEventHandler->HashInput(securitycode,securityhash); - // Get the historyItemCount, If error occures, File is not there yet, Make one - TInt historyItemCounter; - TInt errHC = GetHistoryItemCount( historyItemCounter ); - Dprint ( ( _L( "CSCPHistoryPlugin::HandleEvent historyItemCounter = %d" ), historyItemCounter ) ); - if (errHC != KErrNone) - { - // The file does not exist yet (should not happen) - // Make the ParamObject, Set the New historyData with count of 1 - CSCPParamObject* historyObject = NULL; - TRAPD( err, historyObject = CSCPParamObject::NewL() ); - if ( err == KErrNone ) - { - historyObject->Set(KHistoryCounterParamID,1); - historyObject->Set(KHistoryItemParamBase,securityhash ); - + // Get the historyItemCount, If error occures, File is not there yet, Make one + TInt historyItemCounter; + TInt errHC = GetHistoryItemCount( historyItemCounter ); + Dprint ( ( _L( "CSCPHistoryPlugin::HandleEvent historyItemCounter = %d" ), historyItemCounter ) ); + if (errHC != KErrNone) + { + // The file does not exist yet (should not happen) + // Make the ParamObject, Set the New historyData with count of 1 + CSCPParamObject* historyObject = NULL; + TRAPD( err, historyObject = CSCPParamObject::NewL() ); + if ( err == KErrNone ) + { + historyObject->Set(KHistoryCounterParamID,1); + historyObject->Set(KHistoryItemParamBase,securityhash ); + TRAPD( errWC, historyObject->WriteToFileL( iCfgFilenamepath, iFs ) ); - if ( errWC != KErrNone ) - { - Dprint( (_L("CSCPHistoryPlugin::HandleEvent(): WARNING:\ + if ( errWC != KErrNone ) + { + Dprint( (_L("CSCPHistoryPlugin::HandleEvent(): WARNING:\ failed to write plugin configuration: %d"), errWC )); - errRaised = ETrue; - break; // Break out from the Case - } - delete historyObject; - } - } - // There are passwords avail. - else - { - // Append the new passwords - TInt err = KErrNone; - TRAPD( err2, err = AppendAndWriteSecurityCodeL( securityhash ) ); - if ( ( err != KErrNone ) || ( err2 != KErrNone ) ) - { - errRaised = ETrue; - break; // Break out from the Case - } - } - break; - } // end of KSCPEventPasswordChanged - - case ( KSCPEventConfigurationQuery ): - { + errRaised = ETrue; + break; // Break out from the Case + } + delete historyObject; + } + } + // There are passwords avail. + + else + { + // Append the new passwords + TInt err = KErrNone; + TRAPD( err2, err = AppendAndWriteSecurityCodeL( securityhash ) ); + if ( ( err != KErrNone ) || ( err2 != KErrNone ) ) + { + errRaised = ETrue; + break; // Break out from the Case + } + } + break; + } // end of KSCPEventPasswordChanged + + case ( KSCPEventConfigurationQuery ): + { Dprint ( ( _L( "CSCPHistoryPlugin::KSCPEventConfigurationQuery" ) ) ); - TInt paramID = -1; + TInt paramID = -1; // Get the ID from the paramObject if ( aParam.Get( KSCPParamID, paramID ) != KErrNone ) { // Nothing to do anymore break; - } - + } + // 1011 if ( paramID == (RTerminalControl3rdPartySession::EPasscodeHistoryBuffer)) { - // OK, we're interested, check that the value is valid - TRAPD( err, retParams = CSCPParamObject::NewL() ); - if ( err != KErrNone ) - { - break; // Nothing we can do - } + // OK, we're interested, check that the value is valid + TRAPD( err, retParams = CSCPParamObject::NewL() ); + if ( err != KErrNone ) + { + break; // Nothing we can do + } + + // All of our params are TInts + TInt paramValue; + if ( aParam.Get( KSCPParamValue, paramValue ) != KErrNone ) + { + retParams->Set( KSCPParamStatus, KErrGeneral ); + break; + } + + TInt retStatus = KErrNone; + switch ( paramID ) + { + + case ( RTerminalControl3rdPartySession::EPasscodeHistoryBuffer ): + { + // Bounds are be be + if ( ( paramValue < KPasscodeHistoryBufferMinValue ) + || ( paramValue > KPasscodeHistoryBufferMaxValue ) ) + { + // This is not a valid valuerange + retStatus = KErrArgument; + } - // All of our params are TInts - TInt paramValue; - if ( aParam.Get( KSCPParamValue, paramValue ) != KErrNone ) - { - retParams->Set( KSCPParamStatus, KErrGeneral ); - break; - } - - TInt retStatus = KErrNone; - switch ( paramID ) - { - - case ( RTerminalControl3rdPartySession::EPasscodeHistoryBuffer ): - { - // Bounds are be be - if ( ( paramValue < KPasscodeHistoryBufferMinValue ) - || ( paramValue > KPasscodeHistoryBufferMaxValue ) ) - { - // This is not a valid valuerange - retStatus = KErrArgument; - } - - break; - } // end of case EPasscodeHistoryBuffer - } // end of switch ( paramID ) - - retParams->Set( KSCPParamStatus, retStatus ); - } - else - { - retParams = NULL; - } - - break; - } //End of KSCPEventConfigurationQuery Case - - - case ( KSCPEventReset ): - { - Dprint ( ( _L( "CSCPHistoryPlugin::KSCPEventReset" ) ) ); - // Reset the configuration for this plugin. - TRAP_IGNORE( FlushConfigFileL() ); - - break; - } - - } // End of switch ( aID ) - - // Check if Any errors were raised and handle it - if (errRaised) + break; + } // end of case EPasscodeHistoryBuffer + } // end of switch ( paramID ) + + retParams->Set( KSCPParamStatus, retStatus ); + } + else + { + retParams = NULL; + } + + break; + } //End of KSCPEventConfigurationQuery Case + + + case ( KSCPEventReset ): + { + Dprint ( ( _L( "CSCPHistoryPlugin::KSCPEventReset" ) ) ); + // Reset the configuration for this plugin. + TRAP_IGNORE( FlushConfigFileL() ); + + break; + } + + } // End of switch ( aID ) + + // Check if Any errors were raised and handle it + if (errRaised) { if ( retParams != NULL ) { @@ -445,8 +418,8 @@ } retParams = NULL; } - - return retParams; + + return retParams; } // ----------------------------------------------------------------------------