X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FSystem.Security.Policy%2FPermissionRequestEvidence.cs;h=992811a83a618fb2710b4a5dd3d03fb5405be25f;hb=7c970f8ee1f635da8575bcf58d89c16bb5c2ace1;hp=d216fc720c0095fd7ec9abafc4da078d818beba5;hpb=a5663524c483aaee18f13d08c4abfd3f4b9ffd2c;p=mono.git diff --git a/mcs/class/corlib/System.Security.Policy/PermissionRequestEvidence.cs b/mcs/class/corlib/System.Security.Policy/PermissionRequestEvidence.cs old mode 100755 new mode 100644 index d216fc720c0..992811a83a6 --- a/mcs/class/corlib/System.Security.Policy/PermissionRequestEvidence.cs +++ b/mcs/class/corlib/System.Security.Policy/PermissionRequestEvidence.cs @@ -3,71 +3,123 @@ // // Authors: // Nick Drochak (ndrochak@gol.com) +// Sebastien Pouliot // // (C) 2003 Nick Drochak -// +// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System.Runtime.InteropServices; -using System.Text; +namespace System.Security.Policy { -namespace System.Security.Policy -{ [Serializable] - public sealed class PermissionRequestEvidence { - PermissionSet requested, optional, denied; +#if NET_2_0 + [ComVisible (true)] +#endif + public sealed class PermissionRequestEvidence : IBuiltInEvidence { + + private PermissionSet requested, optional, denied; - public PermissionRequestEvidence(PermissionSet requested, - PermissionSet optional, PermissionSet denied) { - this.requested = requested; - this.optional = optional; - this.denied = denied; + public PermissionRequestEvidence (PermissionSet requested, PermissionSet optional, PermissionSet denied) + { + if (requested != null) + this.requested = new PermissionSet (requested); + if (optional != null) + this.optional = new PermissionSet (optional); + if (denied != null) + this.denied = new PermissionSet (denied); } public PermissionSet DeniedPermissions { - get {return denied;} + get { return denied; } } public PermissionSet OptionalPermissions { - get {return optional;} + get { return optional; } } public PermissionSet RequestedPermissions { - get {return requested;} + get { return requested; } } - public PermissionRequestEvidence Copy() { + public PermissionRequestEvidence Copy () + { return new PermissionRequestEvidence (requested, optional, denied); } - public override string ToString() { - // Cannot use XML classes in corlib, so do it by hand - StringBuilder sb = new StringBuilder (); - - sb.Append (""); - sb.Append (""); - sb.Append (""); - sb.Append (@""); + public override string ToString () + { + SecurityElement se = new SecurityElement ("System.Security.Policy.PermissionRequestEvidence"); + se.AddAttribute ("version", "1"); - sb.Append (""); - sb.Append (""); - sb.Append (@""); + if (requested != null) { + SecurityElement requestElement = new SecurityElement ("Request"); + requestElement.AddChild (requested.ToXml ()); + se.AddChild (requestElement); + } + if (optional != null) { + SecurityElement optionalElement = new SecurityElement ("Optional"); + optionalElement.AddChild (optional.ToXml ()); + se.AddChild (optionalElement); + } + if (denied != null) { + SecurityElement deniedElement = new SecurityElement ("Denied"); + deniedElement.AddChild (denied.ToXml ()); + se.AddChild (deniedElement); + } + return se.ToString (); + } - sb.Append (""); - sb.Append (""); - sb.Append (@""); + // interface IBuiltInEvidence - sb.Append (""); + int IBuiltInEvidence.GetRequiredSize (bool verbose) + { + int size = verbose ? 3 : 1; + if (requested != null) { + int r = requested.ToXml ().ToString ().Length + (verbose ? 5 : 0); + size += r; + } + if (optional != null) { + int o = optional.ToXml ().ToString ().Length + (verbose ? 5 : 0); + size += o; + } + if (denied != null) { + int d = denied.ToXml ().ToString ().Length + (verbose ? 5 : 0); + size += d; + } + return size; + } - return sb.ToString (); + [MonoTODO ("IBuiltInEvidence")] + int IBuiltInEvidence.InitFromBuffer (char [] buffer, int position) + { + return 0; } + [MonoTODO ("IBuiltInEvidence")] + int IBuiltInEvidence.OutputToBuffer (char [] buffer, int position, bool verbose) + { + return 0; + } } -} \ No newline at end of file +}