ToXml() public method

public ToXml ( ) : SecurityElement
return System.Security.SecurityElement
Example #1
0
        /// <summary>Creates an XML encoding of the security object and its current state.</summary>
        /// <returns>An XML encoding of the security object, including any state information.</returns>
        /// <PermissionSet>
        ///   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="ControlEvidence" />
        /// </PermissionSet>
        public SecurityElement ToXml()
        {
            Hashtable hashtable = new Hashtable();

            if (this.full_trust_assemblies.Count > 0 && !hashtable.Contains("StrongNameMembershipCondition"))
            {
                hashtable.Add("StrongNameMembershipCondition", typeof(StrongNameMembershipCondition).FullName);
            }
            SecurityElement securityElement = new SecurityElement("NamedPermissionSets");

            foreach (object obj in this.named_permission_sets)
            {
                NamedPermissionSet namedPermissionSet = (NamedPermissionSet)obj;
                SecurityElement    securityElement2   = namedPermissionSet.ToXml();
                object             key = securityElement2.Attributes["class"];
                if (!hashtable.Contains(key))
                {
                    hashtable.Add(key, namedPermissionSet.GetType().FullName);
                }
                securityElement.AddChild(securityElement2);
            }
            SecurityElement securityElement3 = new SecurityElement("FullTrustAssemblies");

            foreach (object obj2 in this.full_trust_assemblies)
            {
                StrongNameMembershipCondition strongNameMembershipCondition = (StrongNameMembershipCondition)obj2;
                securityElement3.AddChild(strongNameMembershipCondition.ToXml(this));
            }
            SecurityElement securityElement4 = new SecurityElement("SecurityClasses");

            if (hashtable.Count > 0)
            {
                foreach (object obj3 in hashtable)
                {
                    DictionaryEntry dictionaryEntry  = (DictionaryEntry)obj3;
                    SecurityElement securityElement5 = new SecurityElement("SecurityClass");
                    securityElement5.AddAttribute("Name", (string)dictionaryEntry.Key);
                    securityElement5.AddAttribute("Description", (string)dictionaryEntry.Value);
                    securityElement4.AddChild(securityElement5);
                }
            }
            SecurityElement securityElement6 = new SecurityElement(typeof(PolicyLevel).Name);

            securityElement6.AddAttribute("version", "1");
            securityElement6.AddChild(securityElement4);
            securityElement6.AddChild(securityElement);
            if (this.root_code_group != null)
            {
                securityElement6.AddChild(this.root_code_group.ToXml(this));
            }
            securityElement6.AddChild(securityElement3);
            return(securityElement6);
        }
		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_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_Null ()
		{
			StrongNameMembershipCondition snmc = new StrongNameMembershipCondition (blob, name, version);
			// no ArgumentNullException here
			SecurityElement se = snmc.ToXml (null);
			Assert.IsNotNull (se, "ToXml(null)");
		}
		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_InvalidClass ()
		{
			StrongNameMembershipCondition snmc = new StrongNameMembershipCondition (blob, name, version);
			SecurityElement se = snmc.ToXml ();
			se.Attributes ["class"] = "Hello world";
			snmc.FromXml (se);
		}
		public void FromXml_InvalidTag ()
		{
			StrongNameMembershipCondition snmc = new StrongNameMembershipCondition (blob, name, version);
			SecurityElement se = snmc.ToXml ();
			se.Tag = "IMonoship";
			snmc.FromXml (se);
		}
		private void Common (StrongNameMembershipCondition snmc)
		{
			Assert.IsFalse (snmc.Check (allEmpty), "Check(allEmpty)");
			Assert.IsFalse (snmc.Check (hostOther), "Check(hostOther)");
			Assert.IsFalse (snmc.Check (assemblyEcmaCorlibVersion), "Check(assemblyEcmaCorlibVersion)");
			Assert.IsFalse (snmc.Check (assemblyEcmaVersion), "Check(assemblyEcmaVersion)");
			Assert.IsFalse (snmc.Check (assemblyMsSystemSecurityVersion), "Check(assemblyMsSystemSecurityVersion)");
			Assert.IsFalse (snmc.Check (assemblyMsVersion), "Check(assemblyMsVersion)");
			Assert.IsFalse (snmc.Check (assemblyOther), "Check(assemblyOther)");

			StrongNameMembershipCondition copy = (StrongNameMembershipCondition)snmc.Copy ();
			Assert.IsTrue (copy.Equals (snmc), "copy.Equals (snmc)");
			Assert.IsTrue (snmc.Equals (copy), "snmc.Equals (copy)");
			copy.Name = null;
			copy.Version = null;
			bool original = ((snmc.Name == null) && (snmc.Version == null));
			Assert.AreEqual (original, copy.Equals (snmc), "bad.Equals (snmc)");
			Assert.AreEqual (original, snmc.Equals (copy), "snmc.Equals (bad)");

			SecurityElement se = snmc.ToXml ();
			copy.FromXml (se);
			Assert.AreEqual (snmc.PublicKey, copy.PublicKey, "PublicKey");
			Assert.AreEqual (snmc.Name, copy.Name, "Name");
			Assert.AreEqual (snmc.Version, copy.Version, "Version");
			Assert.AreEqual (snmc.GetHashCode (), copy.GetHashCode (), "GetHashCode ()");
			Assert.AreEqual (snmc.ToString (), copy.ToString (), "ToString ()");
			Assert.IsTrue (copy.Equals (snmc), "xml.Equals (snmc)");
			Assert.IsTrue (snmc.Equals (copy), "snmc.Equals (xml)");
		}
 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);
 }