3 // Copyright (c) Microsoft Corporation. All rights reserved.
6 // PermissionRequestEvidence.cs
8 // <OWNER>[....]</OWNER>
10 // Encapsulation of permission request as an evidence type.
13 namespace System.Security.Policy {
14 using System.Runtime.Remoting;
17 using System.Security.Util;
18 using System.Collections;
19 using System.Runtime.Serialization;
20 using System.Diagnostics.Contracts;
23 [System.Runtime.InteropServices.ComVisible(true)]
24 [Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
25 public sealed class PermissionRequestEvidence : EvidenceBase
27 private PermissionSet m_request;
28 private PermissionSet m_optional;
29 private PermissionSet m_denied;
31 // These fields are not used, they are here for serialization compatibility with Whidbey
32 #pragma warning disable 169
33 private String m_strRequest;
34 private String m_strOptional;
35 private String m_strDenied;
36 #pragma warning restore 169
38 public PermissionRequestEvidence(PermissionSet request, PermissionSet optional, PermissionSet denied)
43 m_request = request.Copy();
48 m_optional = optional.Copy();
53 m_denied = denied.Copy();
56 public PermissionSet RequestedPermissions
64 public PermissionSet OptionalPermissions
72 public PermissionSet DeniedPermissions
80 public override EvidenceBase Clone()
85 public PermissionRequestEvidence Copy()
87 return new PermissionRequestEvidence(m_request, m_optional, m_denied);
90 internal SecurityElement ToXml() {
91 SecurityElement root = new SecurityElement( "System.Security.Policy.PermissionRequestEvidence" );
92 // If you hit this assert then most likely you are trying to change the name of this class.
93 // This is ok as long as you change the hard coded string above and change the assert below.
94 Contract.Assert( this.GetType().FullName.Equals( "System.Security.Policy.PermissionRequestEvidence" ), "Class name changed!" );
96 root.AddAttribute( "version", "1" );
100 if (m_request != null)
102 elem = new SecurityElement( "Request" );
103 elem.AddChild( m_request.ToXml() );
104 root.AddChild( elem );
107 if (m_optional != null)
109 elem = new SecurityElement( "Optional" );
110 elem.AddChild( m_optional.ToXml() );
111 root.AddChild( elem );
114 if (m_denied != null)
116 elem = new SecurityElement( "Denied" );
117 elem.AddChild( m_denied.ToXml() );
118 root.AddChild( elem );
124 public override String ToString()
126 return ToXml().ToString();