java验证名字,如何在Java中验证专有名称(DN)?

小编典典

如果您使用以下枚举,你应该能够尽可能遍历每个元素为X500Name或X509Name。

public enum MyBCStyle {

/**

* country code - StringType(SIZE(2))

*/

C(BCStyle.C),

/**

* organization - StringType(SIZE(1..64))

*/

O(BCStyle.O ),

/**

* organizational unit name - StringType(SIZE(1..64))

*/

OU(BCStyle.OU),

/**

* Title

*/

T(BCStyle.T ),

/**

* common name - StringType(SIZE(1..64))

*/

CN(BCStyle.CN ),

/**

* device serial number name - StringType(SIZE(1..64))

*/

SN(BCStyle.SN ),

/**

* street - StringType(SIZE(1..64))

*/

STREET(BCStyle.STREET ),

/**

* device serial number name - StringType(SIZE(1..64))

*/

SERIALNUMBER(BCStyle.SERIALNUMBER),

/**

* locality name - StringType(SIZE(1..64))

*/

L(BCStyle.L ),

/**

* state, or province name - StringType(SIZE(1..64))

*/

ST(BCStyle.ST ),

/**

* Naming attributes of type X520name

*/

SURNAME(BCStyle.SURNAME ),

GIVENNAME(BCStyle.GIVENNAME ),

INITIALS(BCStyle.INITIALS ),

GENERATION(BCStyle.GENERATION ),

UNIQUE_IDENTIFIER(BCStyle.UNIQUE_IDENTIFIER ),

/**

* businessCategory - DirectoryString(SIZE(1..128)

*/

BUSINESS_CATEGORY(BCStyle.BUSINESS_CATEGORY ),

/**

* postalCode - DirectoryString(SIZE(1..40)

*/

POSTAL_CODE(BCStyle.POSTAL_CODE ),

/**

* dnQualifier - DirectoryString(SIZE(1..64)

*/

DN_QUALIFIER(BCStyle.DN_QUALIFIER ),

/**

* RFC 3039 Pseudonym - DirectoryString(SIZE(1..64)

*/

PSEUDONYM(BCStyle.PSEUDONYM ),

/**

* RFC 3039 DateOfBirth - GeneralizedTime - YYYYMMDD000000Z

*/

DATE_OF_BIRTH(BCStyle.DATE_OF_BIRTH ),

/**

* RFC 3039 PlaceOfBirth - DirectoryString(SIZE(1..128)

*/

PLACE_OF_BIRTH(BCStyle.PLACE_OF_BIRTH ),

/**

* RFC 3039 Gender - PrintableString (SIZE(1)) -- "M", "F", "m" or "f"

*/

GENDER(BCStyle.GENDER ),

/**

* RFC 3039 CountryOfCitizenship - PrintableString (SIZE (2)) -- ISO 3166

* codes only

*/

COUNTRY_OF_CITIZENSHIP(BCStyle.COUNTRY_OF_CITIZENSHIP ),

/**

* RFC 3039 CountryOfResidence - PrintableString (SIZE (2)) -- ISO 3166

* codes only

*/

COUNTRY_OF_RESIDENCE(BCStyle.COUNTRY_OF_RESIDENCE ),

/**

* ISIS-MTT NameAtBirth - DirectoryString(SIZE(1..64)

*/

NAME_AT_BIRTH(BCStyle.NAME_AT_BIRTH ),

/**

* RFC 3039 PostalAddress - SEQUENCE SIZE (1..6) OF

* DirectoryString(SIZE(1..30))

*/

POSTAL_ADDRESS(BCStyle.POSTAL_ADDRESS ),

/**

* RFC 2256 dmdName

*/

DMD_NAME(BCStyle.DMD_NAME ),

/**

* id-at-telephoneNumber

*/

TELEPHONE_NUMBER(BCStyle.TELEPHONE_NUMBER),

/**

* id-at-name

*/

NAME(BCStyle.NAME),

/**

* Email address (RSA PKCS#9 extension) - IA5String.

*

Note: if you're trying to be ultra orthodox, don't use this! It shouldn't be in here.

*/

EmailAddress(BCStyle.EmailAddress),

/**

* more from PKCS#9

*/

UnstructuredName(BCStyle.UnstructuredName),

UnstructuredAddress(BCStyle.UnstructuredAddress),

E(BCStyle.E),

DC(BCStyle.DC),

/**

* LDAP User id.

*/

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.");

}

}

2020-11-01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值