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"); }
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"); }
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"); }
// 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 (); }
/// <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); }
/// <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; }
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); }
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); }
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; }
[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); } }
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"); }
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)"); }