Copy() public method

public Copy ( ) : PolicyStatement
return PolicyStatement
Example #1
0
		public void Constructor_PermissionSet_Null ()
		{
			PolicyStatement ps = new PolicyStatement (null);
			Assert.AreEqual (PolicyStatementAttribute.Nothing, ps.Attributes, "Attributes");
			Assert.AreEqual (String.Empty, ps.AttributeString, "AttributeString");
			Assert.AreEqual (Empty.ToString (), ps.PermissionSet.ToString (), "PermissionSet");
			Assert.AreEqual (ps.ToXml ().ToString (), ps.Copy ().ToXml ().ToString (), "Copy");
		}
Example #2
0
		public void Constructor_PermissionSetPolicyStatementAttribute_Null ()
		{
			PolicyStatement ps = new PolicyStatement (null, PolicyStatementAttribute.All);
			Assert.AreEqual (PolicyStatementAttribute.All, ps.Attributes, "Attributes");
			Assert.AreEqual ("Exclusive LevelFinal", ps.AttributeString, "AttributeString");
			Assert.AreEqual (Empty.ToString (), ps.PermissionSet.ToString (), "PermissionSet");
			Assert.AreEqual (ps.ToXml ().ToString (), ps.Copy ().ToXml ().ToString (), "Copy");
		}
Example #3
0
		public void Constructor_PermissionSet_Unrestricted ()
		{
			PermissionSet pset = new PermissionSet (PermissionState.Unrestricted);
			PolicyStatement ps = new PolicyStatement (pset);
			Assert.AreEqual (PolicyStatementAttribute.Nothing, ps.Attributes, "Attributes");
			Assert.AreEqual (String.Empty, ps.AttributeString, "AttributeString");
			Assert.AreEqual (Unrestricted.ToString (), ps.PermissionSet.ToString (), "PermissionSet");
			Assert.AreEqual (ps.ToXml ().ToString (), ps.Copy ().ToXml ().ToString (), "Copy");
		}
Example #4
0
//		PolicyLevel m_level;

		protected CodeGroup (IMembershipCondition membershipCondition, PolicyStatement policy)
		{
			if (null == membershipCondition)
				throw new ArgumentNullException ("membershipCondition");

			if (policy != null)
				m_policy = policy.Copy ();
			m_membershipCondition = membershipCondition.Copy ();
		}
Example #5
0
 /// <summary>Initializes a new instance of <see cref="T:System.Security.Policy.CodeGroup" />.</summary>
 /// <param name="membershipCondition">A membership condition that tests evidence to determine whether this code group applies policy. </param>
 /// <param name="policy">The policy statement for the code group in the form of a permission set and attributes to grant code that matches the membership condition. </param>
 /// <exception cref="T:System.ArgumentNullException">The <paramref name="membershipCondition" /> parameter is null. </exception>
 /// <exception cref="T:System.ArgumentException">The type of the <paramref name="membershipCondition" /> parameter is not valid.-or- The type of the <paramref name="policy" /> parameter is not valid. </exception>
 protected CodeGroup(IMembershipCondition membershipCondition, PolicyStatement policy)
 {
     if (membershipCondition == null)
     {
         throw new ArgumentNullException("membershipCondition");
     }
     if (policy != null)
     {
         this.m_policy = policy.Copy();
     }
     this.m_membershipCondition = membershipCondition.Copy();
 }
        public override PolicyStatement Resolve(Evidence evidence)
        {
            if (evidence == null)
            {
                throw new ArgumentNullException("evidence");
            }
            object usedEvidence = null;

            if (!PolicyManager.CheckMembershipCondition(base.MembershipCondition, evidence, out usedEvidence))
            {
                return(null);
            }
            PolicyStatement childPolicy = null;
            IEnumerator     enumerator  = base.Children.GetEnumerator();

            while (enumerator.MoveNext())
            {
                childPolicy = PolicyManager.ResolveCodeGroup(enumerator.Current as CodeGroup, evidence);
                if (childPolicy != null)
                {
                    break;
                }
            }
            IDelayEvaluatedEvidence dependentEvidence = usedEvidence as IDelayEvaluatedEvidence;
            bool            flag            = (dependentEvidence != null) && !dependentEvidence.IsVerified;
            PolicyStatement policyStatement = base.PolicyStatement;

            if (policyStatement == null)
            {
                if (flag)
                {
                    childPolicy = childPolicy.Copy();
                    childPolicy.AddDependentEvidence(dependentEvidence);
                }
                return(childPolicy);
            }
            if (childPolicy != null)
            {
                PolicyStatement statement3 = policyStatement.Copy();
                if (flag)
                {
                    statement3.AddDependentEvidence(dependentEvidence);
                }
                statement3.InplaceUnion(childPolicy);
                return(statement3);
            }
            if (flag)
            {
                policyStatement.AddDependentEvidence(dependentEvidence);
            }
            return(policyStatement);
        }
