Merge pull request #1857 from slluis/fix-assembly-resolver
[mono.git] / mcs / class / corlib / ReferenceSources / SecurityContext.cs
1 //
2 // SecurityContext.cs: This is CAS disabled SecurityContext version
3 //                     it does nothing but has same public API
4 //
5 // Authors:
6 //      Marek Safar  <marek.safar@gmail.com>
7 //
8 // Copyright (C) 2015 Xamarin Inc (http://www.xamarin.com)
9 //
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:
17 //
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 //
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.
28 //
29
30 #if !FEATURE_COMPRESSEDSTACK
31
32 using System.Runtime.InteropServices;
33 using System.Security.Permissions;
34 using System.Security.Principal;
35 using System.Threading;
36
37 namespace System.Security {
38
39         public sealed class SecurityContext : IDisposable
40         {
41                 private SecurityContext ()
42                 {
43                 }
44
45                 public SecurityContext CreateCopy ()
46                 {
47                         return this;
48                 }
49
50                 static public SecurityContext Capture ()
51                 {
52                         return new SecurityContext ();
53                 }
54                 
55                 public void Dispose ()
56                 {
57                 }
58
59                 static public bool IsFlowSuppressed ()
60                 {
61                         return false;
62                 } 
63
64                 static public bool IsWindowsIdentityFlowSuppressed ()
65                 {
66                         return false;
67                 }
68
69                 static public void RestoreFlow ()
70                 {
71                 }
72
73                 // if you got the context then you can use it
74                 [SecurityPermission (SecurityAction.Assert, ControlPrincipal = true)]
75                 [SecurityPermission (SecurityAction.LinkDemand, Infrastructure = true)]
76                 static public void Run (SecurityContext securityContext, ContextCallback callback, object state)
77                 {
78                         callback (state);
79                 }
80
81                 [SecurityPermission (SecurityAction.LinkDemand, Infrastructure = true)]
82                 static public AsyncFlowControl SuppressFlow ()
83                 {
84                         throw new NotSupportedException ();
85                 }
86
87                 static public AsyncFlowControl SuppressFlowWindowsIdentity ()
88                 {
89                         throw new NotSupportedException ();
90                 }
91         }
92 }
93
94 #endif