예제 #1
0
        private void equalityAndHashCodeTest(
            IX509AttributeCertificate attrCert,
            byte[]                                          encoding)
        {
            if (!attrCert.Equals(attrCert))
            {
                Fail("same certificate not equal");
            }

            if (!attrCert.Holder.Equals(attrCert.Holder))
            {
                Fail("same holder not equal");
            }

            if (!attrCert.Issuer.Equals(attrCert.Issuer))
            {
                Fail("same issuer not equal");
            }

            if (attrCert.Holder.Equals(attrCert.Issuer))
            {
                Fail("wrong holder equal");
            }

            if (attrCert.Issuer.Equals(attrCert.Holder))
            {
                Fail("wrong issuer equal");
            }

            IX509AttributeCertificate attrCert2 = new X509V2AttributeCertificate(encoding);

            if (attrCert2.Holder.GetHashCode() != attrCert.Holder.GetHashCode())
            {
                Fail("holder hashCode test failed");
            }

            if (!attrCert2.Holder.Equals(attrCert.Holder))
            {
                Fail("holder Equals test failed");
            }

            if (attrCert2.Issuer.GetHashCode() != attrCert.Issuer.GetHashCode())
            {
                Fail("issuer hashCode test failed");
            }

            if (!attrCert2.Issuer.Equals(attrCert.Issuer))
            {
                Fail("issuer Equals test failed");
            }
        }
예제 #2
0
		private void equalityAndHashCodeTest(
			IX509AttributeCertificate	attrCert,
			byte[]						encoding)
		{
			if (!attrCert.Equals(attrCert))
			{
				Fail("same certificate not equal");
			}

			if (!attrCert.Holder.Equals(attrCert.Holder))
			{
				Fail("same holder not equal");
			}

			if (!attrCert.Issuer.Equals(attrCert.Issuer))
			{
				Fail("same issuer not equal");
			}

			if (attrCert.Holder.Equals(attrCert.Issuer))
			{
				Fail("wrong holder equal");
			}

			if (attrCert.Issuer.Equals(attrCert.Holder))
			{
				Fail("wrong issuer equal");
			}

			IX509AttributeCertificate attrCert2 = new X509V2AttributeCertificate(encoding);

			if (attrCert2.Holder.GetHashCode() != attrCert.Holder.GetHashCode())
			{
				Fail("holder hashCode test failed");
			}

			if (!attrCert2.Holder.Equals(attrCert.Holder))
			{
				Fail("holder Equals test failed");
			}

			if (attrCert2.Issuer.GetHashCode() != attrCert.Issuer.GetHashCode())
			{
				Fail("issuer hashCode test failed");
			}

			if (!attrCert2.Issuer.Equals(attrCert.Issuer))
			{
				Fail("issuer Equals test failed");
			}
		}
    public bool Match(object obj)
    {
        if (obj == null)
        {
            throw new ArgumentNullException("obj");
        }
        IX509AttributeCertificate iX509AttributeCertificate = obj as IX509AttributeCertificate;

        if (iX509AttributeCertificate == null)
        {
            return(false);
        }
        if (attributeCert != null && !attributeCert.Equals(iX509AttributeCertificate))
        {
            return(false);
        }
        if (serialNumber != null && !iX509AttributeCertificate.SerialNumber.Equals(serialNumber))
        {
            return(false);
        }
        if (holder != null && !iX509AttributeCertificate.Holder.Equals(holder))
        {
            return(false);
        }
        if (issuer != null && !iX509AttributeCertificate.Issuer.Equals(issuer))
        {
            return(false);
        }
        if (attributeCertificateValid != null && !iX509AttributeCertificate.IsValid(attributeCertificateValid.Value))
        {
            return(false);
        }
        if (targetNames.Count > 0 || targetGroups.Count > 0)
        {
            Asn1OctetString extensionValue = iX509AttributeCertificate.GetExtensionValue(X509Extensions.TargetInformation);
            if (extensionValue != null)
            {
                TargetInformation instance;
                try
                {
                    instance = TargetInformation.GetInstance(X509ExtensionUtilities.FromExtensionValue(extensionValue));
                }
                catch (Exception)
                {
                    return(false);
                }
                Targets[] targetsObjects = instance.GetTargetsObjects();
                if (targetNames.Count > 0)
                {
                    bool flag = false;
                    for (int i = 0; i < targetsObjects.Length; i++)
                    {
                        if (flag)
                        {
                            break;
                        }
                        Target[] targets = targetsObjects[i].GetTargets();
                        for (int j = 0; j < targets.Length; j++)
                        {
                            GeneralName targetName = targets[j].TargetName;
                            if (targetName != null && targetNames.Contains(targetName))
                            {
                                flag = true;
                                break;
                            }
                        }
                    }
                    if (!flag)
                    {
                        return(false);
                    }
                }
                if (targetGroups.Count > 0)
                {
                    bool flag2 = false;
                    for (int k = 0; k < targetsObjects.Length; k++)
                    {
                        if (flag2)
                        {
                            break;
                        }
                        Target[] targets2 = targetsObjects[k].GetTargets();
                        for (int l = 0; l < targets2.Length; l++)
                        {
                            GeneralName targetGroup = targets2[l].TargetGroup;
                            if (targetGroup != null && targetGroups.Contains(targetGroup))
                            {
                                flag2 = true;
                                break;
                            }
                        }
                    }
                    if (!flag2)
                    {
                        return(false);
                    }
                }
            }
        }
        return(true);
    }