public final class X500Principal
extends Object
implements Principal, Serializable
java.lang.Object | |
↳ | javax.security.auth.x500.X500Principal |
该课程代表X.500 Principal
。 X500Principal
由诸如“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US” X500Principal
名名称代表。
可以通过使用可分辨名称的字符串表示或通过使用可分辨名称的ASN.1 DER编码字节表示来实例化此类。 专有名称的字符串表示的当前规范在RFC 2253: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names中定义。 但是,此类接受RFC 2253和RFC 1779: A String Representation of Distinguished Names的字符串格式,并且还识别其OID(对象标识符)在RFC 3280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile中定义的属性类型关键字。
可以通过调用 getName
方法获得此 X500Principal
的字符串表示形式。
请注意, getSubjectX500Principal
和 getIssuerX500Principal
方法 X509Certificate
返回代表证书颁发者和主题字段的 X509Certificate
。
也可以看看:
Constants |
|
---|---|
String |
CANONICAL 专有名称的规范字符串格式。 |
String |
RFC1779 专有名称的RFC 1779字符串格式。 |
String |
RFC2253 可分辨名称的RFC 2253字符串格式。 |
Public constructors |
|
---|---|
X500Principal(String name) 从X.500可分辨名称的字符串表示形式创建 |
|
X500Principal(String name, Map<String, String> keywordMap) 从X.500可分辨名称(例如:“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US”)的字符串表示形式创建 |
|
X500Principal(byte[] name) 从ASN.1 DER编码形式的专有名称创建 |
|
X500Principal(InputStream is) 从 |
Public methods |
|
---|---|
boolean |
equals(Object o) 将指定的 |
byte[] |
getEncoded() 以ASN.1 DER编码形式返回专有名称。 |
String |
getName(String format) 使用指定的格式返回X.500专有名称的字符串表示形式。 |
String |
getName() 使用RFC 2253中定义的格式返回X.500专有名称的字符串表示形式。 |
String |
getName(String format, Map<String, String> oidMap) 使用指定的格式返回X.500专有名称的字符串表示形式。 |
int |
hashCode() 返回这个 |
String |
toString() 返回此 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface java.security.Principal
|
X500Principal (String name)
从X.500可分辨名称(例如:“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US”)的字符串表示形式创建X500Principal
。 专有名称必须使用RFC 1779或RFC 2253中定义的语法来指定(两种格式均可接受)。
此构造函数可识别RFC 1779和RFC 2253(以及getName(String format)
列出)中定义的属性类型关键字,以及在RFC中定义OID的T,DNQ或DNQUALIFIER,SURNAME,GIVENNAME,INITIALS,GENERATION,EMAILADDRESS和SERIALNUMBER关键字3280及其继任者。 任何其他属性类型都必须指定为OID。
Parameters | |
---|---|
name |
String : an X.500 distinguished name in RFC 1779 or RFC 2253 format |
Throws | |
---|---|
NullPointerException |
if the name is null |
IllegalArgumentException |
if the name is improperly specified |
X500Principal (String name, Map<String, String> keywordMap)
从X.500可分辨名称(例如:“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US”)的字符串表示形式创建X500Principal
。 专有名称必须使用RFC 1779或RFC 2253中定义的语法来指定(两种格式均可接受)。
此构造函数可识别X500Principal(String)
指定的属性类型关键字,还可识别keywordMap
参数中具有条目的其他关键字。 keywordMap中的关键字条目优先于由X500Principal(String)
识别的默认关键字。 关键字必须全部大写,否则它们将被忽略。 不正确指定的关键字将被忽略; 但是,如果名称中的关键字映射到不正确指定的OID, IllegalArgumentException
引发IllegalArgumentException
。 允许映射到相同OID的2个不同关键字是允许的。
Parameters | |
---|---|
name |
String : an X.500 distinguished name in RFC 1779 or RFC 2253 format |
keywordMap |
Map : an attribute type keyword map, where each key is a keyword String that maps to a corresponding object identifier in String form (a sequence of nonnegative integers separated by periods). The map may be empty but never null . |
Throws | |
---|---|
NullPointerException |
if name or keywordMap is null |
IllegalArgumentException |
if the name is improperly specified or a keyword in the name maps to an OID that is not in the correct form |
X500Principal (byte[] name)
从ASN.1 DER编码形式的专有名称创建X500Principal
。 该结构的ASN.1表示法如下。
Name ::= CHOICE {
RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::=
SET SIZE (1 .. MAX) OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY DEFINED BY AttributeType
....
DirectoryString ::= CHOICE {
teletexString TeletexString (SIZE (1..MAX)),
printableString PrintableString (SIZE (1..MAX)),
universalString UniversalString (SIZE (1..MAX)),
utf8String UTF8String (SIZE (1.. MAX)),
bmpString BMPString (SIZE (1..MAX)) }
Parameters | |
---|---|
name |
byte : a byte array containing the distinguished name in ASN.1 DER encoded form |
Throws | |
---|---|
IllegalArgumentException |
if an encoding error occurs (incorrect form for DN) |
X500Principal (InputStream is)
创建一个X500Principal
从InputStream
包含ASN.1 DER编码形式的标识名。 此结构的ASN.1表示法在X500Principal(byte[] name)
的文档中提供。
输入流的读取位置位于编码的可分辨名称之后的下一个可用字节。
Parameters | |
---|---|
is |
InputStream : an InputStream containing the distinguished name in ASN.1 DER encoded form |
Throws | |
---|---|
NullPointerException |
if the InputStream is null |
IllegalArgumentException |
if an encoding error occurs (incorrect form for DN) |
boolean equals (Object o)
将指定的 Object
与此 X500Principal
进行比较 X500Principal
相等。
具体而言,此方法返回 true
如果 Object
O是 X500Principal
以及如果相应的规范的字符串表示(通过所获得的 getName(X500Principal.CANONICAL)
此对象和 邻的方法)是相等的。
该实现符合RFC 3280的要求。
Parameters | |
---|---|
o |
Object : Object to be compared for equality with this X500Principal |
Returns | |
---|---|
boolean |
true if the specified Object is equal to this X500Principal , false otherwise |
byte[] getEncoded ()
以ASN.1 DER编码形式返回专有名称。 此结构的ASN.1表示法在X500Principal(byte[] name)
的文档中提供。
请注意,返回的字节数组被克隆以防止后续修改。
Returns | |
---|---|
byte[] |
a byte array containing the distinguished name in ASN.1 DER encoded form |
String getName (String format)
使用指定的格式返回X.500专有名称的字符串表示形式。 格式的有效值是“RFC1779”,“RFC2253”和“典型”(不区分大小写)。
如果将“RFC1779”指定为格式,则此方法将发出RFC 1779(CN,L,ST,O,OU,C,STREET)中定义的属性类型关键字。 任何其他属性类型都以OID形式发出。
如果将“RFC2253”指定为格式,则此方法将发出在RFC 2253(CN,L,ST,O,OU,C,STREET,DC,UID)中定义的属性类型关键字。 任何其他属性类型都以OID形式发出。 在严格的阅读条件下,RFC 2253仅指定了UTF-8字符串表示。 此方法返回的字符串是通过解码此UTF-8表示形式实现的Unicode字符串。
如果将“CANONICAL”指定为格式,则此方法将返回符合RFC 2253的字符串表示形式,并带有以下附加的规范化形式:
String.toUpperCase(Locale.US)
String.toLowerCase(Locale.US)
其他标准格式可能会在未来推出。
Parameters | |
---|---|
format |
String : the format to use |
Returns | |
---|---|
String |
a string representation of this X500Principal using the specified format |
Throws | |
---|---|
IllegalArgumentException |
if the specified format is invalid or null |
String getName ()
使用RFC 2253中定义的格式返回X.500专有名称的字符串表示形式。
这种方法相当于调用 getName(X500Principal.RFC2253)
。
Returns | |
---|---|
String |
the distinguished name of this X500Principal |
String getName (String format, Map<String, String> oidMap)
使用指定的格式返回X.500专有名称的字符串表示形式。 格式的有效值是“RFC1779”和“RFC2253”(不区分大小写)。 不允许使用“CANONICAL”,并且会抛出IllegalArgumentException
。
此方法以getName(String)
指定的格式返回字符串,并且还为包含oidMap
参数中的条目的OID发出其他属性类型关键字。 oidMap中的OID条目优先于由getName(String)
识别的默认OID。 不正确指定的OID将被忽略; 但是,如果名称中的OID映射到不正确指定的关键字, IllegalArgumentException
引发IllegalArgumentException
。
其他标准格式可能会在未来推出。
警告:其他属性类型关键字可能无法被其他实现识别; 因此如果您不确定这些关键字是否会被其他实现识别,请不要使用此方法。
Parameters | |
---|---|
format |
String : the format to use |
oidMap |
Map : an OID map, where each key is an object identifier in String form (a sequence of nonnegative integers separated by periods) that maps to a corresponding attribute type keyword String. The map may be empty but never null . |
Returns | |
---|---|
String |
a string representation of this X500Principal using the specified format |
Throws | |
---|---|
IllegalArgumentException |
if the specified format is invalid, null, or an OID in the name maps to an improperly specified keyword |
NullPointerException |
if oidMap is null |
int hashCode ()
返回此 X500Principal
的哈希码。
哈希码通过以下方式计算: getName(X500Principal.CANONICAL).hashCode()
Returns | |
---|---|
int |
a hash code for this X500Principal |
String toString ()
返回此 X500Principal
的用户友好字符串表示 X500Principal
。
Returns | |
---|---|
String |
a string representation of this X500Principal |