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 3280: Internet X.509 Public Key Infrastructure Certificate and CRL ProfileでOID (Object Identifier)が定義されている属性の型キーワードも認識します。
このX500Principal
の文字列表現は、getName
メソッドを呼び出すことで取得できます。
X509Certificate
のgetSubjectX500Principal
メソッドとgetIssuerX500Principal
メソッドは、証明書の発行者とサブジェクトのフィールドを表すX500Principalsを返します。
X509Certificate
, 直列化された形式修飾子と型 | フィールドと説明 |
---|---|
static String |
CANONICAL
Distinguished Nameの正規のString形式です。
|
static String |
RFC1779
Distinguished NameのRFC 1779 String形式です。
|
static String |
RFC2253
Distinguished NameのRFC 2253 String形式です。
|
コンストラクタと説明 |
---|
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 の、ユーザーが使いやすい文字列表現を返します。 |
public X500Principal(String name)
X500Principal
を作成します。識別名はRFC 1779かRFC 2253 (どちらも可)で定義された文法を使用して指定する必要があります。
このコンストラクタは、RFC 1779とRFC 2253で定義された属性の型キーワード(リストはgetName(String format)
で取得可能)を認識するだけでなく、RFC 3280およびその後継RFCでオブジェクト識別子(OID)が定義されている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
の指定が正しくない場合public X500Principal(String name, Map<String,String> keywordMap)
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が正しい形式でない場合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
を作成します。この構造体のASN.1表記については、X500Principal(byte[] name)
のドキュメントを参照してください。
入力ストリームの読込み位置は、エンコードした識別名のあとに来る、次の利用可能なバイトになります。
is
- ASN.1 DERエンコード形式の識別名を含むInputStream
NullPointerException
- InputStream
がnull
である場合IllegalArgumentException
- エンコーディング・エラーが発生した場合(DNの不正な形式)public String getName()
このメソッドは、getName(X500Principal.RFC2253)
を呼び出すのと同等です。
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)を発行します。そのほかの属性の型は、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のその他の属性の型キーワードを発行します。getName(String)
が認識するデフォルトのOIDより、oidMap内のOIDエントリのほうが優先されます。正しく指定されていないOIDは無視されるだけですが、名前に含まれるOIDに対応するキーワードが正しく指定されていない場合は、IllegalArgumentException
がスローされます。
将来、標準形式が追加導入される可能性があります。
警告: その他の属性の型キーワードは、その他の実装によって認識されない可能性があります。これらのキーワードがその他の実装によって認識されるかどうか不明な場合は、このメソッドを使用しないでください。
format
- 使用する形式oidMap
- OIDマップ。各鍵は、対応する属性の型キーワードStringにマップされる、String形式(ピリオドで区切られたゼロ以上の整数の並び)で表されたオブジェクト識別子。マップは空であってもよいが、null
は不可。X500Principal
の文字列表現IllegalArgumentException
- 指定された形式が無効であるか、nullであるか、名前に含まれるOIDが不正なキーワードに対応している場合NullPointerException
- oidMap
がnull
である場合public byte[] getEncoded()
X500Principal(byte[] name)
のドキュメントを参照してください。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
public String toString()
X500Principal
の、ユーザーが使いやすい文字列表現を返します。public boolean equals(Object o)
Object
をこのX500Principal
と比較して等しいかどうかを調べます。
特に、Object
oがX500Principal
であり、このオブジェクトとoの正規の文字列表現(getName(X500Principal.CANONICAL)
メソッドで取得)が等しい場合に、このメソッドはtrue
を返します。
この実装は、RFC 3280の要件に準拠しています。
public int hashCode()
X500Principal
のハッシュ・コードを返します。
ハッシュ・コードはgetName(X500Principal.CANONICAL).hashCode()
によって計算されます。
hashCode
、インタフェース: Principal
hashCode
、クラス: Object
X500Principal
のハッシュ・コードObject.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.