diff -r cd501b96611d -r ece3df019add authenticationservices/authenticationserver/test/reftestplugin/pinplugin/pinpluginao.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/authenticationservices/authenticationserver/test/reftestplugin/pinplugin/pinpluginao.h Tue Nov 24 09:06:03 2009 +0200 @@ -0,0 +1,157 @@ +/* +* 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: +* CPinPluginAO declaration +* +*/ + + +/** + @file + @internalComponent + @released +*/ + +#ifndef PIN_PLUGINAO_H +#define PIN_PLUGINAO_H + +#include "pinplugindialog.h" +#include "pinplugindb.h" +#include "pinpanic.h" + +class CPinPluginAO : public CActive + { +public: + /** static methods to constuct the object of the CPinpluginAO */ + static CPinPluginAO* NewL(TInt aPinSize, TInt aPinMinSize, TInt aPinMaxSize, TInt aRetryCount); + static CPinPluginAO* NewLC(TInt aPinSize, TInt aPinMinSize, TInt aPinMaxSize, TInt aRetryCount); + /** Destructor */ + ~CPinPluginAO(); +public: //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); + void ResetL(AuthServer::TIdentityId aId, const TDesC& aRegistrationData, HBufC8*& aResult); + +private: //Active + void DoCancel(); + void RunL(); + TInt RunError(TInt aError); +private: + /** Constructor */ + CPinPluginAO(TInt aPinSize, TInt aPinMinSize, TInt aPinMaxSize, TInt aRetryCount); + + /** Second Phase Constructor */ + void ConstructL(); + + /** + Issue a Request for Identify Dialog upto iRetryCount times to + PinPluginDialog. If the pinvalue received is wrong for all the + retries, reset the identityId as KUnknownIdentity. + */ + void IdentifyId(); + + /** + Issue a Request for Train Dialog to PinPluginDialog. + It will generate 4 random pin of length iNewPinSize and send + the pin Numbers and iNewPinSize to PinpluginDialog. Once it completed + it have the selected pin index and new pin size which is used to generate + another set of pin numbers for the next dialogs if required. + + @panic EPinPanicInvalidPinLength if plugin receives invalid pinlength fron Dialog Notifier + */ + void TrainIdL(); + + /** + It will generate KeyHash for the pin number given in the Identify Dialog. + and verify the keyHash and Id with DB entries. If same, the state will be + changed to EInfo and message is set to EPinPluginIdentificationSuccess + which is used to display info message to the user. + If not, same state will be maintained so that it will ask another Identify + dialog to the user. + */ + void IdentifyResultL(); + + /** + It will add/update the DB with the pin selected in Pin Train/ReTrain Dialog. + + @panic EPinPanicIncorrectIndex if plugin receives index values otherthan 0 -3 + */ + void AddTrainResultToDBL(); + + /** + It will generate two KeyHash for the pin value using SHA1 Algorithm + Intermediate result will return to the Authentication server whereas + final result is stored in the DB. + + @param aPinValue The Pin number for which Hash value required + @param aIdentityKey aIdentityKey is updated with intermediate KeyHash generated. + @return It will return the final KeyHash Value generated + */ + HBufC8* GenerateKeyHashL(TPinValue& aPinValue, HBufC8*& aIdentityKey); + + /** + It will generate four Unique Pins which is not used any of the + existing identities. + + @param aPinList On return, it holds the array of Pin numbers generated + @param idKeyList On return, it holds the array of intermediate KeyHash + values for the Pin Numbers in the aPinList + @param idKeyHashList On return, it holds the array of Final KeyHash values + for the Pin Numbers in the aPinList + */ + void GenerateUniquePinsL(RPointerArray& aPinList, RPointerArray& idKeyList, + RPointerArray& idKeyHashList); +private: + enum TProcessState + { + EIdentify, + EIdentifyResult, + ETrain, + ETrainResult, + EInfo, + EFinished + }; + CPinPluginDialog* iPinPluginDialog; + CPinPluginDB* iPinPluginDb; + TRequestStatus* iRequestStatus; + TProcessState iState; + TInt iIndex; + TPinValue iPinValue; + AuthServer::TIdentityId iIdentityId; + AuthServer::TIdentityId* iIdentityIdPtr; + HBufC8** iResult; + TPinPluginDialogResult* iDialogResult; + TPinPluginInfoMessage iMessage; + + TInt iRetryCount; + TInt iRetryRefCount; + TInt iPinSize; + TInt iPinMinSize; + TInt iPinMaxSize; + TInt iNewPinSize; + + RPointerArray iPinList; + RPointerArray iIdKeyList; + RPointerArray iIdKeyHashList; + + //Displayable text string + const HBufC* iClientMessage; + + }; + +#endif /* PIN_PLUGINAO_H */ +