--- /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;
+ }
+