X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fsecurity-manager.h;h=2548eed80dff826f4736ac48c82c2fb7d66def9a;hb=3f011fdb1d5afcb204821af8628830e7c4cbd050;hp=92ae635a720e46bc5b45e9c221fd70490f0d5abe;hpb=4e0c08ec4110c5984da2cc964b23c9a533d25d31;p=mono.git diff --git a/mono/metadata/security-manager.h b/mono/metadata/security-manager.h index 92ae635a720..2548eed80df 100644 --- a/mono/metadata/security-manager.h +++ b/mono/metadata/security-manager.h @@ -14,16 +14,36 @@ #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 */ @@ -31,30 +51,38 @@ 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 *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 *aptc; /* System.Security.AllowPartiallyTrustedCallersAttribute */ -} MonoSecurityManager; + MonoClass *allowpartiallytrustedcallers; /* System.Security.AllowPartiallyTrustedCallersAttribute */ + MonoClass *suppressunmanagedcodesecurity; /* System.Security.SuppressUnmanagedCodeSecurityAttribute */ +} MonoSecurityManager; /* Initialization/utility functions */ -void mono_activate_security_manager (void); -gboolean mono_is_security_manager_active (void); -MonoSecurityManager* mono_security_manager_get_methods (void); -gboolean mono_is_ecma_key (char *publickey, int size); +void mono_activate_security_manager (void) MONO_INTERNAL; +gboolean mono_is_security_manager_active (void) MONO_INTERNAL; +MonoSecurityManager* mono_security_manager_get_methods (void) MONO_INTERNAL; +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; +/* Security mode */ +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); -void ves_icall_System_Security_SecurityManager_set_SecurityEnabled (MonoBoolean value); -MonoBoolean ves_icall_System_Security_SecurityManager_get_CheckExecutionRights (void); -void ves_icall_System_Security_SecurityManager_set_CheckExecutionRights (MonoBoolean value); +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; #endif /* _MONO_METADATA_SECURITY_MANAGER_H_ */