Пример #1
0
        internal void AddChildNoDuplicates(ISecurityElementFactory child)
        {
            if (child == null)
            {
                throw new ArgumentNullException("child");
            }
            Contract.EndContractBlock();

            if (m_lChildren == null)
            {
                m_lChildren = new ArrayList(c_ChildrenTypical);
                m_lChildren.Add(child);
            }
            else
            {
                for (int i = 0; i < m_lChildren.Count; ++i)
                {
                    if (m_lChildren[i] == child)
                    {
                        return;
                    }
                }
                m_lChildren.Add(child);
            }
        }
        internal TokenBasedSet SpecialUnion(TokenBasedSet other)
        {
            int maxUsedIndex;

            this.OnDeserializedInternal();
            TokenBasedSet set = new TokenBasedSet();

            if (other != null)
            {
                other.OnDeserializedInternal();
                maxUsedIndex = (this.GetMaxUsedIndex() > other.GetMaxUsedIndex()) ? this.GetMaxUsedIndex() : other.GetMaxUsedIndex();
            }
            else
            {
                maxUsedIndex = this.GetMaxUsedIndex();
            }
            for (int i = 0; i <= maxUsedIndex; i++)
            {
                object                  item        = this.GetItem(i);
                IPermission             perm        = item as IPermission;
                ISecurityElementFactory factory     = item as ISecurityElementFactory;
                object                  obj3        = (other != null) ? other.GetItem(i) : null;
                IPermission             permission2 = obj3 as IPermission;
                ISecurityElementFactory factory2    = obj3 as ISecurityElementFactory;
                if ((item != null) || (obj3 != null))
                {
                    if (item == null)
                    {
                        if (factory2 != null)
                        {
                            permission2 = PermissionSet.CreatePerm(factory2, false);
                        }
                        PermissionToken token = PermissionToken.GetToken(permission2);
                        if (token == null)
                        {
                            throw new SerializationException(Environment.GetResourceString("Serialization_InsufficientState"));
                        }
                        set.SetItem(token.m_index, permission2);
                    }
                    else if (obj3 == null)
                    {
                        if (factory != null)
                        {
                            perm = PermissionSet.CreatePerm(factory, false);
                        }
                        PermissionToken token2 = PermissionToken.GetToken(perm);
                        if (token2 == null)
                        {
                            throw new SerializationException(Environment.GetResourceString("Serialization_InsufficientState"));
                        }
                        set.SetItem(token2.m_index, perm);
                    }
                }
            }
            return(set);
        }
Пример #3
0
 internal void AddChild(ISecurityElementFactory child)
 {
     if (child == null)
     {
         throw new ArgumentNullException("child");
     }
     if (this.m_lChildren == null)
     {
         this.m_lChildren = new ArrayList(1);
     }
     this.m_lChildren.Add((object)child);
 }
Пример #4
0
 internal void ConvertSecurityElementFactories()
 {
     if (this.m_lChildren != null)
     {
         for (int i = 0; i < this.m_lChildren.Count; i++)
         {
             ISecurityElementFactory factory = this.m_lChildren[i] as ISecurityElementFactory;
             if ((factory != null) && !(this.m_lChildren[i] is SecurityElement))
             {
                 this.m_lChildren[i] = factory.CreateSecurityElement();
             }
         }
     }
 }
Пример #5
0
        internal void AddChild(ISecurityElementFactory child)
        {
            if (child == null)
            {
                throw new ArgumentNullException(nameof(child));
            }

            if (_children == null)
            {
                _children = new ArrayList(ChildrenTypical);
            }

            _children.Add(child);
        }
        internal void AddChild(ISecurityElementFactory child)
        {
            if (child == null)
            {
                throw new ArgumentNullException("child");
            }

            if (m_lChildren == null)
            {
                m_lChildren = new ArrayList(c_ChildrenTypical);
            }

            m_lChildren.Add(child);
        }
