16e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompackage org.bouncycastle.asn1.x500.style;
26e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
36e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.x500.RDN;
46e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.x500.X500Name;
570c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstromimport org.bouncycastle.asn1.x500.X500NameStyle;
66e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
76e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom/**
86e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Variation of BCStyle that insists on strict ordering for equality
96e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * and hashCode comparisons
106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom */
116e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompublic class BCStrictStyle
126e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    extends BCStyle
136e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom{
1470c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom    public static final X500NameStyle INSTANCE = new BCStrictStyle();
1570c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom
166e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    public boolean areEqual(X500Name name1, X500Name name2)
176e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
186e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        RDN[] rdns1 = name1.getRDNs();
196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        RDN[] rdns2 = name2.getRDNs();
206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        if (rdns1.length != rdns2.length)
226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        {
236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            return false;
246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        }
256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        for (int i = 0; i != rdns1.length; i++)
276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        {
2870c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom            if (!rdnAreEqual(rdns1[i], rdns2[i]))
296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            {
306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom                return false;
316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            }
326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        }
336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        return true;
356e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
366e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom}
37