public void FromXml_NoVersion () { StrongNameMembershipCondition snmc = new StrongNameMembershipCondition (blob, name, version); SecurityElement se = snmc.ToXml (); SecurityElement w = new SecurityElement (se.Tag); w.AddAttribute ("class", se.Attribute ("class")); snmc.FromXml (w); }
public void ToXml_PolicyLevel () { StrongNameMembershipCondition snmc = new StrongNameMembershipCondition (blob, name, version); SecurityElement se = snmc.ToXml (); string s = snmc.ToXml ().ToString (); // is it accepted for all policy levels ? IEnumerator e = SecurityManager.PolicyHierarchy (); while (e.MoveNext ()) { PolicyLevel pl = e.Current as PolicyLevel; StrongNameMembershipCondition spl = new StrongNameMembershipCondition (blob, name, version); spl.FromXml (se, pl); Assert.AreEqual (s, spl.ToXml (pl).ToString (), "ToXml(PolicyLevel='" + pl.Label + "')"); } // yes! }
public void FromXml_InvalidClass () { StrongNameMembershipCondition snmc = new StrongNameMembershipCondition (blob, name, version); SecurityElement se = snmc.ToXml (); se.Attributes ["class"] = "Hello world"; snmc.FromXml (se); }
public void FromXml_NoClass () { StrongNameMembershipCondition snmc = new StrongNameMembershipCondition (blob, name, version); SecurityElement se = snmc.ToXml (); SecurityElement w = new SecurityElement (se.Tag); w.AddAttribute ("version", se.Attribute ("version")); snmc.FromXml (w); // doesn't even care of the class attribute presence }
public void FromXml_InvalidTag () { StrongNameMembershipCondition snmc = new StrongNameMembershipCondition (blob, name, version); SecurityElement se = snmc.ToXml (); se.Tag = "IMonoship"; snmc.FromXml (se); }
public void FromXml_Null () { StrongNameMembershipCondition snmc = new StrongNameMembershipCondition (blob, name, version); snmc.FromXml (null); }
public void FromXml(SecurityElement e) { if (e == null) throw new ArgumentNullException("e"); Contract.EndContractBlock(); Hashtable classes; lock (this) { ArrayList fullTrustAssemblies = new ArrayList(); SecurityElement eClasses = e.SearchForChildByTag("SecurityClasses"); if (eClasses != null) { classes = new Hashtable(); IEnumerator enumerator = eClasses.Children.GetEnumerator(); while (enumerator.MoveNext()) { SecurityElement current = (SecurityElement)enumerator.Current; if (current.Tag.Equals("SecurityClass")) { string name = current.Attribute("Name"); string description = current.Attribute("Description"); if (name != null && description != null) classes.Add(name, description); } } } else { classes = null; } SecurityElement elFullTrust = e.SearchForChildByTag("FullTrustAssemblies"); if (elFullTrust != null && elFullTrust.InternalChildren != null) { string className = typeof(System.Security.Policy.StrongNameMembershipCondition).AssemblyQualifiedName; IEnumerator enumerator = elFullTrust.Children.GetEnumerator(); while (enumerator.MoveNext()) { StrongNameMembershipCondition sn = new StrongNameMembershipCondition(); sn.FromXml((SecurityElement)enumerator.Current); fullTrustAssemblies.Add(sn); } } m_fullTrustAssemblies = fullTrustAssemblies; ArrayList namedPermissionSets = new ArrayList(); SecurityElement elPermSets = e.SearchForChildByTag("NamedPermissionSets"); SecurityElement permSetElement = null; // Here we just find the parent element for the named permission sets and // store it so that we can lazily load them later. if (elPermSets != null && elPermSets.InternalChildren != null) { permSetElement = UnnormalizeClassDeep(elPermSets, classes); // Call FindElement for each of the reserved sets (this removes their xml from // permSetElement). foreach (string builtInPermissionSet in s_reservedNamedPermissionSets) { FindElement(permSetElement, builtInPermissionSet); } } if (permSetElement == null) permSetElement = new SecurityElement("NamedPermissionSets"); // Then we add in the immutable permission sets (this prevents any alterations // to them in the XML file from impacting the runtime versions). namedPermissionSets.Add(BuiltInPermissionSets.FullTrust); namedPermissionSets.Add(BuiltInPermissionSets.Everything); namedPermissionSets.Add(BuiltInPermissionSets.SkipVerification); namedPermissionSets.Add(BuiltInPermissionSets.Execution); namedPermissionSets.Add(BuiltInPermissionSets.Nothing); namedPermissionSets.Add(BuiltInPermissionSets.Internet); namedPermissionSets.Add(BuiltInPermissionSets.LocalIntranet); foreach(PermissionSet ps in namedPermissionSets) ps.IgnoreTypeLoadFailures = true; m_namedPermissionSets = namedPermissionSets; m_permSetElement = permSetElement; // Parse the root code group. SecurityElement elCodeGroup = e.SearchForChildByTag("CodeGroup"); if (elCodeGroup == null) throw new ArgumentException(Environment.GetResourceString("Argument_InvalidXMLElement", "CodeGroup", this.GetType().FullName)); CodeGroup rootCodeGroup = System.Security.Util.XMLUtil.CreateCodeGroup(UnnormalizeClassDeep(elCodeGroup, classes)); if (rootCodeGroup == null) throw new ArgumentException(Environment.GetResourceString("Argument_InvalidXMLElement", "CodeGroup", this.GetType().FullName)); rootCodeGroup.FromXml(elCodeGroup, this); m_rootCodeGroup = rootCodeGroup; } }
public void FromXml(SecurityElement e) { if (e == null) { throw new ArgumentNullException("e"); } lock (this) { Hashtable hashtable; ArrayList list = new ArrayList(); SecurityElement element = e.SearchForChildByTag("SecurityClasses"); if (element != null) { hashtable = new Hashtable(); IEnumerator enumerator = element.Children.GetEnumerator(); while (enumerator.MoveNext()) { SecurityElement current = (SecurityElement) enumerator.Current; if (current.Tag.Equals("SecurityClass")) { string key = current.Attribute("Name"); string str2 = current.Attribute("Description"); if ((key != null) && (str2 != null)) { hashtable.Add(key, str2); } } } } else { hashtable = null; } SecurityElement element3 = e.SearchForChildByTag("FullTrustAssemblies"); if ((element3 != null) && (element3.InternalChildren != null)) { string assemblyQualifiedName = typeof(StrongNameMembershipCondition).AssemblyQualifiedName; IEnumerator enumerator2 = element3.Children.GetEnumerator(); while (enumerator2.MoveNext()) { StrongNameMembershipCondition condition = new StrongNameMembershipCondition(); condition.FromXml((SecurityElement) enumerator2.Current); list.Add(condition); } } this.m_fullTrustAssemblies = list; ArrayList list2 = new ArrayList(); SecurityElement elem = e.SearchForChildByTag("NamedPermissionSets"); SecurityElement element5 = null; if ((elem != null) && (elem.InternalChildren != null)) { element5 = this.UnnormalizeClassDeep(elem, hashtable); foreach (string str3 in s_reservedNamedPermissionSets) { this.FindElement(element5, str3); } } if (element5 == null) { element5 = new SecurityElement("NamedPermissionSets"); } list2.Add(BuiltInPermissionSets.FullTrust); list2.Add(BuiltInPermissionSets.Everything); list2.Add(BuiltInPermissionSets.SkipVerification); list2.Add(BuiltInPermissionSets.Execution); list2.Add(BuiltInPermissionSets.Nothing); list2.Add(BuiltInPermissionSets.Internet); list2.Add(BuiltInPermissionSets.LocalIntranet); foreach (PermissionSet set in list2) { set.IgnoreTypeLoadFailures = true; } this.m_namedPermissionSets = list2; this.m_permSetElement = element5; SecurityElement element6 = e.SearchForChildByTag("CodeGroup"); if (element6 == null) { throw new ArgumentException(Environment.GetResourceString("Argument_InvalidXMLElement", new object[] { "CodeGroup", base.GetType().FullName })); } CodeGroup group = XMLUtil.CreateCodeGroup(this.UnnormalizeClassDeep(element6, hashtable)); if (group == null) { throw new ArgumentException(Environment.GetResourceString("Argument_InvalidXMLElement", new object[] { "CodeGroup", base.GetType().FullName })); } group.FromXml(element6, this); this.m_rootCodeGroup = group; } }
public static void StrongNameMembershipConditionCallMethods() { StrongNameMembershipCondition snmc = new StrongNameMembershipCondition(new StrongNamePublicKeyBlob(new byte[1]), "test", new Version(0, 1)); bool check = snmc.Check(new Evidence()); IMembershipCondition obj = snmc.Copy(); check = snmc.Equals(new object()); int hash = snmc.GetHashCode(); string str = snmc.ToString(); SecurityElement se = new SecurityElement(""); PolicyLevel pl = (PolicyLevel)Activator.CreateInstance(typeof(PolicyLevel), true); snmc.FromXml(se); snmc.FromXml(se, pl); se = snmc.ToXml(); se = snmc.ToXml(pl); }