authenticationservices/authenticationserver/test/reftestplugin/pinplugin/pinplugindb.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/authenticationservices/authenticationserver/test/reftestplugin/pinplugin/pinplugindb.h Tue Nov 24 09:06:03 2009 +0200
@@ -0,0 +1,160 @@
+/*
+* 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:
+* CPinPluginDB pin plugin data store declaration
+*
+*/
+
+
+/**
+ @file
+*/
+
+#ifndef PIN_PLUGINDB_H
+#define PIN_PLUGINDB_H
+
+#include <s32file.h>
+#include <authserver/authtypes.h>
+
+// PinPlugin DB
+class CPinPluginDB : public CBase
+ {
+public:
+ /** static methods to constuct the object of the CPinPluginDB */
+ static CPinPluginDB* NewL();
+ static CPinPluginDB* NewLC();
+
+ /** Destructor */
+ virtual ~CPinPluginDB();
+
+ /**
+ Add Id and KeyHash to the store if the id is not exist in the
+ store and pin is not used by any other id.
+
+ @param aId The Id to be Trained
+ @param aIdentityKeyHash The pin used to Train the Id
+ @leave It leaves with KErrAlreadyExists if the id is
+ already exist or pin is used by other identity.
+ */
+ void AddPinL(const AuthServer::TIdentityId& aId, const TDesC8& aIdentityKeyHash);
+
+ /**
+ Update the Id and Pin in the store With the new Pin, if the id exists.
+
+ @param aId The Id to be ReTrained
+ @param aIdentityKeyHash The pin used to ReTrain the Id
+ @leave It leaves with KErrNotFound if the id is
+ not exist.
+ */
+ void UpdatePinL(const AuthServer::TIdentityId& aId, const TDesC8& aIdentityKeyHash);
+
+ /**
+ Remove the Id from the store, if the Id exists
+
+ @param aId The Id to be ReTrained
+ @leave It leaves with KErrNotFound if the id is
+ not exist.
+ */
+ void RemovePinL(const AuthServer::TIdentityId& aId);
+
+ /**
+ Searches the pinvalue in the store
+
+ @param aIdentityKeyHash The pinvalue to be search for
+ @return It return the IdentityId for the pin, if search
+ is success else return KUnknownIdentity.
+ */
+ AuthServer::TIdentityId IdFromPin(const TDesC8& aIdentityKeyHash) const;
+
+ /**
+ Searches the Id in the store.
+
+ @param aId The Id to be search for.
+ @return It return the index of the Id if the search
+ is success else return KErrNotFound.
+ */
+ TInt IdIndex(const AuthServer::TIdentityId& aId) const ;
+
+ /**
+ Verifies the pin is unique.
+
+ @param aIdentityKeyHash The pinvalue to be search for
+ @return return ETrue if the pin is not used by any of
+ the identity else EFalse.
+ */
+ TBool IsUniquePin(const TDesC8& aIdentityKeyHash) const;
+
+private:
+ CPinPluginDB();
+ void ConstructL();
+
+private:
+ /**
+ Create and open a New Store If it is first time
+ else Open the existing store.
+ */
+ void OpenStoreL();
+
+ /**
+ Open the existing store
+ @param aFile The name of the file to open
+ */
+ void OpenStoreInFileL(const TDesC& aFile);
+
+ /**
+ Create the new store
+ @param aFile The name of the file to create
+ */
+ void CreateStoreInFileL(const TDesC& aFile);
+
+ /**
+ Write the In memory represtation to the store.
+ */
+ void WriteIdKeysToStoreL();
+
+ /**
+ Read the Id and keys from the store
+ */
+ void ReadIdKeysFromStoreL();
+
+private:
+ /**
+ Methods dealing with atomic updates to key data file
+ cleanup item that reverts the store.
+ */
+ static void RevertStore(TAny* aStore);
+ /**
+ Attempt to compact the store - it doesn't matter if these calls leave, it
+ will only mean that the store takes up more space than necessary.
+ */
+ void CompactStore();
+private:
+ RFile iFile;
+ RFs iFs;
+ /** FileStore Object */
+ CPermanentFileStore* iFileStore;
+ /** Root Stream that constains identityStreamId */
+ TStreamId iRootStreamId;
+ /** Identity Stream that contains dataStreamId and count of idHashes stored in the DB */
+ TStreamId iIdentityStreamId;
+ /** DB file Name */
+ TFileName iPluginDBName;
+private:
+ /** In memory representation of id in the store */
+ RArray<AuthServer::TIdentityId> iId;
+ /** In memory representation of hash in the store */
+ RPointerArray<HBufC8> iIdKeyHash;
+ };
+
+#endif /* PIN_PLUGINDB_H */