rtsecuritymanager/rtsecuritymanagerserver/inc/rtsecmgrscriptmanager.h
changeset 0 99ef825efeca
child 18 a7062f7f0b79
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtsecuritymanager/rtsecuritymanagerserver/inc/rtsecmgrscriptmanager.h	Mon Mar 30 12:51:20 2009 +0300
@@ -0,0 +1,203 @@
+/*
+* Copyright (c) 2007-2008 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:       Definition of script manager class
+ *
+*/
+
+
+
+
+
+
+#ifndef C_RTSECMGRSCRIPTMANAGER_H
+#define C_RTSECMGRSCRIPTMANAGER_H
+
+#include <e32capability.h>
+#include <rtsecmgrutility.h>
+#include <rtsecmgrscript.h>
+#include "rtsecmgrdef.h"
+#include "rtsecmgrstore.h"
+
+//Forward declarations
+class CSecMgrStore;
+class CPolicyManager;
+
+typedef RPointerArray<CScript> RScripts;
+
+/*
+ * Models the cache to maintain the list of registered script
+ * data. Provides operations to register script, de-register 
+ * script, query script related information.
+ *
+ * This class abstracts the underlying persistent storage to
+ * store script related data.
+ *
+ * @see CSecMgrStore
+ * @see CPolicyManager
+ * @see CScript
+ * 
+ * @exe rtsecmgrserver.exe
+ */
+class CScriptManager : public CBase
+	{
+public:
+	/**
+	 * Two-phased constructor
+	 * 
+	 * Constructs a CScriptManager instance
+	 * 
+	 * @param aSecMgrDB CSecMgrStore* reference to security manager store
+	 * @param aPolicyMgr CPolicyManager* reference to policymanager instance
+	 * 
+	 * @return CScriptManager* pointer to an instance of CScriptManager
+	 */
+	static CScriptManager* NewL(CSecMgrStore* aSecMgrDB,
+			CPolicyManager* aPolicyMgr);
+
+	/**
+	 * Two-phased constructor
+	 * 
+	 * Constructs a CScriptManager instance and leaves the created instance
+	 * on the cleanupstack
+	 * 
+	 * @param aSecMgrDB CSecMgrStore* reference to security manager store
+	 * @param aPolicyMgr CPolicyManager* reference to policymanager instance
+	 * 
+	 * @return CScriptManager* pointer to an instance of CScriptManager
+	 */
+	static CScriptManager* NewLC(CSecMgrStore* aSecMgrDB,
+			CPolicyManager* aPolicyMgr);
+
+	/**
+	 * Destructor
+	 * 
+	 * Performs clean-up of transient script store cache
+	 * 
+	 */
+	virtual ~CScriptManager();
+
+	/**
+	 * Registers a script based on a policy identified by
+	 * input policy identifier with security manager
+	 * 
+	 * @param aPolicyID TPolicyID input policy identifier of the script
+	 * 
+	 * @return TExecutableID script identifier of the registered script
+	 */
+	TExecutableID
+			RegisterScript(TPolicyID aPolicyID);
+
+	/**
+	 * Registers a script with hashvalue based on a policy identified by
+	 * input policy identifier with security manager. 
+	 * 
+	 * @param aPolicyID TPolicyID input policy identifier of the script
+	 * @param aHashValue const TDesC& hashValue of the script
+	 * 
+	 * @return TExecutableID script identifier of the registered script
+	 */
+	TExecutableID
+			RegisterScript(TPolicyID aPolicyID, const TDesC& aHashValue);
+
+	/**
+	 * Un-Registers a script
+	 * 
+	 * @param aExecID script identifier of the registered script
+	 * @param aPolicyID policy identifier passed while registering script
+	 * 
+	 */
+	void UnRegisterScriptL(TExecutableID aExecID, TPolicyID aPolicyID);
+
+	/**
+	 * Gets underlying script data
+	 * 
+	 * @param aScriptInfo CScript& output script data
+	 * 
+	 * @return KErrNone if script data could be returned; Otherwise one of
+	 * system error codes
+	 * 
+	 */
+	TInt ScriptInfo(CScript& aScriptInfo);
+
+	/**
+	 * Updates permanently granted or denied permission data
+	 * of the script
+	 * 
+	 * @param aExecID 	 TExecutableID script identifier
+	 * @param aPermGrant TPermGrant permanently allowed permission
+	 * @param aPermDenied TPermGrant permanently denied permission
+	 * 
+	 */
+	void UpdatePermGrantL(TExecutableID aExecID, TPermGrant aPermGrant,
+			TPermGrant aPermDenied);
+
+	/**
+	 * Gets the script file name
+	 * 
+	 * @param aExecID 	 TExecutableID script identifier
+	 * @param TDes& Output file name
+	 * 
+	 * @return KErrNone if operation is successful; Otherwise one of
+	 * system wide error codes
+	 * 
+	 */
+	TInt GetScriptFile(TExecutableID aExecID, TDes& aScriptFile);
+
+private:
+
+	/**
+	 * Overloaded constructor to initialise internal
+	 * state of CScriptManager
+	 * 
+	 */
+	inline CScriptManager(CSecMgrStore* aSecMgrDB, CPolicyManager* aPolicyMgr) :
+		iSecMgrDB(aSecMgrDB), iPolicyMgr(aPolicyMgr)
+		{
+		}
+
+	/**
+	 * Two-phased constructor
+	 * 
+	 */
+	void ConstructL();
+
+	/**
+	 * Generates a new script identifier
+	 * 
+	 */
+	inline TExecutableID GetID()
+		{
+		if ( --iID > 0)
+			return iID;
+
+		return (TExecutableID)KSecurityServerUid2Int;
+		}
+
+private:
+	
+	//list of script data structure
+	RScripts iScripts;
+	
+	//reference to security manager store
+	CSecMgrStore* iSecMgrDB;
+	
+	//reference to policymanager instance	
+	CPolicyManager* iPolicyMgr;
+	
+	//Last generated script identifier
+	TExecutableID iID;
+	};
+
+#endif  //C_RTSECMGRSCRIPTMANAGER_H
+