模块  java.base

Class X500Principal

    • 字段汇总

      字段  
      变量和类型 字段 描述
      static String CANONICAL
      专有名称的Canonical String格式。
      static String RFC1779
      RFC 1779专有名称的字符串格式。
      static String RFC2253
      RFC 2253可分辨名称的字符串格式。
    • 构造方法摘要

      构造方法  
      构造器 描述
      X500Principal​(byte[] name)
      从ASN.1 DER编码形式的可分辨名称创建 X500Principal
      X500Principal​(InputStream is)
      InputStream创建 X500PrincipalInputStream包含ASN.1 DER编码形式的可分辨名称。
      X500Principal​(String name)
      从X.500可分辨名称的字符串表示形式创建 X500Principal (例如:“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US”)。
      X500Principal​(String name, Map<String,​String> keywordMap)
      从X.500可分辨名称的字符串表示形式创建 X500Principal (例如:“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US”)。
    • 字段详细信息

      • RFC1779

        public static final String RFC1779
        RFC 1779专有名称的字符串格式。
        另请参见:
        常数字段值
      • RFC2253

        public static final String RFC2253
        RFC 2253可分辨名称的字符串格式。
        另请参见:
        常数字段值
      • CANONICAL

        public static final String CANONICAL
        专有名称的Canonical String格式。
        另请参见:
        常数字段值
    • 构造方法详细信息

      • X500Principal

        public X500Principal​(String name)
        从X.500可分辨名称的字符串表示形式创建X500Principal (例如:“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US”)。 必须使用RFC 1779或RFC 2253中定义的语法指定专有名称(格式是可接受的)。

        此构造函数识别RFC 1779和RFC 2253(并在getName(String format)列出)中定义的属性类型关键字,以及其对象标识符(OID)的T,DNQ或DNQUALIFIER,SURNAME,GIVENNAME,INITIALS,GENERATION,EMAILADDRESS和SERIALNUMBER关键字在RFC 5280中定义。必须将任何其他属性类型指定为OID。

        此实现强制执行比RFC 1779和2253中定义的更严格的OID语法。它使用RFC 4512中定义的更正确的语法,该语法指定OID包含至少2个数字:

        numericoid = number 1*( DOT number )

        参数
        name - RFC 1779或RFC 2253格式的X.500可分辨名称
        异常
        NullPointerException - 如果 namenull
        IllegalArgumentException - 如果 name正确指定 name
      • X500Principal

        public X500Principal​(String name,
                             Map<String,​String> keywordMap)
        从X.500可分辨名称的字符串表示形式创建X500Principal (例如:“CN = Duke,OU = JavaSoft,O = Sun Microsystems,C = US”)。 必须使用RFC 1779或RFC 2253中定义的语法指定专有名称(格式是可接受的)。

        此构造函数识别X500Principal(String)指定的属性类型关键字,并且还识别在keywordMap参数中具有条目的其他关键字。 在关键词的条目keywordMap优先于识别的默认关键字X500Principal(String) 关键字必须以所有大写形式指定,否则将被忽略。 忽略不正确指定的关键字; 但是,如果名称中的关键字映射到未正确指定的对象标识符(OID),则抛出IllegalArgumentException 允许有2个不同的关键字映射到相同的OID。

        此实现强制执行比RFC 1779和2253中定义的更严格的OID语法。它使用RFC 4512中定义的更正确的语法,该语法指定OID包含至少2个数字:

        numericoid = number 1*( DOT number )

        参数
        name - RFC 1779或RFC 2253格式的X.500可分辨名称
        keywordMap - 属性类型关键字映射,其中每个键是关键字String,以String形式映射到相应的对象标识符(由句点分隔的非负整数序列)。 地图可能是空的,但从不null
        异常
        NullPointerException - 如果 namekeywordMapnull
        IllegalArgumentException -如果 name不当指定或关键字 name映射到OID不在正确的形式
        从以下版本开始:
        1.6
      • 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)
        InputStream创建X500PrincipalInputStream包含ASN.1 DER编码形式的可分辨名称。 此结构的ASN.1表示法在X500Principal(byte[] name)的文档中提供。

        输入流的读取位置位于编码的专有名称之后的下一个可用字节。

        参数
        is - 包含ASN.1 DER编码形式的可分辨名称的 InputStream
        异常
        NullPointerException - 如果 InputStreamnull
        IllegalArgumentException - 如果发生编码错误(DN格式不正确)
    • 方法详细信息

      • getName

        public String getName()
        使用RFC 2253中定义的格式返回X.500可分辨名称的字符串表示形式。

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

        Specified by:
        getName在接口 Principal
        结果
        这个 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字符串表示。 此方法返回的字符串是通过解码此UTF-8表示形式获得的Unicode字符串。

        如果将“CANONICAL”指定为格式,则此方法返回符合RFC 2253的字符串表示形式,并带有以下附加规范化:

        1. 从编码为点分十进制OID的属性类型中删除前导零
        2. PrintableString和UTF8String类型的DirectoryString属性值不以十六进制格式输出
        3. PrintableString和UTF8String以外类型的DirectoryString属性值以十六进制格式输出
        4. 从非十六进制属性值中删除前导和尾随空白字符(除非该值完全由空格字符组成)
        5. 一个或多个空格字符的内部子字符串在非十六进制属性值中转换为单个空格
        6. 包含多个属性值断言(AVA)的相对可分辨名称按以下顺序输出:包含标准关键字的AVA的字母顺序,后跟包含OID关键字的AVA的数字排序。
        7. 转义的属性值中唯一的字符是RFC 2253状态的第2.4节必须转义的字符(它们使用前面的反斜杠字符进行转义)
        8. 使用String.toUpperCase(Locale.US)将整个名称转换为大写
        9. 使用String.toLowerCase(Locale.US)将整个名称转换为小写
        10. 最终使用规范化形式KD对名称进行规范化,如Unicode标准和UAX#15中所述

        将来可能会引入其他标准格式。

        参数
        format - 要使用的格式
        结果
        使用指定格式的此 X500Principal的字符串表示形式
        异常
        IllegalArgumentException - 如果指定的格式无效或为null
      • getName

        public String getName​(String format,
                              Map<String,​String> oidMap)
        使用指定的格式返回X.500可分辨名称的字符串表示形式。 格式的有效值为“RFC1779”和“RFC2253”(不区分大小写)。 不允许使用“CANONICAL”,并且会抛出IllegalArgumentException

        此方法以getName(String)指定的格式返回字符串,并为具有oidMap参数中的条目的OID发出其他属性类型关键字。 在OID条目oidMap优先认可默认的OID getName(String) 忽略不正确指定的OID; 但是,如果名称中的OID映射到不正确指定的关键字,则抛出IllegalArgumentException

        将来可能会引入其他标准格式。

        警告:其他实现可能无法识别其他属性类型关键字; 因此,如果您不确定其他实现是否可以识别这些关键字,请不要使用此方法。

        参数
        format - 要使用的格式
        oidMap - 一个OID映射,其中每个键是String形式的对象标识符(由句点分隔的非负整数序列),映射到对应的属性类型关键字String。 地图可能是空的,但从不null
        结果
        使用指定格式的此 X500Principal的字符串表示形式
        异常
        IllegalArgumentException - 如果指定的格式无效,null或名称中的OID映射到未正确指定的关键字
        NullPointerException - 如果 oidMapnull
        从以下版本开始:
        1.6
      • getEncoded

        public byte[] getEncoded()
        以ASN.1 DER编码形式返回可分辨名称。 该结构的ASN.1表示法在X500Principal(byte[] name)的文档中提供。

        请注意,克隆返回的字节数组以防止后续修改。

        结果
        包含ASN.1 DER编码形式的可分辨名称的字节数组
      • toString

        public String toString()
        返回此 X500Principal的用户友好字符串表示 X500Principal
        Specified by:
        toString接口 Principal
        重写:
        toString在类 Object
        结果
        X500Principal的字符串表示 X500Principal
      • equals

        public boolean equals​(Object o)
        比较指定的Object与此X500Principal是否相等。

        具体而言,如果Object oX500Principal并且此对象的相应规范字符串表示(通过getName(X500Principal.CANONICAL)方法获得)和o相等,则此方法返回true

        此实现符合RFC 5280的要求。

        Specified by:
        equals接口 Principal
        重写:
        equals在类 Object
        参数
        o - 要与此 X500Principal进行相等性比较的对象
        结果
        true如果指定的 Object等于此 X500Principalfalse
        另请参见:
        Object.hashCode()HashMap