Inheritance: IDeserializationCallback, ISerializable, ISecurityEncodable, ISecurityPolicyEncodable, IMembershipCondition
		public void Constructor_MD5 ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			Assert.IsNotNull (hash);
			Assert.AreEqual (md5, hash.HashAlgorithm, "HashAlgorithm");
			Assert.AreEqual (BitConverter.ToString (digestMd5), BitConverter.ToString (hash.HashValue), "HashValue");
		}
		public void Constructor_SHA1 ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (sha1, digestSha1);
			Assert.IsNotNull (hash);
			Assert.AreEqual (sha1, hash.HashAlgorithm, "HashAlgorithm");
			Assert.AreEqual (BitConverter.ToString (digestSha1), BitConverter.ToString (hash.HashValue), "HashValue");
		}
Exemplo n.º 3
0
        // Token: 0x06002AD1 RID: 10961 RVA: 0x0009EEE4 File Offset: 0x0009D0E4
        bool IReportMatchMembershipCondition.Check(Evidence evidence, out object usedEvidence)
        {
            usedEvidence = null;
            if (evidence == null)
            {
                return(false);
            }
            Hash hostEvidence = evidence.GetHostEvidence <Hash>();

            if (hostEvidence != null)
            {
                if (this.m_value == null && this.m_element != null)
                {
                    this.ParseHashValue();
                }
                if (this.m_hashAlg == null && this.m_element != null)
                {
                    this.ParseHashAlgorithm();
                }
                byte[] array = null;
                object internalSyncObject = this.InternalSyncObject;
                lock (internalSyncObject)
                {
                    array = hostEvidence.GenerateHash(this.m_hashAlg);
                }
                if (array != null && HashMembershipCondition.CompareArrays(array, this.m_value))
                {
                    usedEvidence = hostEvidence;
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 4
0
        public override bool Equals(object o)
        {
            HashMembershipCondition other = (o as HashMembershipCondition);

            if (other == null)
            {
                return(false);
            }

            return((other.HashAlgorithm == hash_algorithm) &&
                   Compare(hash_value, other.hash_value));
        }
Exemplo n.º 5
0
        /// <summary>Gets the hash code for the current membership condition.</summary>
        /// <returns>The hash code for the current membership condition.</returns>
        // Token: 0x06002AD8 RID: 10968 RVA: 0x0009F1E4 File Offset: 0x0009D3E4
        public override int GetHashCode()
        {
            if (this.m_hashAlg == null && this.m_element != null)
            {
                this.ParseHashAlgorithm();
            }
            int num = (this.m_hashAlg != null) ? this.m_hashAlg.GetType().GetHashCode() : 0;

            if (this.m_value == null && this.m_element != null)
            {
                this.ParseHashValue();
            }
            return(num ^ HashMembershipCondition.GetByteArrayHashCode(this.m_value));
        }
		public void HashValue ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			// we can't change the instance data by getting a reference inside it
			byte[] value = hash.HashValue;
			value [0] = 0xFF;
			Assert.IsFalse (value [0] == hash.HashValue [0], "reference");
			Assert.AreEqual (BitConverter.ToString (digestMd5), BitConverter.ToString (hash.HashValue), "HashValue");
			// and we can't change the instance data by keeping a reference to what we supply
			hash.HashValue = value;
			value [0] = 0x00;
			Assert.IsFalse (value [0] == hash.HashValue [0], "reference-2");
			Assert.AreEqual (0xFF, hash.HashValue [0], "HashValue[0]");
		}
Exemplo n.º 7
0
 public static void HashMembershipConditionCallMethods()
 {
     HashMembershipCondition hmc = new HashMembershipCondition(Cryptography.SHA1.Create(), new byte[1]);
     bool check = hmc.Check(new Evidence());
     IMembershipCondition obj = hmc.Copy();
     check = hmc.Equals(new object());
     int hash = hmc.GetHashCode();
     string str = hmc.ToString();
     SecurityElement se = new SecurityElement("");
     PolicyLevel pl = (PolicyLevel)Activator.CreateInstance(typeof(PolicyLevel), true);
     hmc.FromXml(se);
     hmc.FromXml(se, pl);
     se = hmc.ToXml();
     se = hmc.ToXml(pl);
 }
Exemplo n.º 8
0
        public override bool Equals(Object o)
        {
            HashMembershipCondition that = (o as HashMembershipCondition);

            if (that != null)
            {
                if (this.m_hashAlg == null && this.m_element != null)
                {
                    this.ParseHashAlgorithm();
                }
                if (that.m_hashAlg == null && that.m_element != null)
                {
                    that.ParseHashAlgorithm();
                }

                if (this.m_hashAlg != null && that.m_hashAlg != null &&
                    this.m_hashAlg.GetType() == that.m_hashAlg.GetType())
                {
                    if (this.m_value == null && this.m_element != null)
                    {
                        this.ParseHashValue();
                    }
                    if (that.m_value == null && that.m_element != null)
                    {
                        that.ParseHashValue();
                    }

                    if (this.m_value.Length != that.m_value.Length)
                    {
                        return(false);
                    }

                    for (int i = 0; i < m_value.Length; i++)
                    {
                        if (this.m_value[i] != that.m_value[i])
                        {
                            return(false);
                        }
                    }
                    return(true);
                }
            }
            return(false);
        }
        /// <summary>确定指定对象中的 <see cref="P:System.Security.Policy.HashMembershipCondition.HashValue" /> 和 <see cref="P:System.Security.Policy.HashMembershipCondition.HashAlgorithm" /> 是否等效于包含在当前 <see cref="T:System.Security.Policy.HashMembershipCondition" /> 中的 <see cref="P:System.Security.Policy.HashMembershipCondition.HashValue" /> 和 <see cref="P:System.Security.Policy.HashMembershipCondition.HashAlgorithm" />。</summary>
        /// <returns>如果指定对象中的 <see cref="P:System.Security.Policy.HashMembershipCondition.HashValue" /> 和 <see cref="P:System.Security.Policy.HashMembershipCondition.HashAlgorithm" /> 等效于包含在当前 <see cref="T:System.Security.Policy.HashMembershipCondition" /> 中的 <see cref="P:System.Security.Policy.HashMembershipCondition.HashValue" /> 和 <see cref="P:System.Security.Policy.HashMembershipCondition.HashAlgorithm" />,则为 true;否则为 false。</returns>
        /// <param name="o">与当前的 <see cref="T:System.Security.Policy.HashMembershipCondition" /> 比较的对象。</param>
        /// <PermissionSet>
        ///   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="UnmanagedCode" />
        /// </PermissionSet>
        public override bool Equals(object o)
        {
            HashMembershipCondition membershipCondition = o as HashMembershipCondition;

            if (membershipCondition != null)
            {
                if (this.m_hashAlg == null && this.m_element != null)
                {
                    this.ParseHashAlgorithm();
                }
                if (membershipCondition.m_hashAlg == null && membershipCondition.m_element != null)
                {
                    membershipCondition.ParseHashAlgorithm();
                }
                if (this.m_hashAlg != null && membershipCondition.m_hashAlg != null && this.m_hashAlg.GetType() == membershipCondition.m_hashAlg.GetType())
                {
                    if (this.m_value == null && this.m_element != null)
                    {
                        this.ParseHashValue();
                    }
                    if (membershipCondition.m_value == null && membershipCondition.m_element != null)
                    {
                        membershipCondition.ParseHashValue();
                    }
                    if (this.m_value.Length != membershipCondition.m_value.Length)
                    {
                        return(false);
                    }
                    for (int index = 0; index < this.m_value.Length; ++index)
                    {
                        if ((int)this.m_value[index] != (int)membershipCondition.m_value[index])
                        {
                            return(false);
                        }
                    }
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 10
0
        public override bool Equals(object o)
        {
            HashMembershipCondition condition = o as HashMembershipCondition;

            if (condition != null)
            {
                if ((this.m_hashAlg == null) && (this.m_element != null))
                {
                    this.ParseHashAlgorithm();
                }
                if ((condition.m_hashAlg == null) && (condition.m_element != null))
                {
                    condition.ParseHashAlgorithm();
                }
                if (((this.m_hashAlg != null) && (condition.m_hashAlg != null)) && (this.m_hashAlg.GetType() == condition.m_hashAlg.GetType()))
                {
                    if ((this.m_value == null) && (this.m_element != null))
                    {
                        this.ParseHashValue();
                    }
                    if ((condition.m_value == null) && (condition.m_element != null))
                    {
                        condition.ParseHashValue();
                    }
                    if (this.m_value.Length != condition.m_value.Length)
                    {
                        return(false);
                    }
                    for (int i = 0; i < this.m_value.Length; i++)
                    {
                        if (this.m_value[i] != condition.m_value[i])
                        {
                            return(false);
                        }
                    }
                    return(true);
                }
            }
            return(false);
        }
		public void Check ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			Evidence e = null;
			Assert.IsFalse (hash.Check (e), "Check (null)");
			e = new Evidence ();
			Assert.IsFalse (hash.Check (e), "Check (empty)");
			e.AddHost (new Zone (SecurityZone.MyComputer));
			Assert.IsFalse (hash.Check (e), "Check (zone)");
			e.AddAssembly (hashEvidence);
			Assert.IsFalse (hash.Check (e), "Check (hash-assembly)");

			e = new Evidence ();
			e.AddHost (hashEvidence);
			Assert.IsTrue (hash.Check (e), "Check (MD5-host)");

			hash = new HashMembershipCondition (sha1, digestSha1);
			Assert.IsTrue (hash.Check (e), "Check (SHA1-host)");
		}
		public void Equals ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			Assert.IsFalse (hash.Equals (null), "Equals(null)");
			Assert.IsFalse (hash.Equals (new object ()), "Equals (object)");

			HashMembershipCondition h2 = new HashMembershipCondition (md5, digestMd5);
			Assert.IsTrue (hash.Equals (h2), "Equals(h2)");
			Assert.IsTrue (h2.Equals (hash), "Equals(hash)");

			// same assembly but different algorithm / value
			hash = new HashMembershipCondition (sha1, digestSha1);
			Assert.IsFalse (hash.Equals (h2), "Equals(h2)");
			Assert.IsFalse (h2.Equals (hash), "Equals(hash)");
		}
		public void ToString_ ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			Assert.IsTrue (hash.ToString ().StartsWith ("Hash - System.Security.Cryptography.MD5"), "MD5");

			hash = new HashMembershipCondition (sha1, digestSha1);
			Assert.IsTrue (hash.ToString ().StartsWith ("Hash - System.Security.Cryptography.SHA1"), "SHA1");
		}
		public void ToXml ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			SecurityElement se = hash.ToXml ();
			Assert.AreEqual ("IMembershipCondition", se.Tag, "Tag");
			Assert.IsTrue (se.Attribute ("class").StartsWith ("System.Security.Policy.HashMembershipCondition"), "class");
			Assert.AreEqual ("1", se.Attribute ("version"), "version");
			Assert.AreEqual (se.ToString (), hash.ToXml (null).ToString (), "ToXml(null)");
			Assert.AreEqual (se.ToString (), hash.ToXml (PolicyLevel.CreateAppDomainLevel ()).ToString (), "ToXml(PolicyLevel)");
		}
		public void FromXml_PolicyLevelNull ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			SecurityElement se = hash.ToXml ();
			hash.FromXml (se, null);
		}
		public void GetHashCode_ ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			HashMembershipCondition copy = (HashMembershipCondition)hash.Copy ();
			Assert.AreEqual (hash.GetHashCode (), copy.GetHashCode ());
		}
		public void Copy ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			HashMembershipCondition copy = (HashMembershipCondition)hash.Copy ();
			Assert.AreEqual (hash, copy, "Equals");
			Assert.IsFalse (Object.ReferenceEquals (hash, copy), "ReferenceEquals");
		}
		public void FromXml_SecurityElementNull ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			hash.FromXml (null, PolicyLevel.CreateAppDomainLevel ());
		}
		public void FromXml_Null ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			hash.FromXml (null);
		}
		public void FromXml_InvalidTag ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			SecurityElement se = hash.ToXml ();
			se.Tag = "IMonoship";
			hash.FromXml (se);
		}
		public void FromXml_NoClass ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			SecurityElement se = hash.ToXml ();

			SecurityElement w = new SecurityElement (se.Tag);
			w.AddAttribute ("version", se.Attribute ("version"));
			hash.FromXml (w);
			// doesn't even care of the class attribute presence
		}
		public void FromXml_InvalidClass ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			SecurityElement se = hash.ToXml ();
			se.Attributes ["class"] = "Hello world";
			hash.FromXml (se);
		}
		public void FromXml_WrongTagCase ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			SecurityElement se = hash.ToXml ();
			se.Tag = "IMEMBERSHIPCONDITION"; // instehash of IMembershipCondition
			hash.FromXml (se);
		}
		public void FromXml_InvalidVersion ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			SecurityElement se = hash.ToXml ();

			SecurityElement w = new SecurityElement (se.Tag);
			w.AddAttribute ("class", se.Attribute ("class"));
			w.AddAttribute ("version", "2");
			hash.FromXml (w);
			// doesn't seems to care about the version number!
		}
		public void FromXml_Empty_ToString ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			SecurityElement se = hash.ToXml ();

			SecurityElement w = new SecurityElement (se.Tag);
			w.AddAttribute ("class", se.Attribute ("class"));
			w.AddAttribute ("version", "1");
			hash.FromXml (w);
			// this is accepted - but doesn't include a hash algorithm or value
			// both would throw ArgumentNullException from the constructor
			string s = hash.ToString ();
		}
		public void FromXml_NoVersion ()
		{
			HashMembershipCondition hash = new HashMembershipCondition (md5, digestMd5);
			SecurityElement se = hash.ToXml ();

			SecurityElement w = new SecurityElement (se.Tag);
			w.AddAttribute ("class", se.Attribute ("class"));
			hash.FromXml (w);
		}
