如果您使用以下枚举,你应该能够尽可能遍历每个元素为
X500Name或
X509Name。
public enum MyBCStyle { C(BCStyle.C), O(BCStyle.O ), OU(BCStyle.OU), T(BCStyle.T ), CN(BCStyle.CN ), SN(BCStyle.SN ), STREET(BCStyle.STREET ), SERIALNUMBER(BCStyle.SERIALNUMBER), L(BCStyle.L ), ST(BCStyle.ST ), SURNAME(BCStyle.SURNAME ), GIVENNAME(BCStyle.GIVENNAME ), INITIALS(BCStyle.INITIALS ), GENERATION(BCStyle.GENERATION ), UNIQUE_IDENTIFIER(BCStyle.UNIQUE_IDENTIFIER ), BUSINESS_CATEGORY(BCStyle.BUSINESS_CATEGORY ), POSTAL_CODE(BCStyle.POSTAL_CODE ), DN_QUALIFIER(BCStyle.DN_QUALIFIER ), PSEUDonYM(BCStyle.PSEUDonYM ), DATE_OF_BIRTH(BCStyle.DATE_OF_BIRTH ), PLACE_OF_BIRTH(BCStyle.PLACE_OF_BIRTH ), GENDER(BCStyle.GENDER ), COUNTRY_OF_CITIZENSHIP(BCStyle.COUNTRY_OF_CITIZENSHIP ), COUNTRY_OF_RESIDENCE(BCStyle.COUNTRY_OF_RESIDENCE ), NAME_AT_BIRTH(BCStyle.NAME_AT_BIRTH ), POSTAL_ADDRESS(BCStyle.POSTAL_ADDRESS ), DMD_NAME(BCStyle.DMD_NAME ), TELEPHONE_NUMBER(BCStyle.TELEPHONE_NUMBER), NAME(BCStyle.NAME), EmailAddress(BCStyle.EmailAddress), UnstructuredName(BCStyle.UnstructuredName), UnstructuredAddress(BCStyle.UnstructuredAddress), E(BCStyle.E), DC(BCStyle.DC), UID(BCStyle.UID ); private ASN1ObjectIdentifier identifier; public ASN1ObjectIdentifier getIdentifier() { return identifier; } private MyBCStyle(ASN1ObjectIdentifier asn1ObjectIdentifier) { this.identifier = asn1ObjectIdentifier; }}这样,你可以做
for(MyBCStyle bcStyle : MyBCStyle.values()) { if(x500name.getRDNs(bcStyle.getIdentifier()).length > 1) { throw new IllegalArgumentException("Multiple " + bcStyle.name() + " was found."); }}


