- 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
メソッドを呼び出すことで取得できます。X509Certificate
のgetSubjectX500Principal
メソッドとgetIssuerX500Principal
メソッドは、証明書の発行者とサブジェクトのフィールドを表すX500Principalsを返します。- 導入されたバージョン:
- 1.4
- 関連項目:
X509Certificate
, 直列化された形式
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 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
の、ユーザーが使いやすい文字列表現を返します。
-
-
-
コンストラクタの詳細
-
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
-name
がnull
である場合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
またはkeywordMap
がnull
の場合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
-InputStream
がnull
である場合IllegalArgumentException
- エンコーディング・エラーが発生した場合(DNの不正な形式)
-
-
メソッドの詳細
-
getName
public String getName()
RFC 2253で定義された形式で、X.500識別名の文字列形式を返します。このメソッドは、
getName(X500Principal.RFC2253)
を呼び出すのと同等です。
-
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に適合し、次のように正規化された文字列表現を返します。
- 先頭の0は、ドット区切りの10進OIDとしてエンコードされた属性の型から取り除かれる。
- PrintableString型およびUTF8String型のDirectoryString属性値は、16進数形式では出力されない。
- PrintableStringおよびUTF8String以外の型のDirectoryString属性値は、16進数形式で出力される。
- 前後の空白文字が、16進数以外の属性値から取り除かれる(値が空白文字を含めて構成されている場合以外)。
- 1つ以上の空白文字からなる内部の部分文字列は、16進数以外の属性値では1つの空白文字に変換される。
- 複数のAttribute Value Assertion (AVA)を含むRelative Distinguished Nameは、標準キーワードを含むAVAのアルファベット順、そしてOIDキーワードを含むAVAの数字順に出力される。
- エスケープされる属性値の文字は、RFC 2253のセクション2.4でエスケープされると記述されている文字だけである(バックスラッシュ文字を前に付けることでエスケープされる)。
- 名前全体は
String.toUpperCase(Locale.US)
を使用して大文字に変換される。 - 名前全体は
String.toLowerCase(Locale.US)
を使用して小文字に変換される。 - 名前は、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
-oidMap
がnull
である場合- 導入されたバージョン:
- 1.6
-
getEncoded
public byte[] getEncoded()
ASN.1 DERエンコード形式の識別名を返します。 この構造体のASN.1表記については、X500Principal(byte[] name)
のドキュメントを参照してください。以降の変更から保護するために、返されるバイト配列の複製が作成されます。
- 戻り値:
- ASN.1 DERエンコード形式の識別名を含むバイト配列
-
toString
public String toString()
このX500Principal
の、ユーザーが使いやすい文字列表現を返します。
-
equals
public boolean equals(Object o)
指定されたObject
をこのX500Principal
と比較して等しいかどうかを調べます。特に、
Object
oがX500Principal
であり、このオブジェクトとoの正規の文字列表現(getName(X500Principal.CANONICAL)
メソッドで取得)が等しい場合に、このメソッドはtrue
を返します。この実装は、RFC 5280の要件に準拠しています。
-
hashCode
public int hashCode()
X500Principal
のハッシュ・コードを返します。ハッシュ・コードは
getName(X500Principal.CANONICAL).hashCode()
によって計算されます。- 定義:
hashCode
、インタフェース:Principal
- オーバーライド:
hashCode
、クラス:Object
- 戻り値:
- この
X500Principal
のハッシュ・コード - 関連項目:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-