モジュール java.base
パッケージ 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: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Namesで定義されています。 ただし、このクラスでは、RFC 2253とRFC 1779: A String Representation of Distinguished Namesの両方に記述された文字列形式も使用可能であり、また、RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL ProfileでOID (Object Identifier)が定義されている属性の型キーワードも認識します。

このX500Principalの文字列表現は、getNameメソッドを呼び出すことで取得できます。

X509CertificategetSubjectX500PrincipalメソッドとgetIssuerX500Principalメソッドは、証明書の発行者とサブジェクトのフィールドを表すX500Principalsを返します。

導入されたバージョン:
1.4
関連項目:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final String
    Distinguished Nameの正規のString形式です。
    static final String
    Distinguished NameのRFC 1779 String形式です。
    static final String
    Distinguished NameのRFC 2253 String形式です。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    X500Principal(byte[] name)
    ASN.1 DERエンコード形式の識別名からX500Principalを作成します。
    ASN.1 DERエンコード形式の識別名を含むInputStreamからX500Principalを作成します。
    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
    指定されたObjectをこのX500Principalと比較して等しいかどうかを調べます。
    byte[]
    ASN.1 DERエンコード形式の識別名を返します。
    RFC 2253で定義された形式で、X.500識別名の文字列形式を返します。
    getName(String format)
    指定した形式でX.500識別名の文字列形式を返します。
    getName(String format, Map<String,String> oidMap)
    指定した形式でX.500識別名の文字列形式を返します。
    int
    X500Principalのハッシュ・コードを返します。
    このX500Principalの、ユーザーが使いやすい文字列表現を返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    インタフェース java.security.Principalで宣言されたメソッド

    implies
  • フィールド詳細

  • コンストラクタの詳細

    • 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)にリストされています)で定義されている属性型キーワードと、オブジェクト識別子(OID)がRFC 5280で定義されているT、DNQまたはDNQUALIFIER、SURNAME、GIVENNAME、INITIALS、GENERATION、EMAILADDRESS、およびSERIALNUMBERキーワードを認識します。 そのほかの属性の型は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の指定が正しくない場合
    • X500Principal

      public X500Principal(String name, Map<String,String> keywordMap)
      X.500識別名(例: CN=Duke、OU=JavaSoft、O=Sun Microsystems、C=US)の文字列表現からX500Principalを作成します。 識別名はRFC 1779かRFC 2253 (どちらも可)で定義された文法を使用して指定する必要があります。

      このコンストラクタは、X500Principal(String)に指定された属性の型キーワードと、keywordMapパラメータ内にエントリを持つその他のキーワードを認識します。 X500Principal(String)によって認識されるデフォルトのキーワードより、keywordMap内のキーワード・エントリのほうが優先されます。 キーワードはすべて大文字で指定してください。大文字で指定しなかった場合、そのキーワードは無視されます。 正しく指定されていないキーワードは無視されますが、名前に含まれるキーワードが、正しく指定されていないオブジェクト識別子(OID)にマップされている場合は、IllegalArgumentExceptionがスローされます。 単一のOIDに、最大2つの異なったキーワードをマップできます。

      この実装では、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 - nameまたはkeywordMapnullの場合
      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)
      ASN.1 DERエンコード形式の識別名を含むInputStreamからX500Principalを作成します。 この構造体の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)を呼び出すのと同等です。

      定義:
      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)を発行します。 そのほかの属性の型は、OIDとして発行されます。 厳密に解釈すると、RFC 2253では、UTF-8文字列表現だけを指定できます。 このメソッドが返すStringは、このUTF-8表現をデコードすることで得られるUnicode文字列になります。

      形式に"CANONICAL"を指定した場合、このメソッドはRFC 2253に適合し、次のように正規化された文字列表現を返します。

      1. 先頭の0は、ドット区切りの10進OIDとしてエンコードされた属性の型から取り除かれる。
      2. PrintableString型およびUTF8String型のDirectoryString属性値は、16進数形式では出力されない。
      3. PrintableStringおよびUTF8String以外の型のDirectoryString属性値は、16進数形式で出力される。
      4. 前後の空白文字が、16進数以外の属性値から取り除かれる(値が空白文字を含めて構成されている場合以外)。
      5. 1つ以上の空白文字からなる内部の部分文字列は、16進数以外の属性値では1つの空白文字に変換される。
      6. 複数のAttribute Value Assertion (AVA)を含むRelative Distinguished Nameは、標準キーワードを含むAVAのアルファベット順、そしてOIDキーワードを含むAVAの数字順に出力される。
      7. エスケープされる属性値の文字は、RFC 2253のセクション2.4でエスケープされると記述されている文字だけである(バックスラッシュ文字を前に付けることでエスケープされる)。
      8. 名前全体はString.toUpperCase(Locale.US)を使用して大文字に変換される。
      9. 名前全体はString.toLowerCase(Locale.US)を使用して小文字に変換される。
      10. 名前は、Unicode StandardとUAX#15に記述されている正規化形式KDを使用して、最終的に正規化される。

      将来、標準形式が追加導入される可能性があります。

      パラメータ:
      format - 使用する形式
      戻り値:
      指定した形式を使用した、このX500Principalの文字列表現
      例外:
      IllegalArgumentException - 指定された形式が無効であるか、nullの場合
    • getName

      public String getName(String format, Map<String,String> oidMap)
      指定した形式でX.500識別名の文字列形式を返します。 形式に指定する有効な値は「RFC1779」と「RFC2253」(大文字と小文字を区別しない)です。 「CANONICAL」は許可されていません。この値を指定した場合、IllegalArgumentExceptionがスローされます。

      このメソッドは、getName(String)に指定された形式でStringを返します。また、oidMapパラメータ内にエントリがあるOIDのその他の属性の型キーワードを発行します。 getName(String)が認識するデフォルトのOIDより、oidMap内のOIDエントリのほうが優先されます。 正しく指定されていない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の、ユーザーが使いやすい文字列表現を返します。
      定義:
      toString、インタフェースPrincipal
      オーバーライド:
      toString、クラスObject
      戻り値:
      このX500Principalの文字列表現
    • equals

      public boolean equals(Object o)
      指定されたObjectをこのX500Principalと比較して等しいかどうかを調べます。

      特に、Object oX500Principalであり、このオブジェクトとoの正規の文字列表現(getName(X500Principal.CANONICAL)メソッドで取得)が等しい場合に、このメソッドはtrueを返します。

      この実装は、RFC 5280の要件に準拠しています。

      定義:
      equals、インタフェースPrincipal
      オーバーライド:
      equals、クラスObject
      パラメータ:
      o - このX500Principalと等しいかどうかを比較するオブジェクト
      戻り値:
      指定されたObjectがこのX500Principalと等しい場合はtrue、それ以外の場合はfalse
      関連項目:
    • hashCode

      public int hashCode()
      X500Principalのハッシュ・コードを返します。

      ハッシュ・コードはgetName(X500Principal.CANONICAL).hashCode()によって計算されます。

      定義:
      hashCode、インタフェースPrincipal
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      このX500Principalのハッシュ・コード
      関連項目: