2005-01-24 Ben Maurer <bmaurer@ximian.com>
[mono-project.git] / mono / metadata / security-manager.c
blob06f5fec87740151e0a4ad659ef79805bb6f0d89d
1 /*
2 * security-manager.c: Security Manager (Unmanaged side)
4 * Author:
5 * Sebastien Pouliot <sebastien@ximian.com>
7 * Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
8 */
10 #include "security-manager.h"
13 /* Internal stuff */
15 static MonoSecurityManager secman;
16 static MonoBoolean mono_security_manager_activated = FALSE;
17 static MonoBoolean mono_security_manager_enabled = TRUE;
18 static MonoBoolean mono_security_manager_execution = TRUE;
21 /* Public stuff */
23 MonoSecurityManager*
24 mono_security_manager_get_methods (void)
26 /* Already initialized ? */
27 if (secman.securitymanager)
28 return &secman;
30 /* Initialize */
31 secman.securitymanager = mono_class_from_name (mono_defaults.corlib,
32 "System.Security", "SecurityManager");
33 g_assert (secman.securitymanager);
34 if (!secman.securitymanager->inited)
35 mono_class_init (secman.securitymanager);
37 secman.demand = mono_class_get_method_from_name (secman.securitymanager,
38 "InternalDemand", 2);
39 secman.inheritancedemand = mono_class_get_method_from_name (secman.securitymanager,
40 "InheritanceDemand", 2);
41 secman.linkdemand = mono_class_get_method_from_name (secman.securitymanager,
42 "LinkDemand", 9);
44 return &secman;
48 * Note: The security manager is activate once when executing the Mono. This
49 * is not meant to be a turn on/off runtime switch.
51 void
52 mono_activate_security_manager (void)
54 mono_security_manager_activated = TRUE;
57 gboolean
58 mono_is_security_manager_active (void)
60 return mono_security_manager_activated;
63 MonoBoolean
64 ves_icall_System_Security_SecurityManager_get_SecurityEnabled (void)
66 if (!mono_security_manager_activated)
67 return FALSE;
68 return mono_security_manager_enabled;
71 void
72 ves_icall_System_Security_SecurityManager_set_SecurityEnabled (MonoBoolean value)
74 /* value can be changed only if the security manager is activated */
75 if (mono_security_manager_activated) {
76 mono_security_manager_enabled = value;
80 MonoBoolean
81 ves_icall_System_Security_SecurityManager_get_CheckExecutionRights (void)
83 if (!mono_security_manager_activated)
84 return FALSE;
85 return mono_security_manager_execution;
88 void
89 ves_icall_System_Security_SecurityManager_set_CheckExecutionRights (MonoBoolean value)
91 /* value can be changed only id the security manager is activated */
92 if (mono_security_manager_activated) {
93 mono_security_manager_execution = value;