diff -r cd501b96611d -r ece3df019add authenticationservices/authenticationserver/test/tauthplugins/step_interface.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/authenticationservices/authenticationserver/test/tauthplugins/step_interface.cpp Tue Nov 24 09:06:03 2009 +0200 @@ -0,0 +1,268 @@ +/* +* 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 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: +* +*/ + + +#include "tauthpluginsstep.h" +#include "consts.h" + +#include +#include "authserver/authplugininterface.h" +#include +#include +#include +#include +#include +#include +#include + +using namespace AuthServer; + +CTStepInterface::CTStepInterface() + { + SetTestStepName(KTStepInterface); + } + +CTStepInterface::~CTStepInterface() + {} + +TInt HexString2Num(const TDesC8& aStr) + { + TInt data = 0; + TInt char2hex = 0; + TInt c = 0; + for (TInt i = 0 ; i < aStr.Length() ; ++i) + { + c = aStr[i]; + + if (c < 'A') + { + char2hex='0'; + } + else if (c < 'a') + { + char2hex=('A'-10); + } + else + { + char2hex=('a'-10); + } + data = data << 4; + data += aStr[i]-char2hex; + } + return data; + } + +TVerdict CTStepInterface::doTestStepPreambleL() + { + TVerdict verdict = CTAuthPluginsStepBase::doTestStepPreambleL(); + iActiveScheduler = new(ELeave) CActiveScheduler(); + CActiveScheduler::Install(iActiveScheduler); + return verdict; + } + +TVerdict CTStepInterface::doTestStepPostambleL() + { + TVerdict verdict = CTAuthPluginsStepBase::doTestStepPostambleL(); + delete iActiveScheduler; + return verdict; + } + +TVerdict CTStepInterface::doTestStepL() + { + if (TestStepResult() != EPass) + { + return TestStepResult(); + } +__UHEAP_MARK; // Check for memory leaks + + TBool res = ETrue; + TBool tmp = ETrue; + TInt err = KErrNone; + + RImplInfoPtrArray impl; + CleanupClosePushL(impl); + REComSession::ListImplementationsL(KCAuthPluginInterfaceUid, impl); + + TEST(tmp = impl.Count() > 0); + res = tmp && res; + + + TInt data = HexString2Num(impl[0]->DataType()); + + INFO_PRINTF2(_L("Implementation Id: 0x%x"),impl[0]->ImplementationUid().iUid); + INFO_PRINTF2(_L("Display Name: %S"),&impl[0]->DisplayName()); + INFO_PRINTF2(_L("Default Data: %x"),data); + INFO_PRINTF2(_L("Rom Only: %d"),impl[0]->RomOnly()); + INFO_PRINTF2(_L("Rom Based: %d"),impl[0]->RomBased()); + + CAuthPluginInterface* plugin = 0; + + TEComResolverParams resolverParams; + TBufC8<16> pluginIdTxt; + + pluginIdTxt.Des().Format(_L8("%x"), impl[0]->ImplementationUid().iUid); + + resolverParams.SetDataType(pluginIdTxt); + + TAny* tempPlugin = 0; + TUid Dtor_ID_Key = TUid::Null(); + TRAP(err, tempPlugin = + REComSession::CreateImplementationL(KCAuthPluginInterfaceUid, + Dtor_ID_Key, + resolverParams)); + + plugin = reinterpret_cast(tempPlugin); + if (plugin != 0) + { + + + + TRequestStatus t; + TIdentityId id; + + HBufC8* data = 0; + plugin->Identify(id, KNullDesC(), data,t); + CleanupStack::PushL(data); + + TEST(tmp = id == 22); + res = tmp && res; + + TEST(tmp = *data == KIdentifyData); + res = tmp && res; + + HBufC8* data2 = 0; + plugin->Train(id,data2,t); + CleanupStack::PushL(data2); + + TEST(tmp = *data2 == KTrainData); + res = tmp && res; + + HBufC8* data4 = 0; + TEST(tmp = plugin->DefaultData(0, data4) == KErrNotSupported); + res = tmp && res; + + TEST(tmp = plugin->Name() == KPluginName); + res = tmp && res; + + TEST(tmp = plugin->Description() == KPluginDescription); + res = tmp && res; + + TEST(tmp = plugin->MinEntropy() == KEntropy); + res = tmp && res; + + TEST(tmp = plugin->FalsePositiveRate() == KFalsePos); + res = tmp && res; + + TEST(tmp = plugin->FalseNegativeRate() == KFalseNeg); + res = tmp && res; + + CleanupStack::PopAndDestroy(2); + delete plugin; + REComSession::DestroyedImplementation(Dtor_ID_Key); + } + else + { + ERR_PRINTF1(_L("Failed to load plugin")); + + res = false; + } + + + TInt count = impl.Count(); + for (TInt i = 0; i < count; i++) + { + + TEComResolverParams resolverParams; + TBufC8<16> pluginIdTxt; + + pluginIdTxt.Des().Format(_L8("%x"), impl[i]->ImplementationUid().iUid); + //paste begin + + pluginIdTxt.Des().UpperCase(); + resolverParams.SetDataType(pluginIdTxt); + + //To load plugins from sources other than ROM the patch + // data KEnablePostMarketAuthenticationPlugins must be set to True. + TUint32 enablePostMarketPlugin = KEnablePostMarketAuthenticationPlugins; + +#ifdef __WINS__ + + // Default SymbianOS behavior is to only load auth plugins from ROM. + enablePostMarketPlugin = 0; + + // For the emulator allow the constant to be patched via epoc.ini + UserSvr::HalFunction(EHalGroupEmulator, EEmulatorHalIntProperty, + (TAny*)"KEnablePostMarketAuthenticationPlugins", &enablePostMarketPlugin); // read emulator property (if present) + +#endif + + TAny* tempPlugin = 0; + TInt err = 0; + TUid Dtor_ID_Key = TUid::Null(); + + if(enablePostMarketPlugin == 0) + { + TRAP(err, tempPlugin = + REComSession::CreateImplementationL(KCAuthPluginInterfaceUid, + Dtor_ID_Key, + resolverParams, + KRomOnlyResolverUid)); + } + + else + { + TRAP(err, tempPlugin = + REComSession::CreateImplementationL(KCAuthPluginInterfaceUid, + Dtor_ID_Key, + resolverParams)); + } + + if (err == KErrNotFound) + { + err = KErrAuthServNoSuchPlugin; + } + User::LeaveIfError(err); + + plugin = reinterpret_cast(tempPlugin); + + INFO_PRINTF2(_L("ID: 0x%x"),plugin->Id()); + INFO_PRINTF2(_L("Name: %S"),&plugin->Name()); + INFO_PRINTF2(_L("Description: %S"),&plugin->Description()); + INFO_PRINTF2(_L("Type %x"),plugin->Type()); + INFO_PRINTF2(_L("MinEntropy: %d"),plugin->MinEntropy()); + INFO_PRINTF2(_L("FPR %d"),plugin->FalsePositiveRate()); + INFO_PRINTF2(_L("FNR %d"),plugin->FalseNegativeRate()); + INFO_PRINTF2(_L("IsActive %d"),plugin->IsActive()); + HBufC8* buf = 0; + INFO_PRINTF2(_L("DefaultData %d"),plugin->DefaultData(0,buf)); + if (buf) { delete buf; } + + delete plugin; + delete impl[i]; + REComSession::DestroyedImplementation(Dtor_ID_Key); + } + + CleanupStack::PopAndDestroy(&impl); + + REComSession::FinalClose(); + + SetTestStepResult(res ? EPass : EFail); + +__UHEAP_MARKEND; + return TestStepResult(); + } +