Пример #7
0
 internal void ConvertSecurityElementFactories()
 {
     if (this.m_lChildren == null)
     {
         return;
     }
     for (int index = 0; index < this.m_lChildren.Count; ++index)
     {
         ISecurityElementFactory securityElementFactory = this.m_lChildren[index] as ISecurityElementFactory;
         if (securityElementFactory != null && !(this.m_lChildren[index] is SecurityElement))
         {
             this.m_lChildren[index] = (object)securityElementFactory.CreateSecurityElement();
         }
     }
 }
        internal void AddChild(ISecurityElementFactory child)
        {
            if (child == null)
            {
                throw new ArgumentNullException(nameof(child));
            }
            Contract.EndContractBlock();

            if (m_lChildren == null)
            {
                m_lChildren = new ArrayList(c_ChildrenTypical);
            }

            m_lChildren.Add(child);
        }
 // Token: 0x06001BE1 RID: 7137 RVA: 0x0005FB54 File Offset: 0x0005DD54
 internal void ConvertSecurityElementFactories()
 {
     if (this.m_lChildren == null)
     {
         return;
     }
     for (int i = 0; i < this.m_lChildren.Count; i++)
     {
         ISecurityElementFactory securityElementFactory = this.m_lChildren[i] as ISecurityElementFactory;
         if (securityElementFactory != null && !(this.m_lChildren[i] is SecurityElement))
         {
             this.m_lChildren[i] = securityElementFactory.CreateSecurityElement();
         }
     }
 }
Пример #10
0
        internal void ConvertSecurityElementFactories()
        {
            if (_children == null)
            {
                return;
            }

            for (int i = 0; i < _children.Count; ++i)
            {
                ISecurityElementFactory iseFactory = _children[i] as ISecurityElementFactory;
                if (iseFactory != null && !(_children[i] is SecurityElement))
                {
                    _children[i] = iseFactory.CreateSecurityElement();
                }
            }
        }
Пример #11
0
        /// <summary>
        /// 转换安全元素工厂,将ISecurityElementFactories转换为SecurityElement
        /// </summary>
        internal void ConvertSecurityElementFactories()
        {
            if (m_lChildren == null)//如果 XML 元素子元素的数组为空,则返回为空
            {
                return;
            }

            for (int i = 0; i < m_lChildren.Count; ++i)
            {
                ISecurityElementFactory iseFactory = m_lChildren[i] as ISecurityElementFactory; //将子元素转换为xml安全元素工厂实体
                if (iseFactory != null && !(m_lChildren[i] is SecurityElement))                 //如果元素工厂不为空,并且子元素可以转化为SecurityElement对象
                {
                    m_lChildren[i] = iseFactory.CreateSecurityElement();                        //将创造的SecurityElement对象赋值给子元素数组中
                }
            }
        }
 // Token: 0x06001BE7 RID: 7143 RVA: 0x0005FD20 File Offset: 0x0005DF20
 internal void AddChildNoDuplicates(ISecurityElementFactory child)
 {
     if (child == null)
     {
         throw new ArgumentNullException("child");
     }
     if (this.m_lChildren == null)
     {
         this.m_lChildren = new ArrayList(1);
         this.m_lChildren.Add(child);
         return;
     }
     for (int i = 0; i < this.m_lChildren.Count; i++)
     {
         if (this.m_lChildren[i] == child)
         {
             return;
         }
     }
     this.m_lChildren.Add(child);
 }
Пример #13
0
 internal void AddChildNoDuplicates(ISecurityElementFactory child)
 {
     if (child == null)
     {
         throw new ArgumentNullException("child");
     }
     if (this.m_lChildren == null)
     {
         this.m_lChildren = new ArrayList(1);
         this.m_lChildren.Add((object)child);
     }
     else
     {
         for (int index = 0; index < this.m_lChildren.Count; ++index)
         {
             if (this.m_lChildren[index] == child)
             {
                 return;
             }
         }
         this.m_lChildren.Add((object)child);
     }
 }
