java.lang.Objectjavax.security.auth.x500.X500Principal
public final class X500Principal
此类表示一个 X.500 Principal
。X500Principal
由标识名(例如,"CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US")表示。
可以通过使用标识名的字符串表示形式或通过使用标识名的 ASN.1 DER 编码的字节表示形式对此类进行实例化。RFC 2253 中定义了标识名的字符串表示形式的当前规范。但是此类接受 RFC 2253 和 RFC 1779 的字符串格式,也识别属性类别关键字,该关键字的 OID(对象标识符)是在 RFC 2459 中定义的。
此 X500Principal
的字符串表示形式可以通过调用 getName
方法获得。
注意,X509Certificate
的 getSubjectX500Principal
和 getIssuerX500Principal
方法返回表示证书的发行者和主体字段的 X500Principals。
X509Certificate
,
序列化表格
字段摘要 | |
---|---|
static String |
CANONICAL 标识名的规范化字符串格式。 |
static String |
RFC1779 标识名的 RFC 1779 字符串格式。 |
static String |
RFC2253 标识名的 RFC 2253 字符串格式。 |
构造方法摘要 | |
---|---|
X500Principal(byte[] name) 根据 ASN.1 DER 编码格式的标识名创建 X500Principal 。 |
|
X500Principal(InputStream is) 根据包含 ASN.1 DER 编码格式的标识名的 InputStream 创建 X500Principal 。 |
|
X500Principal(String name) 根据 X.500 标识名(例:"CN=Duke、 OU=JavaSoft、 O=Sun Microsystems、 C=US")的字符串表示形式创建 X500Principal 。 |
|
X500Principal(String name, Map<String,String> keywordMap) 根据 X.500 标识名(例:“CN=Duke、OU=JavaSoft、O=Sun Microsystems、C=US”)的字符串表示形式创建 X500Principal 。 |
方法摘要 | |
---|---|
boolean |
equals(Object o) 比较指定的 Object 与此 X500Principal 的相等性。 |
byte[] |
getEncoded() 返回 ASN.1 DER 编码形式的标识名。 |
String |
getName() 返回使用 RFC 2253 中所定义格式的 X.500 标识名的字符串表示形式。 |
String |
getName(String format) 返回使用指定格式的 X.500 标识名的字符串表示形式。 |
String |
getName(String format, Map<String,String> oidMap) 返回使用指定格式的 X.500 标识名的字符串表示形式。 |
int |
hashCode() 返回此 X500Principal 的哈希码。 |
String |
toString() 返回此 X500Principal 的用户友好的字符串表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
public static final String RFC1779
public static final String RFC2253
public static final String CANONICAL
构造方法详细信息 |
---|
public X500Principal(String name)
X500Principal
。 标识名必须使用 RFC 1779 或 RFC 2253(任何一种格式都是可接受的)中定义的语法指定。
此构造方法识别在 RFC 1779 和 RFC 2253(列出在 getName(String format)
中)中定义的属性类别关键字,以及 T、DNQ 或 DNQUALIFIER、SURNAME、GIVENNAME、INITIALS、GENERATION、EMAILADDRESS 和 SERIALNUMBER 关键字(它们的 OID 定义在 RFC 2459 及其后续文档中)。其他任何属性类型都必须指定为 OID。
name
- RFC 1779 或 RFC 2253 格式的 X.500 标识名
NullPointerException
- 如果
name
为
null
IllegalArgumentException
- 如果错误地指定了
name
public X500Principal(String name, Map<String,String> keywordMap)
X500Principal
。 标识名必须使用 RFC 1779 或 RFC 2253(任何一种格式都是可接受的)中定义的语法指定。
此构造方法识别 X500Principal(String)
中指定的属性类型关键字,也识别在 keywordMap
参数列出的其他关键字。keywordMap 中的关键字项优先于 X500Principal(String)
所识别的默认关键字。关键字必须全部用大写指定,否则它们将被忽略。忽略错误地指定的关键字;但是,如果该名称中的关键字映射到错误地指定的 OID,则抛出 IllegalArgumentException
。允许两个不同的关键字映射到同一个 OID。
name
- RFC 1779 或 RFC 2253 格式的 X.500 标识名
keywordMap
- 属性类型关键字映射,其中每个关键字是一个映射到 String 形式的相应对象标识符的关键字 String(由句点分隔的非负整数序列)。映射可以为空但不能为
null
。
NullPointerException
- 如果
name
或
keywordMap
为
null
IllegalArgumentException
- 如果错误地指定了
name
或者
name
中的关键字映射到没有以正确形式存在的 OID
public X500Principal(byte[] name)
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)) }
name
- 包含 ASN.1 DER 编码格式的标识名的字节数组
IllegalArgumentException
- 如果出现编码错误(不正确的 DN 格式)
public X500Principal(InputStream is)
InputStream
创建
X500Principal
。
X500Principal(byte[] name)
的文档中提供了此结构的 ASN.1 表示法。
输入流的读取位置位于已编码标识名后的下一个可用字节处。
is
- 包含 ASN.1 DER 编码格式的标识名的
InputStream
NullPointerException
- 如果
InputStream
为
null
IllegalArgumentException
- 如果出现编码错误(不正确的 DN 格式)
方法详细信息 |
---|
public String getName()
此方法等效于调用 getName(X500Principal.RFC2253)
。
X500Principal
的标识名
public String getName(String format)
如果将格式指定为 "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 字符串表示形式。此方法返回的 String 是通过解码此 UTF-8 表示形式得到的 Unicode 字符串。
如果将格式指定为 "CANONICAL",则此方法返回遵循 RFC 2253 的字符串表示形式,该表示形式具有如下的附加规范要求:
String.toUpperCase(Locale.US)
将整个名称转换为大写的。 String.toLowerCase(Locale.US)
将整个名称转换为小写的。 其他标准格式可能在以后引入。
format
- 要使用的格式
X500Principal
的字符串表示形式
IllegalArgumentException
- 如果指定格式无效或者为 null
public String getName(String format, Map<String,String> oidMap)
IllegalArgumentException
。
此方法返回使用 getName(String)
中指定格式的 String,并发出 oidMap
中列出的 OID 的其他属性类型关键字。oidMap 中的 OID 项优先于 getName(String)
所识别的默认 OID。忽略错误地指定的 OID;但是,如果该名称中的 OID 映射到错误地指定的关键字,则抛出 IllegalArgumentException
。
其他标准格式可能在以后引入。
警告:其他实现可能无法识别其他属性类型关键字;因此,如果不确定其他实现是否识别这些关键字,请不要使用此方法。
format
- 要使用的格式
oidMap
- OID 映射,其中每个关键字是一个 String 形式的对象标识符(由句点分隔的非负整数序列),它映射到相应的属性类型关键字 String。映射可以为空但不能为
null
。
X500Principal
的字符串表示形式
IllegalArgumentException
- 如果指定格式无效、为 null 或者名称的 OID 映射到错误地指定的关键字
NullPointerException
- 如果
oidMap
为
null
public byte[] getEncoded()
X500Principal(byte[] name)
的文档中提供了此结构的 ASN.1 表示法。
注意,返回的字节数组被复制,以防止后续修改。
public String toString()
X500Principal
的用户友好的字符串表示形式。
X500Principal
的字符串表示形式
public boolean equals(Object o)
Object
与此
X500Principal
的相等性。
需要特别说明的是,如果 Object
o 是一个 X500Principal
,并且此对象和 o 二者的规范字符串表示形式(通过 getName(X500Principal.CANONICAL)
方法获得)是相等的,此方法返回 true
。
此实现与 RFC 2459 的要求是兼容的。
o
- 将与此
X500Principal
进行相等性比较的对象。
Object
等于此
X500Principal
,则返回
true
;否则返回
false
。
Object.hashCode()
,
Hashtable
public int hashCode()