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 {
34 #if NET_2_1 && !MONOTOUCH
35 [Obsolete ("CAS support is not available with Silverlight applications.")]
39 System.AttributeTargets.Assembly
40 | System.AttributeTargets.Class
41 | System.AttributeTargets.Struct
42 | System.AttributeTargets.Constructor
43 | System.AttributeTargets.Method,
48 public sealed class SecurityPermissionAttribute : CodeAccessSecurityAttribute {
49 private SecurityPermissionFlag m_Flags;
51 public SecurityPermissionAttribute (SecurityAction action) : base(action)
53 m_Flags = SecurityPermissionFlag.NoFlags;
56 public bool Assertion {
58 return ((m_Flags & SecurityPermissionFlag.Assertion) != 0);
62 m_Flags |= SecurityPermissionFlag.Assertion;
65 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;
182 public bool Infrastructure {
184 return ((m_Flags & SecurityPermissionFlag.Infrastructure) != 0);
188 m_Flags |= SecurityPermissionFlag.Infrastructure;
191 m_Flags &= ~SecurityPermissionFlag.Infrastructure;
196 public bool RemotingConfiguration {
198 return ((m_Flags & SecurityPermissionFlag.RemotingConfiguration) != 0);
202 m_Flags |= SecurityPermissionFlag.RemotingConfiguration;
205 m_Flags &= ~SecurityPermissionFlag.RemotingConfiguration;
210 public bool SerializationFormatter {
212 return ((m_Flags & SecurityPermissionFlag.SerializationFormatter) != 0);
216 m_Flags |= SecurityPermissionFlag.SerializationFormatter;
219 m_Flags &= ~SecurityPermissionFlag.SerializationFormatter;
224 public bool SkipVerification {
226 return ((m_Flags & SecurityPermissionFlag.SkipVerification) != 0);
230 m_Flags |= SecurityPermissionFlag.SkipVerification;
233 m_Flags &= ~SecurityPermissionFlag.SkipVerification;
238 public bool UnmanagedCode {
240 return ((m_Flags & SecurityPermissionFlag.UnmanagedCode) != 0);
244 m_Flags |= SecurityPermissionFlag.UnmanagedCode;
247 m_Flags &= ~SecurityPermissionFlag.UnmanagedCode;
252 public override IPermission CreatePermission ()
257 SecurityPermission perm = null;
258 if (this.Unrestricted)
259 perm = new SecurityPermission (PermissionState.Unrestricted);
261 perm = new SecurityPermission (m_Flags);
266 public SecurityPermissionFlag Flags {
274 } // public sealed class SecurityPermissionAttribute
275 } // namespace System.Security.Permissions