# mono-api-security.html

### Security Manager

### Declarative Security

`mono_declsec_flags_from_assembly`
Syntax
guint32 mono_declsec_flags_from_assembly (MonoAssembly *assembly)

Parameters

assembly | The assembly for which we want the declarative security flags.

Return value
the declarative security flags for the assembly.
Description
Get the security actions (in the form of flags) associated with the specified assembly.
`mono_declsec_flags_from_class`
Syntax
guint32 mono_declsec_flags_from_class (MonoClass *klass)

Parameters

klass | The class for which we want the declarative security flags.

Return value
the declarative security flags for the class.
Description
Get the security actions (in the form of flags) associated with the specified class. We cache the flags inside the `MonoClass` structure as this will get called very often (at least for each method).
`mono_declsec_flags_from_method`
Syntax
guint32 mono_declsec_flags_from_method (MonoMethod *method)

Parameters

method | The method for which we want the declarative security flags.

Return value
the declarative security flags for the method (only).
Description
Get the security actions (in the form of flags) associated with the specified method. To keep `MonoMethod` size down we do not cache the declarative security flags (except for the stack modifiers which are kept in the MonoJitInfo structure)
`mono_declsec_get_assembly_action`
Syntax
MonoBoolean mono_declsec_get_assembly_action (MonoAssembly *assembly, guint32 action, MonoDeclSecurityEntry *entry)

`mono_declsec_get_class_action`
Syntax
MonoBoolean mono_declsec_get_class_action (MonoClass *klass, guint32 action, MonoDeclSecurityEntry *entry)

`mono_declsec_get_demands`
Syntax
MonoBoolean mono_declsec_get_demands (MonoMethod *method, MonoDeclSecurityActions* demands)

Description
Collect all actions (that requires to generate code in mini) assigned for the specified method. Don't use the content of actions if the function return `FALSE`.
`mono_declsec_get_inheritdemands_class`
Syntax
MonoBoolean mono_declsec_get_inheritdemands_class (MonoClass *klass, MonoDeclSecurityActions* demands)

Parameters

klass | The inherited class - this is the class that provides the security check (attributes)
demands |

Return value
`TRUE` if inheritance demands (any kind) are present, `FALSE` otherwise.
Description
Collect all Inherit actions - `InheritanceDemand`, `NonCasInheritanceDemand` and `InheritanceDemandChoice` (2.0). Don't use the content of actions if the function return `FALSE`.
`mono_declsec_get_inheritdemands_method`
Syntax
MonoBoolean mono_declsec_get_inheritdemands_method (MonoMethod *method, MonoDeclSecurityActions* demands)

Parameters

actions | `InheritanceDemand`, `NonCasInheritanceDemand` and `InheritanceDemandChoice` (2.0).

Description
Don't use the content of actions if the function return `FALSE`.
`mono_declsec_get_linkdemands`
Syntax
MonoBoolean mono_declsec_get_linkdemands (MonoMethod *method, MonoDeclSecurityActions* klass, MonoDeclSecurityActions *cmethod)

Parameters

actions | `LinkDemand`, `NonCasLinkDemand` and `LinkDemandChoice` (2.0).

Description
Don't use the content of actions if the function return `FALSE`.