FromXml() public method

public FromXml ( SecurityElement e ) : void
e System.Security.SecurityElement
return void
		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);
 }