X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fsecurity-manager.h;h=747f61723b397f08a6c23d58e32335e7bcfe1bc5;hb=6607fdf5790c0b31a5f742787e3687bf941b53f1;hp=d636adf8a374f05e1363fd8dc9b4f65e858d77e0;hpb=59fa8c6d4184829752c02a5fc6921283f0da846d;p=mono.git diff --git a/mono/metadata/security-manager.h b/mono/metadata/security-manager.h index d636adf8a37..747f61723b3 100644 --- a/mono/metadata/security-manager.h +++ b/mono/metadata/security-manager.h @@ -14,27 +14,87 @@ #include "object.h" #include "metadata-internals.h" +#include "domain-internals.h" #include "tokentype.h" #include "threads.h" #include "marshal.h" +#include "image.h" +#include "reflection.h" +#include "tabledefs.h" +/* Definitions */ + +#define MONO_ECMA_KEY_LENGTH 16 +#define MONO_PUBLIC_KEY_HEADER_LENGTH 32 +#define MONO_MINIMUM_PUBLIC_KEY_LENGTH 48 +#define MONO_DEFAULT_PUBLIC_KEY_LENGTH 128 + +#define MONO_PUBLIC_KEY_BIT_SIZE(x) ((x - MONO_PUBLIC_KEY_HEADER_LENGTH) << 3) + +enum { + MONO_METADATA_SECURITY_OK = 0x00, + MONO_METADATA_INHERITANCEDEMAND_CLASS = 0x01, + MONO_METADATA_INHERITANCEDEMAND_METHOD = 0x02 +}; + +typedef enum { + MONO_SECURITY_MODE_NONE, + MONO_SECURITY_MODE_CORE_CLR, + MONO_SECURITY_MODE_CAS, + MONO_SECURITY_MODE_SMCS_HACK +} MonoSecurityMode; + /* Structures */ typedef struct { MonoClass *securitymanager; /* System.Security.SecurityManager */ MonoMethod *demand; /* SecurityManager.InternalDemand */ MonoMethod *demandchoice; /* SecurityManager.InternalDemandChoice */ - MonoMethod *assert; /* SecurityManager.InternalAssert */ - MonoMethod *deny; /* SecurityManager.InternalDeny */ - MonoMethod *permitonly; /* SecurityManager.InternalPermitOnly */ - MonoMethod *linkdemand; /* SecurityManager.LinkDemand */ + MonoMethod *demandunmanaged; /* SecurityManager.DemandUnmanaged */ MonoMethod *inheritancedemand; /* SecurityManager.InheritanceDemand */ + MonoMethod *inheritsecurityexception; /* SecurityManager.InheritanceDemandSecurityException */ + MonoMethod *linkdemand; /* SecurityManager.LinkDemand */ + MonoMethod *linkdemandfulltrust; /* SecurityManager.LinkDemandFullTrust */ + MonoMethod *linkdemandunmanaged; /* SecurityManager.LinkDemandUnmanaged */ + MonoMethod *linkdemandsecurityexception;/* SecurityManager.LinkDemandSecurityException */ + + MonoClass *allowpartiallytrustedcallers; /* System.Security.AllowPartiallyTrustedCallersAttribute */ + MonoClass *suppressunmanagedcodesecurity; /* System.Security.SuppressUnmanagedCodeSecurityAttribute */ } MonoSecurityManager; +gboolean mono_is_ecma_key (const char *publickey, int size) MONO_INTERNAL; +MonoMethod* mono_get_context_capture_method (void) MONO_INTERNAL; + +void mono_secman_inheritancedemand_class (MonoClass *klass, MonoClass *parent) MONO_INTERNAL; +void mono_secman_inheritancedemand_method (MonoMethod *override, MonoMethod *base) MONO_INTERNAL; /* Initialization/utility functions */ -MonoSecurityManager* mono_security_manager_get_methods (void); +void mono_activate_security_manager (void) MONO_INTERNAL; +MonoSecurityManager* mono_security_manager_get_methods (void) MONO_INTERNAL; + +/* Security mode */ +gboolean mono_is_security_manager_active (void) MONO_INTERNAL; +void mono_security_set_mode (MonoSecurityMode mode) MONO_INTERNAL; +MonoSecurityMode mono_security_get_mode (void) MONO_INTERNAL; + +/* internal calls */ +MonoBoolean ves_icall_System_Security_SecurityManager_get_SecurityEnabled (void) MONO_INTERNAL; +void ves_icall_System_Security_SecurityManager_set_SecurityEnabled (MonoBoolean value) MONO_INTERNAL; +MonoBoolean ves_icall_System_Security_SecurityManager_get_CheckExecutionRights (void) MONO_INTERNAL; +void ves_icall_System_Security_SecurityManager_set_CheckExecutionRights (MonoBoolean value) MONO_INTERNAL; +MonoBoolean ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (MonoReflectionMethod *m, MonoDeclSecurityActions *kactions, MonoDeclSecurityActions *mactions) MONO_INTERNAL; +#ifndef DISABLE_SECURITY +#define mono_security_enabled() (mono_is_security_manager_active ()) +#define mono_security_cas_enabled() (mono_security_get_mode () == MONO_SECURITY_MODE_CAS) +#define mono_security_core_clr_enabled() (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR) +#define mono_security_smcs_hack_enabled() (mono_security_get_mode () == MONO_SECURITY_MODE_SMCS_HACK) +#else +#define mono_security_enabled() (FALSE) +#define mono_security_cas_enabled() (FALSE) +#define mono_security_core_clr_enabled() (FALSE) +#define mono_security_smcs_hack_enabled() (FALSE) +#endif #endif /* _MONO_METADATA_SECURITY_MANAGER_H_ */