rtsecuritymanager/rtsecuritymanagerclient/src/rtsecmanager.cpp
changeset 0 99ef825efeca
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtsecuritymanager/rtsecuritymanagerclient/src/rtsecmanager.cpp	Mon Mar 30 12:51:20 2009 +0300
@@ -0,0 +1,328 @@
+/*
+* 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:       Defines CRTSecManager and CRTSecMgrClientProxy classes
+ *
+*/
+
+
+
+
+
+
+#include <coemain.h>
+#include <rtsecmanager.h>
+#include <rtsecmgrscriptsession.h>
+#include "rtsecmgrclient.h"
+#include "rtsecmgrtracer.h"
+
+/**
+ * Proxy delegate class for runtime security manager client-side
+ * session handle.
+ * 
+ * @lib rtsecmgrclient.lib
+ */
+class CRTSecMgrClientProxy : public CBase
+	{
+public:
+	CRTSecMgrClientProxy()
+		{
+		}
+
+	void ConstructL()
+		{
+		User::LeaveIfError (iSecSession.Connect ());
+		}
+
+	static CRTSecMgrClientProxy* NewL()
+		{
+		CRTSecMgrClientProxy* self = CRTSecMgrClientProxy::NewLC ();
+		CleanupStack::Pop (self);
+		return self;
+		}
+
+	static CRTSecMgrClientProxy* NewLC()
+		{
+		CRTSecMgrClientProxy* self = new (ELeave) CRTSecMgrClientProxy();
+		CleanupStack::PushL (self);
+		self->ConstructL ();
+		return self;
+		}
+
+	virtual ~CRTSecMgrClientProxy()
+		{
+		iSecSession.Close ();
+		}
+
+	RSecMgrSession& Session()
+		{
+		return iSecSession;
+		}
+	RSecMgrSession* operator ->()
+	{
+		return &iSecSession;
+	}
+private:
+	RSecMgrSession iSecSession;
+	};
+
+// ---------------------------------------------------------------------------
+// Defintiion of default private constructor
+// ---------------------------------------------------------------------------
+//
+CRTSecManager::CRTSecManager()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of second phase constructor
+//
+// Instantiates client proxy object, in turn creating a client-side
+// session
+// ---------------------------------------------------------------------------
+//
+void CRTSecManager::ConstructL()
+	{
+	iClientProxy = CRTSecMgrClientProxy::NewL ();
+
+#ifdef _DEBUG
+	if(CCoeEnv::Static())
+	{
+	CCoeEnv::Static()->DisableExitChecks(ETrue); 
+	}	
+#endif
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of second phase constructor
+//
+// Constructs a CRTSecManager instance
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CRTSecManager* CRTSecManager::NewL()
+	{
+	RTSecMgrCreateTraceFile() ;
+	CRTSecManager* self = CRTSecManager::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of second phase constructor
+//
+// Constructs a CRTSecManager instance and leaves the created instance
+// on the cleanupstack
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CRTSecManager* CRTSecManager::NewLC()
+	{
+	CRTSecManager* self = new (ELeave) CRTSecManager();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// Destructor
+//
+// Closes client-side session in turn closing the peer server
+// side session
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CRTSecManager::~CRTSecManager()
+	{
+	delete iClientProxy;
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of SetPolicy
+//
+// This method delegates the actual handling to the client-side session
+// handle class
+// ---------------------------------------------------------------------------
+EXPORT_C TPolicyID CRTSecManager::SetPolicy(const RFile& aSecPolicy)
+	{
+	RTSecMgrTraceFunction("CRTSecManager::SetPolicy(const RFile& aSecPolicy)") ;
+	return (*iClientProxy)->SetPolicy(aSecPolicy);
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of SetPolicy
+//
+// This method delegates the actual handling to the client-side session
+// handle class
+// ---------------------------------------------------------------------------
+EXPORT_C TPolicyID CRTSecManager::SetPolicy(const TDesC8& aPolicyBuffer)
+	{
+	RTSecMgrTraceFunction("CRTSecManager::SetPolicy(const TDesC8& aPolicyBuffer)") ;
+	return (*iClientProxy)->SetPolicy(aPolicyBuffer);
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of UnSetPolicy
+//
+// This method delegates the actual handling to the client-side session
+// handle class
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CRTSecManager::UnSetPolicy(TPolicyID aPolicyID)
+	{
+	RTSecMgrTraceFunction("CRTSecManager::UnSetPolicy(TPolicyID aPolicyID)") ;
+	return (*iClientProxy)->UnSetPolicy(aPolicyID);
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of UpdatePolicy
+//
+// This method delegates the actual handling to the client-side session
+// handle class
+// ---------------------------------------------------------------------------
+EXPORT_C TPolicyID CRTSecManager::UpdatePolicy(TPolicyID aPolicyID,const RFile& aSecPolicy)
+	{
+	RTSecMgrTraceFunction("CRTSecManager::UpdatePolicy(TPolicyID aPolicyID,const RFile& aSecPolicy)") ;
+	return (*iClientProxy)->UpdatePolicy(aPolicyID,aSecPolicy);
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of UpdatePolicy
+//
+// This method delegates the actual handling to the client-side session
+// handle class
+// ---------------------------------------------------------------------------
+EXPORT_C TPolicyID CRTSecManager::UpdatePolicy(TPolicyID aPolicyID,const TDesC8& aPolicyBuffer)
+	{
+	RTSecMgrTraceFunction("CRTSecManager::UpdatePolicy(TPolicyID aPolicyID,const TDesC8& aPolicyBuffer)") ;
+	return (*iClientProxy)->UpdatePolicy(aPolicyID,aPolicyBuffer);
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of RegisterScript
+//
+// This method delegates the actual handling to the client-side session
+// handle class
+// ---------------------------------------------------------------------------
+EXPORT_C TExecutableID CRTSecManager::RegisterScript(TPolicyID aPolicyID, const CTrustInfo& aTrustInfo)
+	{
+	RTSecMgrTraceFunction("CRTSecManager::RegisterScript(TPolicyID aPolicyID, const CTrustInfo& aTrustInfo)") ;
+	return (*iClientProxy)->RegisterScript(aPolicyID,aTrustInfo);
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of RegisterScript with script having hash value
+//
+// This method delegates the actual handling to the client-side session
+// handle class
+// ---------------------------------------------------------------------------
+EXPORT_C TExecutableID CRTSecManager::RegisterScript(TPolicyID aPolicyID, const TDesC& aHashMarker, const CTrustInfo& aTrustInfo)
+	{
+    RTSecMgrTraceFunction("CRTSecManager::RegisterScript(TPolicyID aPolicyID, const TDesC& aHashMarker, const CTrustInfo& aTrustInfo)") ;
+	return (*iClientProxy)->RegisterScript(aPolicyID,aHashMarker,aTrustInfo);
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of UnRegisterScript
+//
+// This method delegates the actual handling to the client-side session
+// handle class
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CRTSecManager::UnRegisterScript(TExecutableID aExeID, TPolicyID aPolicyID)
+	{
+    RTSecMgrTraceFunction("CRTSecManager::UnRegisterScript(TExecutableID aExeID, TPolicyID aPolicyID)") ;
+	return (*iClientProxy)->UnRegisterScript(aExeID,aPolicyID);
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of GetScriptSession
+//
+// This method starts a client-side sub-session handle, modelling script
+// session. This in turn creates a server-side peer sub-session handle
+// ---------------------------------------------------------------------------
+/*EXPORT_C CRTSecMgrScriptSession* CRTSecManager::GetScriptSession(TPolicyID aPolicyID,
+		TExecutableID aExecID,
+		MSecMgrPromptHandler* aPromptHdlr,const TDesC& aHashValue)
+	{
+	if(aExecID<=KAnonymousScript)
+		return NULL;
+
+	CRTSecMgrScriptSession* scriptSession = CRTSecMgrScriptSession::NewLC(aPromptHdlr);
+
+	if(KErrNone==scriptSession->Open(iClientProxy->Session(),aPolicyID,aExecID))
+		{
+		CleanupStack::Pop(scriptSession);
+		return scriptSession;
+		}
+
+	if(scriptSession)
+		CleanupStack::PopAndDestroy(scriptSession);
+
+	return NULL;
+	}*/
+
+
+// ---------------------------------------------------------------------------
+// Definition of GetScriptSession
+//
+// This method starts a client-side sub-session handle, modelling script
+// session. This in turn creates a server-side peer sub-session handle
+// ---------------------------------------------------------------------------
+EXPORT_C CRTSecMgrScriptSession* CRTSecManager::GetScriptSessionL(TPolicyID aPolicyID,
+		const CTrustInfo& aTrustInfo,
+		MSecMgrPromptHandler* aPromptHdlr)
+	{
+    RTSecMgrTraceFunction("CRTSecManager::GetScriptSession(TPolicyID aPolicyID,\
+		                   const CTrustInfo& aTrustInfo,\
+		                   MSecMgrPromptHandler* aPromptHdlr)") ;
+	CRTSecMgrScriptSession* scriptSession = CRTSecMgrScriptSession::NewLC(aPromptHdlr);
+
+	if(KErrNone==scriptSession->Open(iClientProxy->Session(),aPolicyID,KAnonymousScript,aTrustInfo))
+		{
+		CleanupStack::Pop(scriptSession);
+		return scriptSession;
+		}
+
+	if(scriptSession)
+		CleanupStack::PopAndDestroy(scriptSession);
+
+	return NULL;
+	}
+
+// ---------------------------------------------------------------------------
+// Definition of GetScriptSession
+//
+// This method starts a client-side sub-session handle, modelling script
+// session. This in turn creates a server-side peer sub-session handle
+// ---------------------------------------------------------------------------
+EXPORT_C CRTSecMgrScriptSession* CRTSecManager::GetScriptSessionL(TPolicyID aPolicyID,
+		TExecutableID aExecID,
+		MSecMgrPromptHandler* aPromptHdlr,
+		const TDesC& aHashValue)
+	{
+	RTSecMgrTraceFunction("CRTSecManager::GetScriptSession(TPolicyID aPolicyID,\
+		                   TExecutableID aExecID,MSecMgrPromptHandler* aPromptHdlr,\
+		                   const TDesC& aHashValue)") ;
+	if(aExecID<=KAnonymousScript)
+		return NULL;
+	
+	CRTSecMgrScriptSession* scriptSession = CRTSecMgrScriptSession::NewLC(aPromptHdlr);
+
+	if(KErrNone==scriptSession->Open(iClientProxy->Session(),aPolicyID,aExecID,aHashValue))
+		{
+		CleanupStack::Pop(scriptSession);
+		return scriptSession;
+		}
+
+	if(scriptSession)
+		CleanupStack::PopAndDestroy(scriptSession);
+
+	return NULL;
+	}
+