public final class X500Principal extends Object implements Principal, Serializable
这类代表一个X.500 Principal
。X500Principal
s是由著名的名字如“CN =公爵表示,欧= JavaSoft,O = Sun Microsystems,C =我们”。
这个类可以利用的可分辨名称的字符串表示形式实例化,或通过使用ASN.1 DER编码的1字节表示尊敬的名字。对于一个可分辨名称的字符串表示形式的现行规范中定义的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。
这X500Principal
的字符串表示形式可以通过调用getName
方法获得。
注意,X509Certificate
返回x500principals表示该证书的颁发者和学科领域的getSubjectX500Principal
和getIssuerX500Principal
方法。
X509Certificate
,
Serialized Form
Modifier and Type | Field and Description |
---|---|
static String |
CANONICAL
规范的区分名称的字符串格式。
|
static String |
RFC1779
RFC 1779格式字符串的可分辨名称。
|
static String |
RFC2253
RFC 2253格式字符串的可分辨名称。
|
Constructor and Description |
---|
X500Principal(byte[] name)
创建一个
X500Principal 从尊贵的名字在ASN.1 DER编码的形式1。
|
X500Principal(InputStream is)
创建从一个
InputStream ASN.1中包含的识别名的
X500Principal 1 DER编码的形式。
|
X500Principal(String name)
创建从一个X.500的字符串表示一个
X500Principal 识别名称(例如:“CN =公爵欧= JavaSoft,O = Sun Microsystems,C =我们”)。
|
X500Principal(String name, Map<String,String> keywordMap)
创建从一个X.500的字符串表示一个
X500Principal 识别名称(例如:“CN =公爵欧= JavaSoft,O = Sun Microsystems,C =我们”)。
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object o)
指定的
Object 这个
X500Principal 平等的比较。
|
byte[] |
getEncoded()
返回可分辨名称在ASN.1 DER编码的形式1。
|
String |
getName()
返回一个字符串表示的X.500可分辨名称使用在RFC 2253中定义的格式。
|
String |
getName(String format)
返回一个字符串表示的X.500可分辨名称使用指定的格式。
|
String |
getName(String format, Map<String,String> oidMap)
返回一个字符串表示的X.500可分辨名称使用指定的格式。
|
int |
hashCode()
返回这个
X500Principal 哈希代码。
|
String |
toString()
返回此
X500Principal 友好的字符串表示形式。
|
public static final String RFC1779
public static final String RFC2253
public static final String CANONICAL
public X500Principal(String name)
X500Principal
识别名称(例如:“CN =公爵欧= JavaSoft,O = Sun Microsystems,C =我们”)。可分辨名称必须使用在RFC 1779和RFC 2253中定义的语法指定(或格式是可以接受的)。
此构造函数识别属性类型的关键词在RFC 1779和RFC 2253定义(列在getName(String format)
),以及T、DNQ或dnqualifier,姓givenName,缩写,代,地址,和序列号关键词的对象标识符(OID)在RFC 3280和它的后继的定义。任何其他属性的类型必须被指定为一个OID。
这个实现实施更严格的OID语法比在RFC 1779和2253定义。它使用定义在RFC 4512更正确的语法,它指定OID至少包含2个数字:
numericoid = number 1*( DOT number )
name
- X.500可分辨名称在RFC 1779和RFC 2253格式
NullPointerException
-如果
name
是
null
IllegalArgumentException
-如果
name
是正确指定
public X500Principal(String name, Map<String,String> keywordMap)
X500Principal
识别名称(例如:“CN =公爵欧= JavaSoft,O = Sun Microsystems,C =我们”)。可分辨名称必须使用在RFC 1779和RFC 2253中定义的语法指定(或格式是可以接受的)。
此构造函数中指定的属性类型识别X500Principal(String)
关键词也承认额外的关键词,在keywordMap
参数项。关键词词条在keywordmap优先于默认关键词被X500Principal(String)
。关键词必须在所有的情况下指定,否则将被忽略。正确指定的关键词被忽略;但是如果在名字映射的关键字不正确指定的对象标识符(OID),一个IllegalArgumentException
抛出。它允许有2个不同的关键字映射到同一个OID。
这个实现实施更严格的OID语法比在RFC 1779和2253定义。它使用定义在RFC 4512更正确的语法,它指定OID至少包含2个数字:
numericoid = number 1*( DOT number )
name
- X.500可分辨名称在RFC 1779和RFC 2253格式
keywordMap
-属性类型关键字Map,其中每个键是一个字符串关键字映射到相应的对象标识符字符串形式(一个非负整数序列相隔时间)。Map可能是空的但不
null
。
NullPointerException
-如果
name
或
keywordMap
是
null
IllegalArgumentException
-如果
name
是正确指定的或在
name
Map关键字一个OID,形式不正确
public X500Principal(byte[] name)
X500Principal
从尊贵的名字在ASN.1 DER编码的形式1。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)) }
name
- 1含专有名称的字节数组1 DER编码的形式。
IllegalArgumentException
如果编码发生错误(DN不正确的形式)
public X500Principal(InputStream is)
InputStream
ASN.1中包含的识别名的
X500Principal
1 DER编码的形式。ASN。这个结构表示1是在
X500Principal(byte[] name)
输入流的读取位置被定位到下一个可用字节后编码的著名名称。
提供的文件。is
-
InputStream
ASN.1中含有的可分辨名称。1 DER编码的形式
NullPointerException
-如果
InputStream
是
null
IllegalArgumentException
如果编码发生错误(DN不正确的形式)
public String getName()
这种方法相当于调用getName(X500Principal.RFC2253)
。
public String getName(String format)
如果“rfc1779”指定的格式,该方法将属性类型的关键词在RFC 1779中定义的(CN,L,ST,O,OU,C,街道)。其他的属性类型是发出一个OID。
如果“rfc2253”指定的格式,该方法将属性类型的关键词在RFC 2253中定义的(CN,L,ST,O,OU,C,街,DC,UID)。其他的属性类型是发出一个OID。一个严格的阅读下,RFC 2253只指定一个UTF-8字符串表示形式。此方法返回的字符串是Unicode字符串解码这个UTF-8表示。
如果“典型”被指定为格式,此方法返回一个RFC 2253的字符串表示形式与下列附加canonicalizations:
String.toUpperCase(Locale.US)
String.toLowerCase(Locale.US)
额外的标准格式可能会在未来推出。
format
-格式
X500Principal
IllegalArgumentException
-如果指定的格式无效或无效
public String getName(String format, Map<String,String> oidMap)
IllegalArgumentException
将抛出。
此方法返回字符串的格式指定的getName(String)
也发出额外的属性类型的关键词,在oidMap
参数有输入OID。在oidmap OID项优先于默认的OID被getName(String)
。正确指定的OID是忽略的;但是如果在名称映射一个OID的正确指定的关键词,一个IllegalArgumentException
抛出。
额外的标准格式可能会在未来推出。
警告:附加属性类型的关键字可能不被其他实现所识别;因此如果您不确定这些关键字是否将被其他实现所识别,则不使用此方法。
format
-格式
oidMap
-一个老Map,其中每个键的字符串形式的对象标识符(一个非负整数序列相隔时间)映射到相应的属性类型关键字字符串。Map可能是空的但不
null
。
X500Principal
IllegalArgumentException
-如果指定的格式是无效的,无效的,或一个OID的名称映射到正确指定的关键词
null
oidMap
NullPointerException
public byte[] getEncoded()
X500Principal(byte[] name)
请注意,返回的字节数组被克隆,以防止后续的修改。
提供的文件。public String toString()
X500Principal
友好的字符串表示形式。
public boolean equals(Object o)
Object
这个
X500Principal
平等的比较。
具体而言,该方法返回true
如果Object
O是一个X500Principal
如果各自典型的字符串表示形式(通过getName(X500Principal.CANONICAL)
方法获得)这个对象和O是平等的。
这个实现是符合RFC 3280的要求。
public int hashCode()
X500Principal
哈希代码。
哈希码的计算通过:getName(X500Principal.CANONICAL).hashCode()
hashCode
接口
Principal
hashCode
方法重写,继承类
Object
X500Principal
哈希代码
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.