diff -r 000000000000 -r 99ef825efeca rtsecuritymanager/rtsecuritymanagerclient/inc/rtsecmgrclient.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rtsecuritymanager/rtsecuritymanagerclient/inc/rtsecmgrclient.h Mon Mar 30 12:51:20 2009 +0300 @@ -0,0 +1,345 @@ +/* +* 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: Security Manager Client Side sub-Session Class + * +*/ + + + + + + +#ifndef _R_RSECMGRSESSION_H_ +#define _R_RSECMGRSESSION_H_ + +#include +#include +#include + +#include +#include +#include + +class CTrustInfo; +class CScript; +class CEikonEnv; + +/** + * + * RSecMgrSession represents the client side session handle. + * + * This class mainly communicates with the corresponding server side session object. + * The main reponsibility of this class is to package the input parameters, + * invoke a server request and unpack the server response appropriately. + * + * @lib rtsecmgrclient.lib + */ +NONSHARABLE_CLASS(RSecMgrSession) : public RSessionBase + { +public: + + /** + * Default constructor + * + */ + RSecMgrSession(); + + /** + * Connects to the runtime security manager server resulting in the creation + * of peer server side session object + * + * @return TInt KErrNone if successful; In case of failure, one of system-wide + * error codes + * + */ + TInt Connect(); + + /** + * Gets the version of runtime security manager component + * + * @return TVersion version of runtime security manager + * + */ + TVersion Version() const; + + /** + * Closes the session with the runtime security manager server + * + */ + void Close(); + + /** + * Registers the runtime security policy with security manager. This method + * packs the message parameters required for registering the policy. + * + * The various parameters required for SetPolicy operation are : + * + * Operation Code : ESetPolicy + * IPC Argument[0] : Policy Identifier (as inOut parameter) + * IPC Argument[1] : SecurityPolicy FileHandle + * IPC Argument[2] : SecurityPolicy FileSession object + * IPC Argument[3] : none + * + * @param aSecPolicy RFile Handle to security policy file + * + * @return TPolicyID generated policy identifier if successul; Otherwise one of + * system wide error codes + * + */ + TPolicyID SetPolicy(const RFile& aSecPolicy); + + /** + * Registers the runtime security policy with security manager. This method + * packs the message parameters required for registering the policy. + * + * The various parameters required for SetPolicy operation are : + * + * Operation Code : ESetPolicy + * IPC Argument[0] : Policy Identifier (as inOut parameter) + * IPC Argument[1] : PolicyBuffer + * IPC Argument[2] : SecurityPolicy FileSession object + * IPC Argument[3] : none + * + * @param aSecPolicy RFile Handle to security policy file + * + * @return TPolicyID generated policy identifier if successul; Otherwise one of + * system wide error codes + * + */ + TPolicyID SetPolicy(const TDesC8& aPolicyBuffer); + + /** + * UnRegisters a registered security policy. Runtimes should call this function + * to de-register the already registered security policy. + * + * The various parameters required for UnSetPolicy operation are : + * + * Operation Code : EUnsetPolicy + * IPC Argument[0] : Policy Identifier to un-register + * IPC Argument[1] : Successcode (as inOut parameter) + * IPC Argument[2] : none + * IPC Argument[3] : none + * + * @param aPolicyID TPolicyID Policy identifier previously generated with SetPolicy + * + * @return TInt One of sytem wide error codes in case of failure; Otherwise KErrNone + * + */ + TInt UnSetPolicy(TPolicyID aPolicyID); + + /** + * Updates an already registered security policy. Runtimes should call this function + * to update their policy. + * + * The various parameters required for UpdatePolicy operation are : + * + * Operation Code : EUpdatePolicy + * IPC Argument[0] : Policy Identifier + * IPC Argument[1] : SecurityPolicy FileHandle + * IPC Argument[2] : SecurityPolicy FileSession object + * IPC Argument[3] : none + * + * @param aPolicyID TPolicyID Policy identifier previously generated with SetPolicy + * @param aSecPolicy RFile Handle to security policy file + * + * @see SetPolicy for file session pre-conditions + * + * @return TPolicyID One of sytem wide error codes in case of failure; Otherwise the passed policyID + * + */ + TPolicyID UpdatePolicy(TPolicyID aPolicyID, const RFile& aSecPolicy); + + /** + * Updates an already registered security policy. Runtimes should call this function + * to update their policy. + * + * The various parameters required for UpdatePolicy operation are : + * + * Operation Code : EUpdatePolicy + * IPC Argument[0] : Policy Identifier + * IPC Argument[1] : SecurityPolicy FileBuffer + * IPC Argument[2] : SecurityPolicy FileSession object + * IPC Argument[3] : none + * + * @param aPolicyID TPolicyID Policy identifier previously generated with SetPolicy + * @param aSecPolicy RFile Handle to security policy file + * + * @see SetPolicy for file session pre-conditions + * + * @return TPolicyID One of sytem wide error codes in case of failure; Otherwise the passed policyID + * + */ + TPolicyID UpdatePolicy(TPolicyID aPolicyID, const TDesC8& aPolicyBuffer); + + /** + * Registers a script/executable. Runtimes should specify the trust information + * of the script to be registered. + * + * Operation Code : ERegisterScript + * IPC Argument[0] : Policy Identifier + * IPC Argument[1] : Script Identifier (as inOut Parameter) + * IPC Argument[2] : none + * IPC Argument[3] : none + * + * @param aPolicyID TPolicyID Runtime's registered policy identifier + * @param aTrustInfo CTrustInfo a valid instance of CTrustInfo object + * + * @return TExecutableID generated executable identifier if successul; Otherwise one of + * system wide error codes + * + */ + TExecutableID RegisterScript(TPolicyID aPolicyID, + const CTrustInfo& aTrustInfo); + + /** + * Registers a script/executable. Runtimes should specify the trust information + * of the script to be registered. + * + * Operation Code : ERegisterScript + * IPC Argument[0] : Policy Identifier + * IPC Argument[1] : Script Identifier (as inOut Parameter) + * IPC Argument[2] : hash value of script + * IPC Argument[3] : none + * + * + * @param aPolicyID TPolicyID Runtime's registered policy identifier + * @param aHashMarker const TDesC& Hash value to identify script when starting script session + * @param aTrustInfo CTrustInfo a valid instance of CTrustInfo object + * + * @return TExecutableID generated executable identifier if successul; Otherwise one of + * system wide error codes + * + */ + TExecutableID RegisterScript(TPolicyID aPolicyID, const TDesC& aHashMarker, + const CTrustInfo& aTrustInfo); + + /** + * De-Registers a script/executable. Runtimes should pass the previously registered + * script identifier corresponding to the script to be de-registered. + * + * Operation Code : EUnRegisterScript + * IPC Argument[0] : Script Identifier + * IPC Argument[1] : Policy Identifier + * IPC Argument[2] : Success code (as inOut parameter) + * IPC Argument[3] : none + * + * + * @param aExeID TExecutableID A valid script identifier + * + * @return TInt One of sytem wide error codes in case of failure; Otherwise KErrNone + * + */ + TInt UnRegisterScript(TExecutableID aExeID, TPolicyID aPolicyID); + + +private: + + /** + * Starts security manager server if it is not already started + * + * @return TInt One of sytem wide error codes in case of failure; Otherwise KErrNone + * + */ + TInt StartSecManagerServer() const; + + /** + * Returns security manager server location + * + * @return TFullName Server location path + * + */ + TFullName ServerLocation() const; + }; + +/** + * + * Represents the client side sub-session handle. This class mainly + * communicates with the corresponding server side sub-session handle. + * + * The main reponsibilities of this class are : + * + * - to store the pre-computed capability set of the script associated with the session object + * - to invoke the prompt handler + * - to notify the server sub-session object in case of permanent grant change + * + * @lib rtsecmgrclient.lib + */ +NONSHARABLE_CLASS(RSecMgrSubSession) : public RSubSessionBase + { +public: + + RSecMgrSubSession(); + + /** + * Opens client-side sub-session. The script session is modelled as a + * client side sub-session with a peer server side sub-session. + * + * @param aSession RSessionBase handle to client side session + * @param aScriptInfo CScript the underlying script object + * @param aPolicyID TPolicyID policy identifier of the runtime security policy associated with the + * script + * + * @return KErrNone if creation of sub-session is successful; In case of failure, + * one of system-wide error codes + */ + TInt Open(const RSessionBase& aSession, CScript& aScriptInfo, + TPolicyID aPolicyID, const TDesC& aHashValue = KNullDesC()); + + /** + * Opens client-side sub-session for an un-registered trusted script. The script session is modelled as a + * client side sub-session with a peer server side sub-session. + * + * @param aSession RSessionBase handle to client side session + * @param aScriptInfo CScript the underlying script object + * @param aPolicyID TPolicyID policy identifier of the runtime security policy associated with the + * script + * @param aTrustInfo CTrustInfo trust data structure + * + * @return KErrNone if creation of sub-session is successful; In case of failure, + * one of system-wide error codes + */ + TInt Open(const RSessionBase& aServer, CScript& aScriptInfo, + TPolicyID aPolicyID,const CTrustInfo& aTrustInfo); + + /** + * Closes the script session, inturn closing the sub-session on + * either side of client and server + * + */ + void Close(); + + /** + * Updates the blanket permission data of the script + * + * @param aScriptID TExecutableID Identifier of the scipt + * @param aPermGrant TPermGrant Blanket allowed data + * @param aPermDenied TPermGrant Blanket denied data + * + * @return KErrNone if update of blanket permission successul; Otherwise one of + * system wide error codes + * + */ + TInt UpdatePermGrant(TExecutableID aScriptID, TPermGrant aPermGrant, + TPermGrant aPermDenied) const; + + +private: + + //CEikonEnv* iEnv; + + RFs iFs; + }; + +#endif //_R_RSECMGRSESSION_H_ +