diff -r 000000000000 -r 99ef825efeca rtsecuritymanager/rtsecuritymanagerserver/inc/rtsecmgrscriptmanager.h --- /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 +#include +#include +#include "rtsecmgrdef.h" +#include "rtsecmgrstore.h" + +//Forward declarations +class CSecMgrStore; +class CPolicyManager; + +typedef RPointerArray 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 +