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

/*
* Copyright (c) 2006-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: 
* CPinPlugin is an CAuthPluginInterface implementation.
*
*/


/**
 @file 
 @internalAll
 @test
*/


#ifndef PIN_PLUGIN_H
#define PIN_PLUGIN_H

#include <barsc.h>
#include <authserver/authplugininterface.h>
#include "pinpluginao.h"

/**
 An implementation of the CAuthPluginInterface definition
 */
class CPinPlugin : public AuthServer::CAuthPluginInterface
	{
public:
	/** static methods to constuct the object of the CPinPlugin */
	static CPinPlugin* NewL();
	static CPinPlugin* NewLC();
	/** Destructor */
	~CPinPlugin();

public:			//from CAuthPluginInterface
	void Identify(AuthServer::TIdentityId& aId, const TDesC& aClientMessage,
				  HBufC8*& aResult, TRequestStatus& aRequest);	
	void Train(AuthServer::TIdentityId aId, HBufC8*& aResult, TRequestStatus& aRequest);		
	TInt Forget(AuthServer::TIdentityId aId);
	TInt DefaultData(AuthServer::TIdentityId aId, HBufC8*& aOutputBuf);
	TInt Reset(AuthServer::TIdentityId aIdentityId, const TDesC& aRegistrationData, HBufC8*& aResult);
	TBool IsActive() const;
	void Cancel();
	AuthServer::TPluginId Id() const;
	const TPtrC& Name() const;
	const TPtrC& Description() const;
	AuthServer::TEntropy MinEntropy() const;
	AuthServer::TPercentage FalsePositiveRate() const;
	AuthServer::TPercentage FalseNegativeRate() const;
	AuthServer::TAuthPluginType Type() const;
private:
	/** 
	  Second Phase Constructor
	  @panic EPinPanicInvalidConfigValues	if the resource file contains the invalid entries
	  */
	void ConstructL();
	/** Constructor */
	CPinPlugin();
	/**
	 Opens the Resource file and Read the values from it.
	 
	 @param aRetryCount		On return, it holds Retry Count value.
	 @param aPinSize		On return, it holds Default Pin Size.
	 @param aPinMinSize		On return, it holds Minimum Pin Size.
	 @param aPinMaxSize		On return, it holds Maximum Pin Size.
	 */
	void ReadResourceL(TInt& aRetryCount, TInt& aPinSize, TInt& aPinMinSize,
					TInt& aPinMaxSize);
	/**
	 Utility function to give a value for a particular resource Id.
	 
	 @param aResFile		The resource file to be read
	 @param aResourceID		The resource Id to be read from the resource file
	 @return				returns the value read from the resource file.
 	 */
	TInt ResourceValueL(RResourceFile& aResFile, const TInt aResourceID);

	void SetPluginStateL();
	
private:
	/** CPinpluginAO object to process the operation in AO */
	CPinPluginAO* iPinPluginAO;
	/** The name of plugin read from the resource file */
	HBufC* iPinName;
	/** The Description for the plugin read from the resource file */
	HBufC* iPinDescription;
protected:
	/// The name of the plugin. Derived classes should set this member.
	TPtrC iName;
	/// The plugin's description. Derived classes should set this member.
	TPtrC iDescription;
	/// The minumum entropy provided by the plugin. Derived classes should set
	/// this member.
	AuthServer::TEntropy iMinEntropy;
	/// The false positive rate of the plugin. Derived classes should set this
	/// member.
	AuthServer::TPercentage iFalsePositiveRate;
	/// The false negative rate of the plugin. Derived classes should set this
	/// member.
	AuthServer::TPercentage iFalseNegativeRate;
 	/// The type of the plugin. Derived classes should set this member.
	AuthServer::TAuthPluginType iType;
	/// the state of the plugin.
	TBool iActive;
	};

#endif	/* PIN_PLUGIN_H */