|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.security.auth.x500
类 X500Principal
java.lang.Object javax.security.auth.x500.X500Principal
- 所有已实现的接口:
- Serializable, Principal
-
public final class X500Principal
- extends Object
- implements Principal, Serializable
此类表示一个 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。
- 从以下版本开始:
- 1.4
- 另请参见:
-
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 。 |
方法摘要 | |
---|---|
boolean |
equals(Object o) 比较指定的 Object 与此 X500Principal 的相等性。 |
byte[] |
getEncoded() 返回 ASN.1 DER 编码形式的标识名。 |
String |
getName() 返回使用 RFC 2253 中所定义格式的 X.500 标识名的字符串表示形式。 |
String |
getName(String format) 返回使用指定格式的 X.500 标识名的字符串表示形式。 |
int |
hashCode() 返回此 X500Principal 的哈希码。 |
String |
toString() 返回此 X500Principal 的用户友好的字符串表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
RFC1779
public static final String RFC1779
-
标识名的 RFC 1779 字符串格式。
- 另请参见:
- 常量字段值
RFC2253
public static final String RFC2253
-
标识名的 RFC 2253 字符串格式。
- 另请参见:
- 常量字段值
CANONICAL
public static final String CANONICAL
-
标识名的规范化字符串格式。
- 另请参见:
- 常量字段值
构造方法详细信息 |
---|
X500Principal
public 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)
中)中定义的属性类别关键字,以及 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
X500Principal
public 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)) }
- 参数:
-
name
- 包含 ASN.1 DER 编码格式的标识名的字节数组 - 抛出:
-
IllegalArgumentException
- 如果出现编码错误(不正确的 DN 格式)
X500Principal
public X500Principal(InputStream is)
-
根据包含 ASN.1 DER 编码格式的标识名的
InputStream
创建X500Principal
。X500Principal(byte[] name)
的文档中提供了此结构的 ASN.1 表示法。输入流的读取位置位于已编码标识名后的下一个可用字节处。
- 参数:
-
is
- 包含 ASN.1 DER 编码格式的标识名的InputStream
- 抛出:
-
NullPointerException
- 如果InputStream
为null
-
IllegalArgumentException
- 如果出现编码错误(不正确的 DN 格式)
方法详细信息 |
---|
getName
public String getName()
-
返回使用 RFC 2253 中所定义格式的 X.500 标识名的字符串表示形式。
此方法等效于调用
getName(X500Principal.RFC2253)
。 -
- 返回:
-
此
X500Principal
的标识名
getName
public String getName(String format)
-
返回使用指定格式的 X.500 标识名的字符串表示形式。该格式的有效值是 "RFC1779"、"RFC2253" 和 "CANONICAL"(不区分大小写)。
如果将格式指定为 "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 的字符串表示形式,该表示形式具有如下的附加规范要求:
- 从编码为点号分隔的十进制 OID 的属性类型中移除前导零。
- 类型 PrintableString 和 UTF8String 的 DirectoryString 属性值不是以十六进制形式输出的
- 除了类型 PrintableString 和 UTF8String 以外的其他类型的 DirectoryString 属性值是以十六进制形式输出的
- 从非十六进制属性值(除非该值完全由空白字符组成)中移除前导和尾部空白字符
- 一个或多个空白字符的内部子字符串被转换成非十六进制属性值中的单个空格。
- 包括一个以上的 Attribute Value Assertion (AVA) 的相对标识名是按如下顺序输出的:包含标准关键字的 AVA 的字母排序,后跟包含 OID 关键字的 AVA 的数字排序
- 属性值中的唯一被转义字符是 RFC 2253 的 2.4 小节中声明必须被转义的那些字符(使用正斜杠字符将它们转义)。
- 可以使用
String.toUpperCase(Locale.US)
将整个名称转换为大写的。 - 可以使用
String.toLowerCase(Locale.US)
将整个名称转换为小写的。 - 最后使用标准化形式 KD 将名称标准化,Unicode Standard 和 UAX #15 中描述了该形式
其他标准格式可能在以后引入。
-
-
- 参数:
-
format
- 要使用的格式 - 返回:
-
使用特定格式的此
X500Principal
的字符串表示形式 - 抛出:
-
IllegalArgumentException
- 如果指定格式无效
getEncoded
public byte[] getEncoded()
-
返回 ASN.1 DER 编码形式的标识名。
X500Principal(byte[] name)
的文档中提供了此结构的 ASN.1 表示法。注意,返回的字节数组被复制,以防止后续修改。
-
-
- 返回:
- 包含 ASN.1 DER 编码格式的标识名的字节数组