Example #7
0
        /// <summary>初始化 <see cref="T:System.Security.Policy.CodeGroup" /> 的新实例。</summary>
        /// <param name="membershipCondition">成员条件,它测试证据以确定此代码组是否应用策略。</param>
        /// <param name="policy">形式为权限集和特性的代码组的策略声明,这些权限集和特性将被授予匹配成员条件的代码。</param>
        /// <exception cref="T:System.ArgumentNullException">
        /// <paramref name="membershipCondition" /> 参数为 null。</exception>
        /// <exception cref="T:System.ArgumentException">
        /// <paramref name="membershipCondition" /> 参数的类型无效。- 或 -<paramref name="policy" /> 参数的类型无效。</exception>
        protected CodeGroup(IMembershipCondition membershipCondition, PolicyStatement policy)
        {
            if (membershipCondition == null)
            {
                throw new ArgumentNullException("membershipCondition");
            }
            this.m_policy = policy != null?policy.Copy() : (PolicyStatement)null;

            this.m_membershipCondition = membershipCondition.Copy();
            this.m_children            = (IList)ArrayList.Synchronized(new ArrayList());
            this.m_element             = (SecurityElement)null;
            this.m_parentLevel         = (PolicyLevel)null;
        }
Example #8
0
 public static void PolicyStatementCallMethods()
 {
     PolicyStatement ps = new PolicyStatement(new PermissionSet(new PermissionState()));
     PolicyStatement ps2 = ps.Copy();
     bool equals = ps.Equals(ps2);
     int hash = ps.GetHashCode();
     SecurityElement se = new SecurityElement("");
     PolicyLevel pl = (PolicyLevel)Activator.CreateInstance(typeof(PolicyLevel), true);
     ps.FromXml(se);
     ps.FromXml(se, pl);
     se = ps.ToXml();
     se = ps.ToXml(pl);
 }
        public override PolicyStatement Resolve(Evidence evidence)
        {
            if (evidence == null)
            {
                throw new ArgumentNullException("evidence");
            }
            object usedEvidence = (object)null;

            if (!PolicyManager.CheckMembershipCondition(this.MembershipCondition, evidence, out usedEvidence))
            {
                return((PolicyStatement)null);
            }
            PolicyStatement childPolicy = (PolicyStatement)null;

            foreach (object child in (IEnumerable)this.Children)
            {
                childPolicy = PolicyManager.ResolveCodeGroup(child as CodeGroup, evidence);
                if (childPolicy != null)
                {
                    break;
                }
            }
            IDelayEvaluatedEvidence dependentEvidence = usedEvidence as IDelayEvaluatedEvidence;
            bool            flag             = dependentEvidence != null && !dependentEvidence.IsVerified;
            PolicyStatement policyStatement1 = this.PolicyStatement;

            if (policyStatement1 == null)
            {
                if (flag)
                {
                    childPolicy = childPolicy.Copy();
                    childPolicy.AddDependentEvidence(dependentEvidence);
                }
                return(childPolicy);
            }
            if (childPolicy != null)
            {
                PolicyStatement policyStatement2 = policyStatement1.Copy();
                if (flag)
                {
                    policyStatement2.AddDependentEvidence(dependentEvidence);
                }
                policyStatement2.InplaceUnion(childPolicy);
                return(policyStatement2);
            }
            if (flag)
            {
                policyStatement1.AddDependentEvidence(dependentEvidence);
            }
            return(policyStatement1);
        }
Example #10
0
        public override PolicyStatement Resolve(Evidence evidence)
        {
            if (evidence == null)
            {
                throw new ArgumentNullException("evidence");
            }
            object obj = null;

            if (!PolicyManager.CheckMembershipCondition(base.MembershipCondition, evidence, out obj))
            {
                return(null);
            }
            PolicyStatement policyStatement = null;

            foreach (object obj2 in base.Children)
            {
                policyStatement = PolicyManager.ResolveCodeGroup(obj2 as CodeGroup, evidence);
                if (policyStatement != null)
                {
                    break;
                }
            }
            IDelayEvaluatedEvidence delayEvaluatedEvidence = obj as IDelayEvaluatedEvidence;
            bool            flag             = delayEvaluatedEvidence != null && !delayEvaluatedEvidence.IsVerified;
            PolicyStatement policyStatement2 = base.PolicyStatement;

            if (policyStatement2 == null)
            {
                if (flag)
                {
                    policyStatement = policyStatement.Copy();
                    policyStatement.AddDependentEvidence(delayEvaluatedEvidence);
                }
                return(policyStatement);
            }
            if (policyStatement != null)
            {
                PolicyStatement policyStatement3 = policyStatement2.Copy();
                if (flag)
                {
                    policyStatement3.AddDependentEvidence(delayEvaluatedEvidence);
                }
                policyStatement3.InplaceUnion(policyStatement);
                return(policyStatement3);
            }
            if (flag)
            {
                policyStatement2.AddDependentEvidence(delayEvaluatedEvidence);
            }
            return(policyStatement2);
        }
Example #11
0
        public CodeGroup(IMembershipCondition membershipCondition, PolicyStatement policy)
