--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/authenticationservices/authenticationserver/source/server/authdb.h Tue Nov 24 09:06:03 2009 +0200
@@ -0,0 +1,159 @@
+/*
+* 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:
+* CAuthDb Authentication server data store declaration
+*
+*/
+
+
+/**
+ @file
+ @released
+ @internalComponent
+*/
+
+#ifndef AUTHDB_H
+#define AUTHDB_H
+
+#include <d32dbms.h>
+#include "authserver/authtypes.h"
+#include "authserver/idandstring.h"
+
+namespace AuthServer
+{
+
+class CTransientKeyInfo;
+
+NONSHARABLE_CLASS(CAuthDb2) : public CBase
+ {
+public:
+ static CAuthDb2* NewL(RFs& aFs);
+ static CAuthDb2* NewLC(RFs& aFs);
+ virtual ~CAuthDb2();
+
+ // identities
+ TInt NumIdentitiesL();
+ void AddIdentityWithTrainedPluginL(
+ TIdentityId aIdentityId, const TDesC& aDesc,
+ const CTransientKeyInfo& aTransKeyInfo);
+ void AddIdentityL(TIdentityId aIdentityId, const TDesC& aDesc);
+ void RemoveIdentityL(TIdentityId aIdentityId);
+ void IdentitiesL(RArray<TIdentityId>& aResults);
+ HBufC* DescriptionL(TIdentityId aIdentityId);
+ void SetDescriptionL(TIdentityId aIdentityId, const TDesC& aDesc);
+ void IdentitiesWithDescriptionL(RIdAndStringArray& aList);
+ TIdentityId DefaultIdentityL();
+ // plugins
+ TInt NumPluginsL();
+ TInt NumTrainedPluginsL(TIdentityId aId);
+ // Returns list of plugins that are trained for the given identity
+ void TrainedPluginsListL(TIdentityId aIdentityId, RArray<TPluginId>& aTrainedPlugins);
+ TAuthTrainingStatus PluginStatusL(TPluginId aPluginId);
+
+ // preferences
+ void SetPreferredPluginL(TAuthPluginType aPluginType, TPluginId aPluginId);
+ void ClearPreferredPluginL(TAuthPluginType aPluginType);
+ TPluginId PreferredPluginL(TAuthPluginType aPluginType);
+
+ // trained plugins
+ void SetTrainedPluginL(
+ TIdentityId aIdentityId, TPluginId aPluginId, const CTransientKeyInfo& aTransKeyInfo);
+ void RemoveTrainedPluginL(TIdentityId aIdentityId, TPluginId aPluginId);
+ CTransientKeyInfo* KeyInfoL(TIdentityId aIdentity, TPluginId aPluginId);
+
+ void CompactIfRequired();
+ void CloseDbFile();
+ TInt OpenDbFileL(RFs& aFs, const TFileName& aDbName);
+
+private:
+ void ConstructL(RFs& aFs);
+
+ void FindExistingIdentityLC(RDbTable& aTable, RDbRowSet::TAccess aAccess, TIdentityId aIdentityId);
+ TBool FindIdentityLC(RDbTable& aTable, RDbRowSet::TAccess aAccess, TIdentityId aIdentityId);
+
+ TBool FindPrefLC(RDbTable& aTable, RDbRowSet::TAccess aAccess, TAuthPluginType aPluginType);
+
+ TBool FindTrainedPluginLC(
+ RDbTable& aTable, RDbRowSet::TAccess aAccess,
+ TIdentityId aIdentityId, TPluginId aPluginId);
+
+ TBool OpenTableAndNavigateLC(
+ RDbTable& aTable, const TDesC& aTableName, RDbRowSet::TAccess aAccess,
+ const TDesC& aIndexName, TUint aKey);
+ void OpenTableLC(
+ RDbTable& aTable, const TDesC& aTableName,
+ RDbRowSet::TAccess aAccess, const TDesC& aIndexName);
+ void CheckIdentityRegisteredL(TUint aIdentityId);
+
+ void CheckItemRegisteredL(
+ const TDesC& aTableName, const TDesC& aIndexName,
+ TUint aValue, TInt aNotFoundError);
+
+
+
+private:
+ /**
+ * The database file itself, used to persist identities
+ * when the server is not in use.
+ */
+ RDbNamedDatabase iAuthDbFile;
+
+ /**
+ * Keep track of whether the database is open or not.
+ */
+ TBool iIsDbOpen;
+
+ };
+
+
+// databases structure
+
+_LIT(KDbName, "!:\\private\\102740FC\\auth.db");
+
+/** Identities table name. */
+_LIT(KIdentitiesTableName, "Identities");
+/** Identities index number */
+_LIT(KIdentitiesIndex, "identityIdx");
+/** Identities index number.- Based on order of insertion */
+_LIT(KIdIndexNum, "idIndex");
+/** Identity column number in Identities table. */
+const TInt KIdentitiesIdentityIdCol = 2;
+/** Description column number in Identities table. */
+const TInt KIdentitiesDescCol = 3;
+
+/** Prefs table name. */
+_LIT(KPrefsTableName, "Prefs");
+/** Prefs index name. */
+_LIT(KPrefsTypeIndex, "typeIdx");
+
+/** Type column number in Prefs table. */
+const TInt KPrefsTypeCol = 1;
+/** PluginId column number is Prefs table. */
+const TInt KPrefsIdCol = 2;
+
+/** TrainedPlugins table name. */
+_LIT(KTpTableName, "TrainedPlugins");
+/** TrainedPlugins index name. */
+_LIT(KTpIndex, "identityPluginIdx");
+
+/** IdentityId column number in TrainedPlugins table. */
+const TInt KTpIdentityIdCol = 1;
+/** PluginId column number in TrainedPlugins table. */
+const TInt KTpPluginIdCol = 2;
+/** TransientKey column number in TrainedPlugins table. */
+const TInt KTpTransientKeyCol = 3;
+
+} // namespace AuthServer
+
+#endif // AUTHDB_H