Пример #14
0
        internal void AddChildNoDuplicates(ISecurityElementFactory child)
        {
            if (child == null)
            {
                throw new ArgumentNullException(nameof(child));
            }

            if (_children == null)
            {
                _children = new ArrayList(ChildrenTypical);
                _children.Add(child);
            }
            else
            {
                for (int i = 0; i < _children.Count; ++i)
                {
                    if (_children[i] == child)
                    {
                        return;
                    }
                }
                _children.Add(child);
            }
        }
 internal void AddChild( ISecurityElementFactory child )
 {
     if (child == null)
         throw new ArgumentNullException( "child" );
 
     if (m_lChildren == null)
         m_lChildren = new ArrayList( c_ChildrenTypical  );
         
     m_lChildren.Add( child );
 }            
 internal void AddChildNoDuplicates(ISecurityElementFactory child)
 {
     if (child == null)
     {
         throw new ArgumentNullException("child");
     }
     if (this.m_lChildren == null)
     {
         this.m_lChildren = new ArrayList(1);
         this.m_lChildren.Add(child);
     }
     else
     {
         for (int i = 0; i < this.m_lChildren.Count; i++)
         {
             if (this.m_lChildren[i] == child)
             {
                 return;
             }
         }
         this.m_lChildren.Add(child);
     }
 }
 internal void AddChild(ISecurityElementFactory child)
 {
     if (child == null)
     {
         throw new ArgumentNullException("child");
     }
     if (this.m_lChildren == null)
     {
         this.m_lChildren = new ArrayList(1);
     }
     this.m_lChildren.Add(child);
 }
Пример #18
0
 internal void AddChild( ISecurityElementFactory child )
 {
     if (child == null)
         throw new ArgumentNullException( nameof(child) );
     Contract.EndContractBlock();
 
     if (m_lChildren == null)
         m_lChildren = new ArrayList( c_ChildrenTypical  );
      
     m_lChildren.Add( child );
 }            
Пример #19
0
 internal void AddChildNoDuplicates( ISecurityElementFactory child )
 {   
     if (child == null)
         throw new ArgumentNullException( nameof(child) );
     Contract.EndContractBlock();
 
     if (m_lChildren == null)
     {
         m_lChildren = new ArrayList( c_ChildrenTypical  );
         m_lChildren.Add( child );
     }
     else
     {
         for (int i = 0; i < m_lChildren.Count; ++i)
         {
             if (m_lChildren[i] == child)
                 return;
         }
         m_lChildren.Add( child );
     }
 }
