Most visited

Recently visited

Added in API level 1

X500Principal

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的字符串表示形式。

请注意, getSubjectX500PrincipalgetIssuerX500Principal方法 X509Certificate返回代表证书颁发者和主题字段的 X509Certificate

也可以看看:

Summary

Constants

String CANONICAL

专有名称的规范字符串格式。

String RFC1779

专有名称的RFC 1779字符串格式。

String RFC2253

可分辨名称的RFC 2253字符串格式。

Public constructors

X500Principal(String name)

从X.500可分辨名称的字符串表示形式创建 X500Principal (例如:“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US”)。

X500Principal(String name, Map<StringString> keywordMap)

从X.500可分辨名称(例如:“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US”)的字符串表示形式创建 X500Principal

X500Principal(byte[] name)

从ASN.1 DER编码形式的专有名称创建 X500Principal

X500Principal(InputStream is)

InputStream创建一个 X500PrincipalInputStream包含ASN.1 DER编码格式中的专有名称。

Public methods

boolean equals(Object o)

将指定的 Object与此 X500Principal进行比较以获得相等性。

byte[] getEncoded()

以ASN.1 DER编码形式返回专有名称。

String getName(String format)

使用指定的格式返回X.500专有名称的字符串表示形式。

String getName()

使用RFC 2253中定义的格式返回X.500专有名称的字符串表示形式。

String getName(String format, Map<StringString> oidMap)

使用指定的格式返回X.500专有名称的字符串表示形式。

int hashCode()

返回这个 X500Principal的散列码。

String toString()

返回此 X500Principal的用户友好字符串表示 X500Principal

Inherited methods

From class java.lang.Object
From interface java.security.Principal

Constants

CANONICAL

Added in API level 1
String CANONICAL

专有名称的规范字符串格式。

常数值:“CANONICAL”

RFC1779

Added in API level 1
String RFC1779

专有名称的RFC 1779字符串格式。

常量值:“RFC1779”

RFC2253

Added in API level 1
String RFC2253

可分辨名称的RFC 2253字符串格式。

常数值:“RFC2253”

Public constructors

X500Principal

Added in API level 1
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

Added in API level 9
X500Principal (String name, 
                Map<StringString> 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

Added in API level 1
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

Added in API level 1
X500Principal (InputStream is)

创建一个X500PrincipalInputStream包含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)

Public methods

equals

Added in API level 1
boolean equals (Object o)

将指定的 Object与此 X500Principal进行比较 X500Principal相等。

具体而言,此方法返回 true如果 Object OX500Principal以及如果相应的规范的字符串表示(通过所获得的 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

getEncoded

Added in API level 1
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

getName

Added in API level 1
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的字符串表示形式,并带有以下附加的规范化形式:

  1. Leading zeros are removed from attribute types that are encoded as dotted decimal OIDs
  2. DirectoryString attribute values of type PrintableString and UTF8String are not output in hexadecimal format
  3. DirectoryString attribute values of types other than PrintableString and UTF8String are output in hexadecimal format
  4. Leading and trailing white space characters are removed from non-hexadecimal attribute values (unless the value consists entirely of white space characters)
  5. Internal substrings of one or more white space characters are converted to a single space in non-hexadecimal attribute values
  6. Relative Distinguished Names containing more than one Attribute Value Assertion (AVA) are output in the following order: an alphabetical ordering of AVAs containing standard keywords, followed by a numeric ordering of AVAs containing OID keywords.
  7. The only characters in attribute values that are escaped are those which section 2.4 of RFC 2253 states must be escaped (they are escaped using a preceding backslash character)
  8. The entire name is converted to upper case using String.toUpperCase(Locale.US)
  9. The entire name is converted to lower case using String.toLowerCase(Locale.US)
  10. The name is finally normalized using normalization form KD, as described in the Unicode Standard and UAX #15

其他标准格式可能会在未来推出。

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

getName

Added in API level 1
String getName ()

使用RFC 2253中定义的格式返回X.500专有名称的字符串表示形式。

这种方法相当于调用 getName(X500Principal.RFC2253)

Returns
String the distinguished name of this X500Principal

getName

Added in API level 9
String getName (String format, 
                Map<StringString> 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

hashCode

Added in API level 1
int hashCode ()

返回此 X500Principal的哈希码。

哈希码通过以下方式计算: getName(X500Principal.CANONICAL).hashCode()

Returns
int a hash code for this X500Principal

toString

Added in API level 1
String toString ()

返回此 X500Principal的用户友好字符串表示 X500Principal

Returns
String a string representation of this X500Principal

Hooray!