2 // System.Security.Permissions.SecurityPermissionAttribute.cs
4 // Author: Nick Drochak, ndrochak@gol.com
7 // Copyright (C) 2001 Nick Drochak, All Rights Reserved
8 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using System.Runtime.InteropServices;
32 namespace System.Security.Permissions {
38 System.AttributeTargets.Assembly
39 | System.AttributeTargets.Class
40 | System.AttributeTargets.Struct
41 | System.AttributeTargets.Constructor
42 | System.AttributeTargets.Method,
47 public sealed class SecurityPermissionAttribute : CodeAccessSecurityAttribute {
48 private SecurityPermissionFlag m_Flags;
50 public SecurityPermissionAttribute (SecurityAction action) : base(action)
52 m_Flags = SecurityPermissionFlag.NoFlags;
55 public bool Assertion {
57 return ((m_Flags & SecurityPermissionFlag.Assertion) != 0);
61 m_Flags |= SecurityPermissionFlag.Assertion;
64 m_Flags &= ~SecurityPermissionFlag.Assertion;
69 public bool BindingRedirects {
71 return ((m_Flags & SecurityPermissionFlag.BindingRedirects) != 0);
75 m_Flags |= SecurityPermissionFlag.BindingRedirects;
78 m_Flags &= ~SecurityPermissionFlag.BindingRedirects;
83 public bool ControlAppDomain {
85 return ((m_Flags & SecurityPermissionFlag.ControlAppDomain) != 0);
89 m_Flags |= SecurityPermissionFlag.ControlAppDomain;
92 m_Flags &= ~SecurityPermissionFlag.ControlAppDomain;
97 public bool ControlDomainPolicy {
99 return ((m_Flags & SecurityPermissionFlag.ControlDomainPolicy) != 0);
103 m_Flags |= SecurityPermissionFlag.ControlDomainPolicy;
106 m_Flags &= ~SecurityPermissionFlag.ControlDomainPolicy;
111 public bool ControlEvidence {
113 return ((m_Flags & SecurityPermissionFlag.ControlEvidence) != 0);
117 m_Flags |= SecurityPermissionFlag.ControlEvidence;
120 m_Flags &= ~SecurityPermissionFlag.ControlEvidence;
125 public bool ControlPolicy {
127 return ((m_Flags & SecurityPermissionFlag.ControlPolicy) != 0);
131 m_Flags |= SecurityPermissionFlag.ControlPolicy;
134 m_Flags &= ~SecurityPermissionFlag.ControlPolicy;
139 public bool ControlPrincipal {
141 return ((m_Flags & SecurityPermissionFlag.ControlPrincipal) != 0);
145 m_Flags |= SecurityPermissionFlag.ControlPrincipal;
148 m_Flags &= ~SecurityPermissionFlag.ControlPrincipal;
153 public bool ControlThread {
155 return ((m_Flags & SecurityPermissionFlag.ControlThread) != 0);
159 m_Flags |= SecurityPermissionFlag.ControlThread;
162 m_Flags &= ~SecurityPermissionFlag.ControlThread;
167 public bool Execution {
169 return ((m_Flags & SecurityPermissionFlag.Execution) != 0);
173 m_Flags |= SecurityPermissionFlag.Execution;
176 m_Flags &= ~SecurityPermissionFlag.Execution;
184 public bool Infrastructure {
186 return ((m_Flags & SecurityPermissionFlag.Infrastructure) != 0);
190 m_Flags |= SecurityPermissionFlag.Infrastructure;
193 m_Flags &= ~SecurityPermissionFlag.Infrastructure;
198 public bool RemotingConfiguration {
200 return ((m_Flags & SecurityPermissionFlag.RemotingConfiguration) != 0);
204 m_Flags |= SecurityPermissionFlag.RemotingConfiguration;
207 m_Flags &= ~SecurityPermissionFlag.RemotingConfiguration;
212 public bool SerializationFormatter {
214 return ((m_Flags & SecurityPermissionFlag.SerializationFormatter) != 0);
218 m_Flags |= SecurityPermissionFlag.SerializationFormatter;
221 m_Flags &= ~SecurityPermissionFlag.SerializationFormatter;
226 public bool SkipVerification {
228 return ((m_Flags & SecurityPermissionFlag.SkipVerification) != 0);
232 m_Flags |= SecurityPermissionFlag.SkipVerification;
235 m_Flags &= ~SecurityPermissionFlag.SkipVerification;
240 public bool UnmanagedCode {
242 return ((m_Flags & SecurityPermissionFlag.UnmanagedCode) != 0);
246 m_Flags |= SecurityPermissionFlag.UnmanagedCode;
249 m_Flags &= ~SecurityPermissionFlag.UnmanagedCode;
254 public override IPermission CreatePermission ()
256 SecurityPermission perm = null;
257 if (this.Unrestricted)
258 perm = new SecurityPermission (PermissionState.Unrestricted);
260 perm = new SecurityPermission (m_Flags);
264 public SecurityPermissionFlag Flags {
272 } // public sealed class SecurityPermissionAttribute
273 } // namespace System.Security.Permissions