public virtual void FromXml(SecurityElement et) { if (et == null) { throw new ArgumentNullException("et"); } if (et.Tag != tagName) { string msg = String.Format("Invalid tag {0} expected {1}", et.Tag, tagName); throw new ArgumentException(msg, "et"); } list.Clear(); if (CodeAccessPermission.IsUnrestricted(et)) { state = PermissionState.Unrestricted; #if NET_2_0 // no need to continue for an unrestricted permission // because identity permissions now "supports" unrestricted return; #endif } else { state = PermissionState.None; } if (et.Children != null) { foreach (SecurityElement se in et.Children) { string className = se.Attribute("class"); if (className == null) { throw new ArgumentException(Locale.GetText( "No permission class is specified.")); } if (Resolver != null) { #if !DISABLE_SECURITY // policy class names do not have to be fully qualified className = Resolver.ResolveClassName(className); #else className = null; #endif } list.Add(PermissionBuilder.Create(className, se)); } } }
internal static IPermission CreatePermission(string fullname, SecurityElement se) { Type type = Type.GetType(fullname); if (type == null) { string text = Locale.GetText("Can't create an instance of permission class {0}."); throw new TypeLoadException(string.Format(text, fullname)); } IPermission permission = PermissionBuilder.Create(type); permission.FromXml(se); return(permission); }
internal bool CheckDeny(CodeAccessPermission denied) { if (denied == null) { return(true); } Type t = denied.GetType(); if (t != this.GetType()) { return(true); } IPermission inter = Intersect(denied); if (inter == null) { return(true); } // sadly that's not enough :( at this stage we must also check // if an empty (PermissionState.None) is a subset of the denied // (which is like a empty intersection looks like for flag based // permissions, e.g. AspNetHostingPermission). return(denied.IsSubsetOf(PermissionBuilder.Create(t))); }
internal bool CheckDeny(CodeAccessPermission denied) { if (denied == null) { return(true); } Type type = denied.GetType(); return(type != base.GetType() || this.Intersect(denied) == null || denied.IsSubsetOf(PermissionBuilder.Create(type))); }