Пример #20
0
 static internal void SafeChildAdd( SecurityElement parent, ISecurityElementFactory child, bool copy )
 {
     if (child == parent)
         return;
     if (child.GetTag().Equals( "IPermission" ) || child.GetTag().Equals( "Permission" ))
     {
         parent.AddChild( child );
     }
     else if (parent.Tag.Equals( child.GetTag() ))
     {
         Contract.Assert( child is SecurityElement, "SecurityElement expected" );
         SecurityElement elChild = (SecurityElement)child;
         Contract.Assert( elChild.InternalChildren != null,
             "Non-permission elements should have children" );
             
         for (int i = 0; i < elChild.InternalChildren.Count; ++i)
         {
             ISecurityElementFactory current = (ISecurityElementFactory)elChild.InternalChildren[i];
             Contract.Assert( !current.GetTag().Equals( parent.Tag ),
                 "Illegal to insert a like-typed element" );
             parent.AddChildNoDuplicates( current );
         }
     }
     else
     {
         parent.AddChild( (ISecurityElementFactory)(copy ? child.Copy() : child) );
     }
 }
        // Used to merge two distinct TokenBasedSets (used currently only in PermissionSet Deserialization)
        internal TokenBasedSet SpecialUnion(TokenBasedSet other, ref bool canUnrestrictedOverride)
        {
            // This gets called from PermissionSet.OnDeserialized and it's possible that the TokenBasedSets have
            // not been subjected to VTS callbacks yet
            OnDeserializedInternal();
            TokenBasedSet unionSet = new TokenBasedSet();
            int           maxMax;

            if (other != null)
            {
                other.OnDeserializedInternal();
                maxMax = this.GetMaxUsedIndex() > other.GetMaxUsedIndex() ? this.GetMaxUsedIndex() : other.GetMaxUsedIndex();
            }
            else
            {
                maxMax = this.GetMaxUsedIndex();
            }

            for (int i = 0; i <= maxMax; ++i)
            {
                Object                  thisObj  = this.GetItem(i);
                IPermission             thisPerm = thisObj as IPermission;
                ISecurityElementFactory thisElem = thisObj as ISecurityElementFactory;

                Object                  otherObj  = (other != null)?other.GetItem(i):null;
                IPermission             otherPerm = otherObj as IPermission;
                ISecurityElementFactory otherElem = otherObj as ISecurityElementFactory;

                if (thisObj == null && otherObj == null)
                {
                    continue;
                }


                if (thisObj == null)
                {
                    if (otherElem != null)
                    {
                        otherPerm = PermissionSet.CreatePerm(otherElem, false);
                    }



                    PermissionToken token = PermissionToken.GetToken(otherPerm);

                    if (token == null)
                    {
                        throw new SerializationException(Environment.GetResourceString("Serialization_InsufficientState"));
                    }

                    unionSet.SetItem(token.m_index, otherPerm);
                    if (!CodeAccessPermission.CanUnrestrictedOverride(otherPerm))
                    {
                        canUnrestrictedOverride = false;
                    }
                }
                else if (otherObj == null)
                {
                    if (thisElem != null)
                    {
                        thisPerm = PermissionSet.CreatePerm(thisElem, false);
                    }
                    PermissionToken token = PermissionToken.GetToken(thisPerm);
                    if (token == null)
                    {
                        throw new SerializationException(Environment.GetResourceString("Serialization_InsufficientState"));
                    }
                    unionSet.SetItem(token.m_index, thisPerm);
                    if (!CodeAccessPermission.CanUnrestrictedOverride(thisPerm))
                    {
                        canUnrestrictedOverride = false;
                    }
                }
                else
                {
                    BCLDebug.Assert((thisObj == null || otherObj == null), "Permission cannot be in both TokenBasedSets");
                }
            }
            return(unionSet);
        }
Пример #22
0
        internal void AddChildNoDuplicates(ISecurityElementFactory child)
        {
            if (child == null)
                throw new ArgumentNullException(nameof(child));

            if (_children == null)
            {
                _children = new ArrayList(ChildrenTypical);
                _children.Add(child);
            }
            else
            {
                for (int i = 0; i < _children.Count; ++i)
                {
                    if (_children[i] == child)
                        return;
                }
                _children.Add(child);
            }
        }
Пример #23
0
        internal void AddChild(ISecurityElementFactory child)
        {
            if (child == null)
                throw new ArgumentNullException(nameof(child));

            if (_children == null)
                _children = new ArrayList(ChildrenTypical);

            _children.Add(child);
        }
 internal static void SafeChildAdd(SecurityElement parent, ISecurityElementFactory child, bool copy)
 {
     if (child != parent)
     {
         if (child.GetTag().Equals("IPermission") || child.GetTag().Equals("Permission"))
         {
             parent.AddChild(child);
         }
         else if (parent.Tag.Equals(child.GetTag()))
         {
             SecurityElement element = (SecurityElement) child;
             for (int i = 0; i < element.InternalChildren.Count; i++)
             {
                 ISecurityElementFactory factory = (ISecurityElementFactory) element.InternalChildren[i];
                 parent.AddChildNoDuplicates(factory);
             }
         }
         else
         {
             parent.AddChild(copy ? ((ISecurityElementFactory) child.Copy()) : child);
         }
     }
 }