Exemplo n.º 27
0
        /// <summary>Determines whether the <see cref="P:System.Security.Policy.HashMembershipCondition.HashValue" /> and the <see cref="P:System.Security.Policy.HashMembershipCondition.HashAlgorithm" /> from the specified object are equivalent to the <see cref="P:System.Security.Policy.HashMembershipCondition.HashValue" /> and <see cref="P:System.Security.Policy.HashMembershipCondition.HashAlgorithm" /> contained in the current <see cref="T:System.Security.Policy.HashMembershipCondition" />.</summary>
        /// <returns>true if the <see cref="P:System.Security.Policy.HashMembershipCondition.HashValue" /> and <see cref="P:System.Security.Policy.HashMembershipCondition.HashAlgorithm" /> from the specified object is equivalent to the <see cref="P:System.Security.Policy.HashMembershipCondition.HashValue" /> and <see cref="P:System.Security.Policy.HashMembershipCondition.HashAlgorithm" /> contained in the current <see cref="T:System.Security.Policy.HashMembershipCondition" />; otherwise, false.</returns>
        /// <param name="o">The object to compare to the current <see cref="T:System.Security.Policy.HashMembershipCondition" />. </param>
        /// <PermissionSet>
        ///   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="UnmanagedCode" />
        /// </PermissionSet>
        public override bool Equals(object o)
        {
            HashMembershipCondition hashMembershipCondition = o as HashMembershipCondition;

            return(hashMembershipCondition != null && hashMembershipCondition.HashAlgorithm == this.hash_algorithm && this.Compare(this.hash_value, hashMembershipCondition.hash_value));
        }