authenticationservices/authenticationserver/test/authtool/authtool.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 24 Nov 2009 09:06:03 +0200
changeset 29 ece3df019add
permissions -rw-r--r--
Revision: 200948 Kit: 200948

/*
* 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: 
* AuthTool provides a console interface to the AuthServer query
* methods, basically dumping the contents of the AuthServer's database.
*
*/


/**
 @file 
*/
#include <e32cons.h>
#include "authserver_client.h"

using namespace AuthServer;

_LIT(KAnyStr, "Default");
_LIT(KBiometricStr, "Biometric");
_LIT(KKnowledgeStr, "Knowledge");
_LIT(KTokenStr, "Token");

TAuthPluginType types[] = { EAuthDefault, EAuthBiometric, EAuthKnowledge, EAuthToken };
TPtrC typeNames[] = {KAnyStr(), KBiometricStr(), KKnowledgeStr(), KTokenStr() }; 

_LIT(KUnTrainedStr, "Untrained");
_LIT(KTrainedStr , "Trained");
_LIT(KFullyTraininedStr, "Fully Trained");
TPtrC trainNames[] = { KUnTrainedStr(), KTrainedStr(), KFullyTraininedStr() }; 

_LIT(KMsgAuthToolPanic,"AuthTool: ");

TInt ExtractDetailsL();
TInt DisplayPlugins(RPluginDescriptions&);


GLDEF_C TInt E32Main()
    {
    __UHEAP_MARK;
	
    CTrapCleanup* cleanupstack=CTrapCleanup::New(); 
    TRAPD(error,ExtractDetailsL());
    __ASSERT_ALWAYS(!error,User::Panic(KMsgAuthToolPanic, error)); 
    delete cleanupstack;
	
    __UHEAP_MARKEND;
    return 0;
    }

CConsoleBase* console = 0;

TInt ExtractDetailsL()
  {
  // create the console
  console = Console::NewL(_L("AuthTool"),
										TSize(KDefaultConsWidth,
											  KDefaultConsHeight));
  CleanupStack::PushL(console);
    
  // connect to server
  RAuthClient authClient;
  User::LeaveIfError(authClient.Connect());
  CleanupClosePushL(authClient);

  // get the plugins
  RPluginDescriptions plugins;
  authClient.PluginsL(plugins);
  CleanupClosePushL(plugins);

  DisplayPlugins(plugins);
  
  // get the preferences
  console->Printf(_L("\nPreferences\n-----------\n"));

  TInt count = sizeof(types)/sizeof(TInt);
  for (TInt i = 0  ; i < count ; ++i)
	{
    console->Printf(_L("%10S : 0x%x\n"), &typeNames[i],
					authClient.PreferredTypePluginL(types[i]));
	}
  console->Printf(_L("\nPress any key to continue\n"));
  console->Getch();

  // get the identities
  console->Printf(_L("\nIdentities\n-----------\n"));
  
  RIdentityIdArray ids;
  authClient.IdentitiesL(ids);
  CleanupClosePushL(ids);
  
  for (TInt index = 0  ; index < ids.Count(); ++index)
	{
    HBufC* str = authClient.IdentityStringL(ids[index]);	

	CleanupStack::PushL(str);
	if (str != 0)
	  {
      console->Printf(_L("0x%x : %S\n"), ids[index],
						str);
	  }
	else
	  {
      console->Printf(_L("0x%x : No Name\n"), ids[index]);
	  }
	CleanupStack::PopAndDestroy(str);
	}
  console->Printf(_L("\nPress any key to finish\n"));	
  console->Getch();

  CleanupStack::PopAndDestroy(4,console);
  return 0;
  }

TPtrC* train(TAuthTrainingStatus aT)
  {
  TInt idx =0; 
  switch (aT)
	{
  case EAuthUntrained:
	idx = 0;
	break;
  case EAuthTrained:
	idx = 1;
	break;
  case EAuthFullyTrained:
	idx = 2;
	break;
	}
  return &trainNames[idx];
  } 

TPtrC* type(TAuthPluginType aT)
  {
  TInt idx =0; 
  switch (aT)
	{
  case EAuthDefault:
	idx = 0;
	break;
  case EAuthBiometric:
	idx = 1;
	break;
  case EAuthKnowledge:
	idx = 2;
	break;
  case EAuthToken:
	idx = 3;
	break;
  case EAuthPerformance:
	idx = 4;
	break;
	}
  return &typeNames[idx];
  } 

TInt DisplayPlugins(RPluginDescriptions& aPlugins)
  {
  console->Printf(_L("\nPlugin Descriptions\n-------------------\n"));
  for (TInt i = 0  ; i < aPlugins.Count(); ++i)
	{
	console->Printf(_L("ID            : 0x%x\n"), aPlugins[i]->Id());
	console->Printf(_L("Name          : %S\n"), aPlugins[i]->Name());
	console->Printf(_L("Type          : %S\n"), type(aPlugins[i]->Type()));
	console->Printf(_L("Training      : %S\n"), train(aPlugins[i]->TrainingStatus()));
	console->Printf(_L("#Combinations : %d\n"), aPlugins[i]->MinEntropy());
	console->Printf(_L("FPR           : %d\n"), aPlugins[i]->FalsePositiveRate());
	console->Printf(_L("FNR           : %d\n\n"), aPlugins[i]->FalseNegativeRate());
    console->Printf(_L("\nPress any key to continue\n"));
    console->Getch();
	}
  
  return 0;
  }