001package org.apache.commons.ssl.org.bouncycastle.asn1.x500.style;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.x500.RDN;
004import org.apache.commons.ssl.org.bouncycastle.asn1.x500.X500Name;
005import org.apache.commons.ssl.org.bouncycastle.asn1.x500.X500NameStyle;
006
007/**
008 * Variation of BCStyle that insists on strict ordering for equality
009 * and hashCode comparisons
010 */
011public class BCStrictStyle
012    extends BCStyle
013{
014    public static final X500NameStyle INSTANCE = new BCStrictStyle();
015
016    public boolean areEqual(X500Name name1, X500Name name2)
017    {
018        RDN[] rdns1 = name1.getRDNs();
019        RDN[] rdns2 = name2.getRDNs();
020
021        if (rdns1.length != rdns2.length)
022        {
023            return false;
024        }
025
026        for (int i = 0; i != rdns1.length; i++)
027        {
028            if (!rdnAreEqual(rdns1[i], rdns2[i]))
029            {
030                return false;
031            }
032        }
033
034        return true;
035    }
036}