#endif
        {
            if (null == membershipCondition)
            {
                throw new ArgumentNullException("membershipCondition");
            }

            if (policy != null)
            {
                m_policy = policy.Copy();
            }
            m_membershipCondition = membershipCondition.Copy();
        }
        protected CodeGroup( IMembershipCondition membershipCondition, PolicyStatement policy )
        {
            if (membershipCondition == null)
                throw new ArgumentNullException( "membershipCondition" );

            if (policy == null)
                m_policy = null;
            else
                m_policy = policy.Copy();
        
            m_membershipCondition = membershipCondition.Copy();
            m_children = ArrayList.Synchronized( new ArrayList() );
            m_element = null;
            m_parentLevel = null;
        }
Example #13
0
        [System.Security.SecuritySafeCritical]  // auto-generated
        public override PolicyStatement Resolve(Evidence evidence)
        {
            if (evidence == null)
            {
                throw new ArgumentNullException("evidence");
            }
            Contract.EndContractBlock();

            object usedEvidence = null;

            if (PolicyManager.CheckMembershipCondition(MembershipCondition,
                                                       evidence,
                                                       out usedEvidence))
            {
                PolicyStatement childPolicy = null;

                IEnumerator enumerator = this.Children.GetEnumerator();

                while (enumerator.MoveNext())
                {
                    childPolicy = PolicyManager.ResolveCodeGroup(enumerator.Current as CodeGroup,
                                                                 evidence);

                    // If the child has a policy, we are done.
                    if (childPolicy != null)
                    {
                        break;
                    }
                }

                // If any delay-evidence was used to generate this grant set, then we need to keep track of
                // that for potentially later forcing it to be verified.
                IDelayEvaluatedEvidence delayEvidence = usedEvidence as IDelayEvaluatedEvidence;
                bool delayEvidenceNeedsVerification   = delayEvidence != null && !delayEvidence.IsVerified;

                PolicyStatement thisPolicy = this.PolicyStatement; // PolicyStatement getter makes a copy for us

                if (thisPolicy == null)
                {
                    // We didn't add any permissions, but we enabled our children to be evaluated, and
                    // therefore its grant set is dependent on any of our delay evidence.
                    if (delayEvidenceNeedsVerification)
                    {
                        childPolicy = childPolicy.Copy();
                        childPolicy.AddDependentEvidence(delayEvidence);
                    }

                    return(childPolicy);
                }
                else if (childPolicy != null)
                {
                    // Combine the child and this policy and return it.

                    PolicyStatement combined = thisPolicy.Copy();

                    if (delayEvidenceNeedsVerification)
                    {
                        combined.AddDependentEvidence(delayEvidence);
                    }

                    combined.InplaceUnion(childPolicy);
                    return(combined);
                }
                else
                {
                    // Otherwise we just copy the this policy.
                    if (delayEvidenceNeedsVerification)
                    {
                        thisPolicy.AddDependentEvidence(delayEvidence);
                    }

                    return(thisPolicy);
                }
            }
            else
            {
                return(null);
            }
        }
Example #14
0
		public void Constructor_Copy ()
		{
			PermissionSet original = new PermissionSet (PermissionState.None);
			PolicyStatement ps = new PolicyStatement (original, PolicyStatementAttribute.All);
			Assert.AreEqual (Empty.ToString (), ps.PermissionSet.ToString (), "PermissionSet");
			Assert.AreEqual (ps.ToXml ().ToString (), ps.Copy ().ToXml ().ToString (), "Copy");

			original.AddPermission (new SecurityPermission (SecurityPermissionFlag.AllFlags));
			Assert.AreEqual (Empty.ToString (), ps.PermissionSet.ToString (), "PermissionSet");
			Assert.AreEqual (ps.ToXml ().ToString (), ps.Copy ().ToXml ().ToString (), "Copy");
		}
Example #15
0
		public void Equals ()
		{
			PolicyStatement empty1 = new PolicyStatement (null);
			PolicyStatement empty2 = new PolicyStatement (null);
			Assert.IsTrue (empty1.Equals (empty2), "empty1.Equals (empty2)");
			Assert.IsTrue (empty2.Equals (empty1), "empty2.Equals (empty1)");
			Assert.IsFalse (Object.ReferenceEquals (empty1, empty2), "!ReferenceEquals");

			PolicyStatement unr1 = new PolicyStatement (Unrestricted, PolicyStatementAttribute.All);
			Assert.IsFalse (unr1.Equals (empty1), "unr1.Equals (empty1)");
			Assert.IsFalse (empty1.Equals (unr1), "empty1.Equals (unr1)");

			PolicyStatement unr2 = new PolicyStatement (Unrestricted, PolicyStatementAttribute.Exclusive);
			Assert.IsFalse (unr1.Equals (unr2), "unr1.Equals (unr2)");
			Assert.IsFalse (unr2.Equals (unr1), "unr2.Equals (unr1)");

			PolicyStatement unr3 = unr2.Copy ();
			Assert.IsTrue (unr3.Equals (unr2), "unr3.Equals (unr2)");
			Assert.IsTrue (unr2.Equals (unr3), "unr2.Equals (unr3)");
		}