5 // System.Xml.XmlSecureResolver.cs
7 // Author: Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
9 // (C) 2003 Atsushi Enomoto
13 using System.Security;
14 using System.Security.Policy;
15 using System.Security.Permissions;
19 public class XmlSecureResolver : XmlResolver
22 #region Static Members
24 public static Evidence CreateEvidenceForUrl (string securityUrl)
26 Evidence e = new Evidence ();
32 url = new Url (securityUrl);
33 } catch (ArgumentException) {
37 zone = Zone.CreateFromUrl (securityUrl);
38 } catch (ArgumentException) {
42 site = Site.CreateFromUrl (securityUrl);
43 } catch (ArgumentException) {
58 PermissionSet permissionSet;
61 #region .ctor and Finalizer
63 public XmlSecureResolver (
64 XmlResolver resolver, Evidence evidence)
66 this.resolver = resolver;
67 // this.evidence = evidence;
68 this.permissionSet = SecurityManager.ResolvePolicy (evidence);
71 public XmlSecureResolver (
72 XmlResolver resolver, PermissionSet permissionSet)
74 this.resolver = resolver;
75 this.permissionSet = permissionSet;
78 public XmlSecureResolver (
79 XmlResolver resolver, string securityUrl)
80 : this (resolver, CreateEvidenceForUrl (securityUrl))
87 public override ICredentials Credentials {
88 set { resolver.Credentials = value; }
95 public override object GetEntity (
96 Uri absoluteUri, string role, Type ofObjectToReturn)
98 permissionSet.PermitOnly ();
99 return resolver.GetEntity (absoluteUri, role, ofObjectToReturn);
102 public override Uri ResolveUri (Uri baseUri, string relativeUri)
104 return resolver.ResolveUri (baseUri, relativeUri);