Пример #1
0
        public override IPermission Intersect(IPermission target)
        {
            if (target == null)
            {
                return(null);
            }
            XamlLoadPermission permission = CastPermission(target, "target");

            if (permission.IsUnrestricted())
            {
                return(this.Copy());
            }
            if (this.IsUnrestricted())
            {
                return(permission.Copy());
            }
            List <XamlAccessLevel> allowedAccess = new List <XamlAccessLevel>();

            foreach (XamlAccessLevel level in this.AllowedAccess)
            {
                if (permission.Includes(level))
                {
                    allowedAccess.Add(level);
                }
                else if (level.PrivateAccessToTypeName != null)
                {
                    XamlAccessLevel requestedAccess = level.AssemblyOnly();
                    if (permission.Includes(requestedAccess))
                    {
                        allowedAccess.Add(requestedAccess);
                    }
                }
            }
            return(new XamlLoadPermission(allowedAccess));
        }
Пример #2
0
 public XamlLoadPermission(XamlAccessLevel allowedAccess)
 {
     if (allowedAccess == null)
     {
         throw new ArgumentNullException("allowedAccess");
     }
     Init(false, new XamlAccessLevel[] { allowedAccess });
 }
 public XamlLoadPermission(XamlAccessLevel allowedAccess)
 {
     if (allowedAccess == null)
     {
         throw new ArgumentNullException("allowedAccess");
     }
     this.Init(false, new XamlAccessLevel[] { allowedAccess });
 }
Пример #4
0
 public static object LoadBaml(System.Xaml.XamlReader xamlReader, bool skipJournaledProperties,
     Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) 
 { 
     XamlObjectWriterSettings settings = XamlReader.CreateObjectWriterSettingsForBaml();
     settings.RootObjectInstance = rootObject; 
     settings.AccessLevel = accessLevel;
     object result = Load(xamlReader, null, skipJournaledProperties, rootObject, settings, baseUri);
     EnsureXmlNamespaceMaps(result, xamlReader.SchemaContext);
     return result; 
 }
Пример #5
0
 internal bool Includes(XamlAccessLevel other)
 {
     if (!(other.AssemblyNameString == this.AssemblyNameString))
     {
         return(false);
     }
     if (other.PrivateAccessToTypeName != null)
     {
         return(other.PrivateAccessToTypeName == this.PrivateAccessToTypeName);
     }
     return(true);
 }
 internal bool Includes(XamlAccessLevel other)
 {
     if (!(other.AssemblyNameString == this.AssemblyNameString))
     {
         return false;
     }
     if (other.PrivateAccessToTypeName != null)
     {
         return (other.PrivateAccessToTypeName == this.PrivateAccessToTypeName);
     }
     return true;
 }
Пример #7
0
        public override void FromXml(SecurityElement elem)
        {
            if (elem == null)
            {
                throw new ArgumentNullException("elem");
            }
            if (elem.Tag != XmlConstants.IPermission)
            {
                throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedTag, elem.Tag, XmlConstants.IPermission), "elem");
            }

            string className = elem.Attribute(XmlConstants.Class);

            if (!className.StartsWith(GetType().FullName, false, TypeConverterHelper.InvariantEnglishUS))
            {
                throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedValue, className, XmlConstants.Class, GetType().FullName), "elem");
            }

            string version = elem.Attribute(XmlConstants.Version);

            if (version != null && version != XmlConstants.VersionNumber)
            {
                throw new ArgumentException(SR.Get(SRID.SecurityXmlUnexpectedValue, className, XmlConstants.Version, XmlConstants.VersionNumber), "elem");
            }

            string unrestricted = elem.Attribute(XmlConstants.Unrestricted);

            if (unrestricted != null && bool.Parse(unrestricted))
            {
                Init(true, null);
            }
            else
            {
                List <XamlAccessLevel> allowedAccess = null;
                if (elem.Children != null)
                {
                    allowedAccess = new List <XamlAccessLevel>(elem.Children.Count);
                    foreach (SecurityElement child in elem.Children)
                    {
                        allowedAccess.Add(XamlAccessLevel.FromXml(child));
                    }
                }
                Init(false, allowedAccess);
            }
        }
