2 // System.Security.Policy.Zone
5 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
7 // (C) 2002 Ximian, Inc (http://www.ximian.com)
10 using System.Security;
11 using System.Security.Permissions;
13 namespace System.Security.Policy
15 public sealed class Zone : IIdentityPermissionFactory, IBuiltInEvidence
19 public Zone (SecurityZone zone)
21 if (!Enum.IsDefined (typeof (SecurityZone), zone))
22 throw new ArgumentException ("invalid zone");
29 return new Zone (zone);
32 public IPermission CreateIdentityPermission (Evidence evidence)
34 return new ZoneIdentityPermission (zone);
37 [MonoTODO("This depends on zone configuration in IE")]
38 public static Zone CreateFromUrl (string url)
40 throw new NotImplementedException ();
43 public override bool Equals (object o)
48 return (((Zone) o).zone == zone);
51 public override int GetHashCode ()
56 public override string ToString ()
58 SecurityElement se = new SecurityElement (GetType ().FullName);
59 se.AddAttribute ("version", "1");
60 se.AddChild (new SecurityElement ("Zone", zone.ToString ()));
62 return se.ToString ();
65 int IBuiltInEvidence.GetRequiredSize (bool verbose)
70 int IBuiltInEvidence.InitFromBuffer (char [] buffer, int position) {
71 int new_zone = (int) buffer [position++];
72 new_zone += buffer [position++];
76 int IBuiltInEvidence.OutputToBuffer (char [] buffer, int position, bool verbose)
78 buffer [position++] = '\x0003';
79 buffer [position++] = (char) (((int) zone) >> 16);
80 buffer [position++] = (char) (((int) zone) & 0x0FFFF);
84 public SecurityZone SecurityZone