Пример #8
0
 public bool Includes(XamlAccessLevel requestedAccess)
 {
     if (requestedAccess == null)
     {
         throw new ArgumentNullException("requestedAccess");
     }
     if (_isUnrestricted)
     {
         return(true);
     }
     foreach (XamlAccessLevel allowedAccess in AllowedAccess)
     {
         if (allowedAccess.Includes(requestedAccess))
         {
             return(true);
         }
     }
     return(false);
 }
Пример #9
0
        public override void FromXml(SecurityElement elem)
        {
            if (elem == null)
            {
                throw new ArgumentNullException("elem");
            }
            if (elem.Tag != "IPermission")
            {
                throw new ArgumentException(System.Xaml.SR.Get("SecurityXmlUnexpectedTag", new object[] { elem.Tag, "IPermission" }), "elem");
            }
            string str = elem.Attribute("class");

            if (!str.StartsWith(base.GetType().FullName, false, TypeConverterHelper.InvariantEnglishUS))
            {
                throw new ArgumentException(System.Xaml.SR.Get("SecurityXmlUnexpectedValue", new object[] { str, "class", base.GetType().FullName }), "elem");
            }
            string str2 = elem.Attribute("version");

            if ((str2 != null) && (str2 != "1"))
            {
                throw new ArgumentException(System.Xaml.SR.Get("SecurityXmlUnexpectedValue", new object[] { str, "version", "1" }), "elem");
            }
            string str3 = elem.Attribute("Unrestricted");

            if ((str3 != null) && bool.Parse(str3))
            {
                this.Init(true, null);
            }
            else
            {
                List <XamlAccessLevel> allowedAccess = null;
                if (elem.Children != null)
                {
                    allowedAccess = new List <XamlAccessLevel>(elem.Children.Count);
                    foreach (SecurityElement element in elem.Children)
                    {
                        allowedAccess.Add(XamlAccessLevel.FromXml(element));
                    }
                }
                this.Init(false, allowedAccess);
            }
        }
Пример #10
0
        public override IPermission Intersect(IPermission target)
        {
            if (target == null)
            {
                return(null);
            }
            XamlLoadPermission other = CastPermission(target, "target");

            if (other.IsUnrestricted())
            {
                return(this.Copy());
            }
            if (this.IsUnrestricted())
            {
                return(other.Copy());
            }

            List <XamlAccessLevel> result = new List <XamlAccessLevel>();

            // We could optimize this with a hash, but we don't expect people to be creating
            // large unions of access levels.
            foreach (XamlAccessLevel accessLevel in this.AllowedAccess)
            {
                // First try the full access level
                if (other.Includes(accessLevel))
                {
                    result.Add(accessLevel);
                }
                // Then try the assembly subset
                else if (accessLevel.PrivateAccessToTypeName != null)
                {
                    XamlAccessLevel assemblyAccess = accessLevel.AssemblyOnly();
                    if (other.Includes(assemblyAccess))
                    {
                        result.Add(assemblyAccess);
                    }
                }
            }
            return(new XamlLoadPermission(result));
        }
Пример #11
0
 public bool Includes(XamlAccessLevel requestedAccess)
 {
     throw new NotImplementedException();
 }
Пример #12
0
 public XamlLoadPermission(XamlAccessLevel allowedAccess)
     : this(new XamlAccessLevel [] { allowedAccess })
 {
 }
 public bool Includes(XamlAccessLevel requestedAccess)
 {
     if (requestedAccess == null)
     {
         throw new ArgumentNullException("requestedAccess");
     }
     if (this._isUnrestricted)
     {
         return true;
     }
     foreach (XamlAccessLevel level in this.AllowedAccess)
     {
         if (level.Includes(requestedAccess))
         {
             return true;
         }
     }
     return false;
 }
Пример #14
0
 public XamlLoadPermission(XamlAccessLevel allowedAccess)
 {
 }
Пример #15
0
		public bool Includes (XamlAccessLevel requestedAccess)
		{
			throw new NotImplementedException ();
		}
Пример #16
0
		public XamlLoadPermission (XamlAccessLevel allowedAccess)
			: this (new XamlAccessLevel [] {allowedAccess})
		{
		}
Пример #17
0
 internal bool Includes(XamlAccessLevel other)
 {
     return(other.AssemblyNameString == AssemblyNameString &&
            (other.PrivateAccessToTypeName == null || other.PrivateAccessToTypeName == PrivateAccessToTypeName));
 }
Пример #18
0
 public bool Includes(XamlAccessLevel requestedAccess)
 {
     return(true);
 }