JavaTM 2 Platform
Standard Ed. 5.0

java.security.cert
クラス X509CertSelector

java.lang.Object
  上位を拡張 java.security.cert.X509CertSelector
すべての実装されたインタフェース:
Cloneable, CertSelector

public class X509CertSelector
extends Object
implements CertSelector

指定した基準すべてに一致する X509Certificates を選択する CertSelector です。PKIX 準拠の証明書パスを構築するために CertStore から証明書を選択するときに、特に役立ちます。

最初に構築された X509CertSelector には有効な基準が含まれていないため、各 get メソッドはデフォルト値 null を返します (getBasicConstraints メソッドの場合は -1)。したがって、match メソッドは、 X509Certificate に対して true を返します。通常、X509CertSelectorsetIssuersetKeyUsage を呼び出すことでいくつかの基準を有効にしたあと、 CertStore.getCertificates や類似のメソッドに渡されます。

setIssuersetSerialNumber を呼び出すことで複数の基準を有効にできるため、通常 match メソッドは単一の X509Certificate に一意に一致します。ここで「通常」と記述したのは、2 つの発行 CA が同じ識別名を持ち、それぞれが同じシリアル番号で証明書を発行する可能性があるからです。ほかの一意の組み合わせには、発行者基準、被認証者基準、subjectKeyIdentifier 基準、およびsubjectPublicKey 基準が含まれます。

これから説明する X.509 証明書機能拡張の定義については、RFC 2459 を参照してください。

並行アクセス

特に断らないかぎり、このクラスで定義されているメソッドはスレッドセーフではありません。単一のオブジェクトに並行アクセスする必要のある複数スレッドは、スレッド間で同期をとり、必要に応じてロックする必要があります。異なるオブジェクトを操作する複数スレッドでは、同期を取る必要はありません。

導入されたバージョン:
1.4
関連項目:
CertSelector, X509Certificate

コンストラクタの概要
X509CertSelector()
          X509CertSelector を作成します。
 
メソッドの概要
 void addPathToName(int type, byte[] name)
          pathToNames 基準値に名前を追加します。
 void addPathToName(int type, String name)
          pathToNames 基準値に名前を追加します。
 void addSubjectAlternativeName(int type, byte[] name)
          subjectAlternativeNames 基準値に名前を追加します。
 void addSubjectAlternativeName(int type, String name)
          subjectAlternativeNames 基準値に名前を追加します。
 Object clone()
          このオブジェクトの複製を返します。
 byte[] getAuthorityKeyIdentifier()
          authorityKeyIdentifier 基準値を返します。
 int getBasicConstraints()
          基本制約に対する制約を返します。
 X509Certificate getCertificate()
          certificateEquals 基準値を返します。
 Date getCertificateValid()
          certificateValid 基準値を返します。
 Set<String> getExtendedKeyUsage()
          extendedKeyUsage 基準値を返します。
 X500Principal getIssuer()
          発行者の基準値を X500Principal として返します。
 byte[] getIssuerAsBytes()
          発行者の基準値をバイト配列として返します。
 String getIssuerAsString()
          バグ: 代わりに getIssuer() または getIssuerAsBytes() を使用してください。
 boolean[] getKeyUsage()
          keyUsage 基準値を返します。
 boolean getMatchAllSubjectAltNames()
          setSubjectAlternativeNames メソッドまたは addSubjectAlternativeName メソッドで指定された、X509Certificate に含まれる必要がある subjectAlternativeNames の数が、すべてなのか、または少なくとも 1 つなのかを示します。
 byte[] getNameConstraints()
          名前制約の基準値を返します。
 Collection<List<?>> getPathToNames()
          pathToNames 基準値の複製を返します。
 Set<String> getPolicy()
          ポリシー基準値を返します。
 Date getPrivateKeyValid()
          privateKeyValid 基準値を返します。
 BigInteger getSerialNumber()
          serialNumber 基準値を返します。
 X500Principal getSubject()
          被認証者の基準値を X500Principal として返します。
 Collection<List<?>> getSubjectAlternativeNames()
          subjectAlternativeNames 基準値のコピーを返します。
 byte[] getSubjectAsBytes()
          被認証者の基準値をバイト配列として返します。
 String getSubjectAsString()
          バグ: 代わりに getSubject() または getSubjectAsBytes() を使用してください。
 byte[] getSubjectKeyIdentifier()
          subjectKeyIdentifier 基準値を返します。
 PublicKey getSubjectPublicKey()
          subjectPublicKey 基準値を返します。
 String getSubjectPublicKeyAlgID()
          subjectPublicKeyAlgID 基準値を返します。
 boolean match(Certificate cert)
          Certificate が選択されるかどうかを判断します。
 void setAuthorityKeyIdentifier(byte[] authorityKeyID)
          authorityKeyIdentifier 基準値を設定します。
 void setBasicConstraints(int minMaxPathLen)
          基本制約に対する制約を設定します。
 void setCertificate(X509Certificate cert)
          certificateEquals 基準値を設定します。
 void setCertificateValid(Date certValid)
          certificateValid 基準値を設定します。
 void setExtendedKeyUsage(Set<String> keyPurposeSet)
          extendedKeyUsage 基準値を設定します。
 void setIssuer(byte[] issuerDN)
          発行者の基準値を設定します。
 void setIssuer(String issuerDN)
          バグ 代わりに setIssuer(X500Principal) または setIssuer(byte[]) を使用してください。
 void setIssuer(X500Principal issuer)
          発行者の基準値を設定します。
 void setKeyUsage(boolean[] keyUsage)
          keyUsage 基準値を設定します。
 void setMatchAllSubjectAltNames(boolean matchAllNames)
          setSubjectAlternativeNames メソッドまたは addSubjectAlternativeName メソッドで指定したすべての subjectAlternativeNames の照合を使用可能、または使用不可にします。
 void setNameConstraints(byte[] bytes)
          名前制約の基準値を設定します。
 void setPathToNames(Collection<List<?>> names)
          pathToNames 基準値を設定します。
 void setPolicy(Set<String> certPolicySet)
          ポリシー制約を設定します。
 void setPrivateKeyValid(Date privateKeyValid)
          privateKeyValid 基準値を設定します。
 void setSerialNumber(BigInteger serial)
          serialNumber 基準値を設定します。
 void setSubject(byte[] subjectDN)
          被認証者の基準値を設定します。
 void setSubject(String subjectDN)
          バグ: 代わりに setSubject(X500Principal) または setSubject(byte[]) を使用してください。
 void setSubject(X500Principal subject)
          被認証者の基準値を設定します。
 void setSubjectAlternativeNames(Collection<List<?>> names)
          subjectAlternativeNames 基準値を設定します。
 void setSubjectKeyIdentifier(byte[] subjectKeyID)
          subjectKeyIdentifier 基準値を設定します。
 void setSubjectPublicKey(byte[] key)
          subjectPublicKey 基準値を設定します。
 void setSubjectPublicKey(PublicKey key)
          subjectPublicKey 基準値を設定します。
 void setSubjectPublicKeyAlgID(String oid)
          subjectPublicKeyAlgID 基準値を設定します。
 String toString()
          CertSelector のプリント可能表現を返します。
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

X509CertSelector

public X509CertSelector()
X509CertSelector を作成します。最初は条件が設定されていないため、どの X509Certificate でも一致します。

メソッドの詳細

setCertificate

public void setCertificate(X509Certificate cert)
certificateEquals 基準値を設定します。指定した X509Certificate は、match メソッドに渡された X509Certificate と同じでなければいけません。null の場合、このチェックは行われません。

このメソッドは、単一の証明書と一致させる必要があるときに特に役立ちます。 この certificateEquals 基準に加えてほかの基準を指定することも可能ですが、通常の場合そうすることは必要ないか、または実用的ではありません。

パラメータ:
cert - 一致させる X509Certificate。または null
関連項目:
getCertificate()

setSerialNumber

public void setSerialNumber(BigInteger serial)
serialNumber 基準値を設定します。指定したシリアル番号は、X509Certificate の証明書シリアル番号と一致する必要があります。null の場合、任意の証明書シリアル番号と一致します。

パラメータ:
serial - 一致させる証明書シリアル番号。または null
関連項目:
getSerialNumber()

setIssuer

public void setIssuer(X500Principal issuer)
発行者の基準値を設定します。指定した識別名は、X509Certificate の発行者識別名と一致する必要があります。null の場合、任意の発行者識別名と一致します。

パラメータ:
issuer - X500Principal としての識別名または null
導入されたバージョン:
1.5

setIssuer

public void setIssuer(String issuerDN)
               throws IOException
バグ 代わりに setIssuer(X500Principal) または setIssuer(byte[]) を使用してください。このメソッドの実行結果を信用しないでください。RFC 2253 文字列形式で記述された一部の識別名では、符号化情報の損失により、証明書の一致処理に失敗する可能性があるためです。

発行者の基準値を設定します。指定した識別名は、X509Certificate の発行者識別名と一致する必要があります。null の場合、任意の発行者識別名と一致します。

issuerDNnull でない場合は、RFC 2253 形式で識別名が含まれる必要があります。

パラメータ:
issuerDN - RFC 2253 形式の識別名。または null
例外:
IOException - 構文解析エラーが発生した場合 (DN の不正な形式)

setIssuer

public void setIssuer(byte[] issuerDN)
               throws IOException
発行者の基準値を設定します。指定した識別名は、X509Certificate の発行者識別名と一致する必要があります。null の場合、発行者の基準値は無効になり、任意の発行者識別名と一致します。

issuerDNnull ではない場合、X.501 で定義されている DER 符号化された単一識別名が含まれる必要があります。この構造体の 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)) }
 

以後の変更から保護するために、ここで指定されるバイト配列は複製されています。

パラメータ:
issuerDN - ASN.1 DER 符号化形式による識別名を含むバイト配列。または null
例外:
IOException - 符号化エラーが発生した場合 (DN の不正な形式)

setSubject

public void setSubject(X500Principal subject)
被認証者の基準値を設定します。指定した識別名は、X509Certificate の被認証者識別名と一致する必要があります。null の場合、任意の被認証者識別名と一致します。

パラメータ:
subject - X500Principal としての識別名または null
導入されたバージョン:
1.5

setSubject

public void setSubject(String subjectDN)
                throws IOException
バグ: 代わりに setSubject(X500Principal) または setSubject(byte[]) を使用してください。このメソッドの実行結果を信用しないでください。RFC 2253 文字列形式で記述された一部の識別名では、符号化情報の損失により、証明書の一致処理に失敗する可能性があるためです。

被認証者の基準値を設定します。指定した識別名は、X509Certificate の被認証者識別名と一致する必要があります。null の場合、任意の被認証者識別名と一致します。

subjectDNnull でない場合は、RFC 2253 形式で識別名が含まれる必要があります。

パラメータ:
subjectDN - RFC 2253 形式の識別名。または null
例外:
IOException - 構文解析エラーが発生した場合 (DN の不正な形式)

setSubject

public void setSubject(byte[] subjectDN)
                throws IOException
被認証者の基準値を設定します。指定した識別名は、X509Certificate の被認証者識別名と一致する必要があります。null の場合、任意の被認証者識別名と一致します。

subjectDNnull ではない場合、X.501 で定義されている DER 符号化された単一識別名が含まれる必要があります。この構造体の ASN.1 表記については、setIssuer(byte [] issuerDN) を参照してください。

パラメータ:
subjectDN - ASN.1 DER 形式による識別名を含むバイト配列。または null
例外:
IOException - 符号化エラーが発生した場合 (DN の不正な形式)

setSubjectKeyIdentifier

public void setSubjectKeyIdentifier(byte[] subjectKeyID)
subjectKeyIdentifier 基準値を設定します。X509Certificate には、その内容が指定した基準値と一致するような SubjectKeyIdentifier 機能拡張が含まれている必要があります。基準値が null の場合、subjectKeyIdentifier チェックは行われません。

subjectKeyIDnull ではない場合、SubjectKeyIdentifier 機能拡張の値 (オブジェクト識別子、クリティカルの程度の設定、カプセル化された OCTET STRING は含まれない) の内容に対応する DER 符号化された値が 1 つ含まれる必要があります。この構造体の ASN.1 表記は次のとおりです。


 SubjectKeyIdentifier ::= KeyIdentifier

 KeyIdentifier ::= OCTET STRING
 

被認証者の鍵識別子の形式は標準で定義されていないため、被認証者の鍵識別子は X509CertSelector で構文解析されません。代わりに、バイトごとに比較することで、値が比較されます。

以後の変更から保護するために、ここで提供されるバイト配列は複製されています。

パラメータ:
subjectKeyID - 被認証者の鍵識別子。または null
関連項目:
getSubjectKeyIdentifier()

setAuthorityKeyIdentifier

public void setAuthorityKeyIdentifier(byte[] authorityKeyID)
authorityKeyIdentifier 基準値を設定します。X509Certificate には、その内容が指定した基準値と一致するような AuthorityKeyIdentifier 機能拡張が含まれている必要があります。基準値が null の場合、authorityKeyIdentifier チェックは行われません。

authorityKeyIDnull ではない場合、AuthorityKeyIdentifier 機能拡張の値 (オブジェクト識別子、クリティカルの程度の設定、カプセル化された OCTET STRING は含まれない) の内容に対応する DER 符号化された値が 1 つ含まれる必要があります。この構造体の ASN.1 表記は次のとおりです。


 AuthorityKeyIdentifier ::= SEQUENCE {
    keyIdentifier             [0] KeyIdentifier           OPTIONAL,
    authorityCertIssuer       [1] GeneralNames            OPTIONAL,
    authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL  }

 KeyIdentifier ::= OCTET STRING
 

権限の鍵識別子は X509CertSelector で構文解析されません。代わりに、バイトごとに比較することで、値が比較されます。

AuthorityKeyIdentifierkeyIdentifier フィールドが生成されると、通常、その値は発行者の証明書にある SubjectKeyIdentifier 機能拡張から取得されます。しかし、発行者の証明書での X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object Identifier>) の結果が直接 setAuthorityKeyIdentifier の入力に使用されるとは限りません。これは、SubjectKeyIdentifier に含まれるものが KeyIdentifier の OCTET STRING だけであり、KeyIdentifier、GeneralNames、CertificateSerialNumber の SEQUENCE は含まれないためです。発行者の証明書での SubjectKeyIdentifier 機能拡張の値を使用するには、埋め込まれた KeyIdentifier OCTET STRING の値を抽出してから、DER でこの OCTET STRING を SEQUENCE 内に符号化します。SubjectKeyIdentifier の詳細については、setSubjectKeyIdentifier(byte[] subjectKeyID) を参照してください。

また、以後の変更から保護するために、ここで提供されるバイト配列は複製されています。

パラメータ:
authorityKeyID - 権限の鍵識別子。または null
関連項目:
getAuthorityKeyIdentifier()

setCertificateValid

public void setCertificateValid(Date certValid)
certificateValid 基準値を設定します。指定した日付は、X509Certificate の証明書有効期間内でなければいけません。null の場合、certificateValid のチェックは行われません。

以後の変更から保護するために、ここで提供される Date は複製されています。

パラメータ:
certValid - チェック対象の Date。または null
関連項目:
getCertificateValid()

setPrivateKeyValid

public void setPrivateKeyValid(Date privateKeyValid)
privateKeyValid 基準値を設定します。指定した日付は、X509Certificate の非公開鍵有効期間内でなければいけません。null の場合、privateKeyValid のチェックは行われません。

以後の変更から保護するために、ここで提供される Date は複製されています。

パラメータ:
privateKeyValid - チェック対象の Date。または null
関連項目:
getPrivateKeyValid()

setSubjectPublicKeyAlgID

public void setSubjectPublicKeyAlgID(String oid)
                              throws IOException
subjectPublicKeyAlgID 基準値を設定します。X509Certificate には、指定したアルゴリズムによる被認証者の公開鍵が含まれている必要があります。null の場合、subjectPublicKeyAlgID のチェックは行われません。

パラメータ:
oid - チェック対象のアルゴリズムのオブジェクト識別子 (OID)、または null。OID はピリオドで区切られた負にならない整数の組で表される
例外:
IOException - 最初のコンポーネントが 0、1、2 のどれでもなく、2 番目のコンポーネントが 39 よりも大きいというように、OID が無効の場合
関連項目:
getSubjectPublicKeyAlgID()

setSubjectPublicKey

public void setSubjectPublicKey(PublicKey key)
subjectPublicKey 基準値を設定します。X509Certificate には、指定した被認証者の公開鍵が含まれている必要があります。null の場合、subjectPublicKey のチェックは行われません。

パラメータ:
key - チェック対象の被認証者の公開鍵。または null
関連項目:
getSubjectPublicKey()

setSubjectPublicKey

public void setSubjectPublicKey(byte[] key)
                         throws IOException
subjectPublicKey 基準値を設定します。X509Certificate には、指定した被認証者の公開鍵が含まれている必要があります。null の場合、subjectPublicKey のチェックは行われません。

このメソッドでは公開鍵をバイト配列として指定できるため、不明な鍵タイプに対して使うことができます。

keynull ではない場合、X.509 で定義されている DER 符号化された SubjectPublicKeyInfo 構造体が含まれている必要があります。この構造体の ASN.1 表記は次のとおりです。


 SubjectPublicKeyInfo  ::=  SEQUENCE  {
   algorithm            AlgorithmIdentifier,
   subjectPublicKey     BIT STRING  }

 AlgorithmIdentifier  ::=  SEQUENCE  {
   algorithm               OBJECT IDENTIFIER,
   parameters              ANY DEFINED BY algorithm OPTIONAL  }
                              -- contains a value of the type
                              -- registered for use with the
                              -- algorithm object identifier value
 

以後の変更から保護するために、ここで提供されるバイト配列は複製されています。

パラメータ:
key - ASN.1 DER 形式による被認証者の公開鍵を含むバイト配列。または null
例外:
IOException - 符号化エラーが発生した場合 (被認証者の公開鍵の不正な形式)
関連項目:
getSubjectPublicKey()

setKeyUsage

public void setKeyUsage(boolean[] keyUsage)
keyUsage 基準値を設定します。指定した keyUsage の値が X509Certificate で有効になっている必要があります。null の場合、keyUsage のチェックは行われません。keyUsage 機能拡張のない X509Certificate では、すべての keyUsage の値が暗黙的に有効です。

以後の変更から保護するために、ここで提供される boolean 型配列は複製されています。

パラメータ:
keyUsage - X509Certificate.getKeyUsage() によって返される boolean 型配列と同じ形式の boolean 型配列。または null
関連項目:
getKeyUsage()

setExtendedKeyUsage

public void setExtendedKeyUsage(Set<String> keyPurposeSet)
                         throws IOException
extendedKeyUsage 基準値を設定します。指定した鍵目的が X509Certificate の拡張鍵使用法の機能拡張で有効になっている必要があります。keyPurposeSet が空か null の場合、extendedKeyUsage のチェックは行われません。extendedKeyUsage 機能拡張のない X509Certificate では、すべての鍵目的が暗黙的に有効です。

以後の変更から保護するために、Set は複製されています。

パラメータ:
keyPurposeSet - 文字列形式の鍵目的 OID の Set、または null。各 OID はピリオドで区切られた負にならない整数の組で表される
例外:
IOException - 最初のコンポーネントが 0、1、2 のどれでもなく、2 番目のコンポーネントが 39 よりも大きいというように、OID が無効の場合
関連項目:
getExtendedKeyUsage()

setMatchAllSubjectAltNames

public void setMatchAllSubjectAltNames(boolean matchAllNames)
setSubjectAlternativeNames メソッドまたは addSubjectAlternativeName メソッドで指定したすべての subjectAlternativeNames の照合を使用可能、または使用不可にします。使用可能な場合、指定した被認証者の代替名がすべて X509Certificate に含まれている必要があります。使用不可の場合、指定した被認証者の代替名が少なくとも 1 つ X509Certificate に含まれている必要があります。

デフォルトで matchAllNames フラグは true です。

パラメータ:
matchAllNames - true の場合はフラグを使用可能にし、false の場合は使用不可にする
関連項目:
getMatchAllSubjectAltNames()

setSubjectAlternativeNames

public void setSubjectAlternativeNames(Collection<List<?>> names)
                                throws IOException
subjectAlternativeNames 基準値を設定します。X509Certificate には、subjectAlternativeNames フラグの値に応じて、指定した subjectAlternativeNames のすべて、または少なくとも 1 つが含まれている必要があります (setMatchAllSubjectAltNames を参照)。

このメソッドを使用すると、1 回のメソッド呼び出しで、呼び出し側が subjectAlternativeNames 基準値に対する被認証者の代替名の完全なセットを指定できます。指定した値で subjectAlternativeNames 基準値の前の値が置き換えられます。

null でない names パラメータは、被認証者の代替名基準値に含まれている名前ごとに 1 エントリとなる Collection になります。各エントリは List で、この List の最初のエントリは Integer (名前タイプ、0 〜 8)、2 番目のエントリは String かバイト配列 (それぞれが文字列形式または ASN.1 DER 符号化形式の名前) になります。同じタイプに複数の名前が存在することもあります。この引数の値として null が指定された場合、subjectAlternativeNames のチェックは行われません。

Collection 内の各被認証者の代替名は、String または ASN.1 符号化バイト配列として指定できます。使用される形式の詳細については、addSubjectAlternativeName(int type, String name)addSubjectAlternativeName(int type, byte [] name) を参照してください。

注: 識別名は、文字列形式ではなくバイト配列形式で指定してください。詳細は、「addSubjectAlternativeName(int, String)」の注を参照してください。

names パラメータには重複した名前 (同じ名前および名前タイプ) が含まれていますが、この識別名は getSubjectAlternativeNames メソッドで返された名前の Collection から削除できます。

以後の変更から保護するために、Collection にディープコピーが行われます。

パラメータ:
names - 名前の Collection。または null
例外:
IOException - 構文解析エラーが発生した場合
関連項目:
getSubjectAlternativeNames()

addSubjectAlternativeName

public void addSubjectAlternativeName(int type,
                                      String name)
                               throws IOException
subjectAlternativeNames 基準値に名前を追加します。X509Certificate には、subjectAlternativeNames フラグの値に応じて、指定した subjectAlternativeNames のすべてか、少なくとも 1 つが含まれている必要があります (setMatchAllSubjectAltNames を参照)。

このメソッドでは、呼び出し側が名前を被認証者の代替名のセットに追加できます。指定した名前は、subjectAlternativeNames 基準で先に存在する値に追加されます。指定した名前が重複する場合は無視されます。

名前は文字列形式で与えられます。RFC 822、DNS、URI の各名前では、RFC 2459 に含まれる制限に従って、明確に定義された文字列形式が用いられます。IPv4 アドレス名はドットで 4 つに区切られた表記法が使用されます。OID名は、ピリオドで区切られた負にならない一連の整数として表されます。ディレクトリ名 (識別名) は RFC 2253 文字列形式になります。otherName、X.400 名、EDI 相手名、IPv6 アドレス名、またはそのほかのタイプの名前に標準の文字列形式はありません。これらの名前は addSubjectAlternativeName(int type, byte [] name) メソッドを使用して指定する必要があります。

注: 識別名については、代わりに addSubjectAlternativeName(int, byte[]) を使用してください。このメソッドの実行結果を信用しないでください。RFC 2253 文字列形式で記述された一部の識別名では、符号化情報の損失により、証明書の一致処理に失敗する可能性があるためです。

パラメータ:
type - 名前のタイプ (0 〜 8、RFC 2459 のセクション 4.2.1.7 で指定されている)
name - 文字列形式の名前。null ではない
例外:
IOException - 構文解析エラーが発生した場合

addSubjectAlternativeName

public void addSubjectAlternativeName(int type,
                                      byte[] name)
                               throws IOException
subjectAlternativeNames 基準値に名前を追加します。X509Certificate には、subjectAlternativeNames フラグの値に応じて、指定した subjectAlternativeNames のすべて、または少なくとも 1 つが含まれている必要があります (setMatchAllSubjectAltNames を参照)。

このメソッドでは、呼び出し側が名前を被認証者の代替名のセットに追加できます。指定した名前は、subjectAlternativeNames 基準で先に存在する値に追加されます。指定した名前が重複する場合は無視されます。

名前はバイト配列として与えられます。このバイト配列には、RFC 2459 と X.509 で定義されている GeneralName 構造体にあるような、DER 符号化された名前が含まれていなければいけません。符号化されたバイト配列には名前の符号化された値だけが含まれている必要があり、GeneralName 構造体の名前に関連付けられたタグが含まれていてはいけません。この構造体の ASN.1 定義は次のとおりです。


  GeneralName ::= CHOICE {
       otherName                       [0]     OtherName,
       rfc822Name                      [1]     IA5String,
       dNSName                         [2]     IA5String,
       x400Address                     [3]     ORAddress,
       directoryName                   [4]     Name,
       ediPartyName                    [5]     EDIPartyName,
       uniformResourceIdentifier       [6]     IA5String,
       iPAddress                       [7]     OCTET STRING,
       registeredID                    [8]     OBJECT IDENTIFIER}
 

以後の変更から保護するために、ここで提供されるバイト配列は複製されています。

パラメータ:
type - 名前のタイプ (0 〜 8、上記の通り)
name - ASN.1 DER 符号化形式による名前を含むバイト配列
例外:
IOException - 構文解析エラーが発生した場合

setNameConstraints

public void setNameConstraints(byte[] bytes)
                        throws IOException
名前制約の基準値を設定します。X509Certificate には、指定した名前制約を満たすような被認証者と被認証者の代替名がなければいけません。

名前制約はバイト配列で指定されます。このバイト配列には、RFC 2459 と X.509 で定義されている NameConstraints 構造体にあるような名前制約の DER 符号化形式が含まれなければいけません。NameConstraints 構造体の ASN.1 定義は次のとおりです。


  NameConstraints ::= SEQUENCE {
       permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
       excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }

  GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree

  GeneralSubtree ::= SEQUENCE {
       base                    GeneralName,
       minimum         [0]     BaseDistance DEFAULT 0,
       maximum         [1]     BaseDistance OPTIONAL }

  BaseDistance ::= INTEGER (0..MAX)

  GeneralName ::= CHOICE {
       otherName                       [0]     OtherName,
       rfc822Name                      [1]     IA5String,
       dNSName                         [2]     IA5String,
       x400Address                     [3]     ORAddress,
       directoryName                   [4]     Name,
       ediPartyName                    [5]     EDIPartyName,
       uniformResourceIdentifier       [6]     IA5String,
       iPAddress                       [7]     OCTET STRING,
       registeredID                    [8]     OBJECT IDENTIFIER}
 

以後の変更から保護するために、ここで提供されるバイト配列は複製されています。

パラメータ:
bytes - 名前制約をチェックするために使用される NameConstraints 拡張情報を ASN.1 DER で符号化した値を含むバイト配列。拡張情報の値だけが含まれ、OID やクリティカルの程度を表すフラグは含まれない。名前制約のチェックを行わない場合は null にする
例外:
IOException - 構文解析エラーが発生した場合
関連項目:
getNameConstraints()

setBasicConstraints

public void setBasicConstraints(int minMaxPathLen)
基本制約に対する制約を設定します。この値が 0 以上の場合、この値以上の pathLen を持つ basicConstraints 機能拡張が X509Certificates に含まれている必要があります。値が -2 の場合、エンドエンティティの証明書だけが許容されます。-1 の場合、チェックは行われません。

順方向 (ターゲットからトラストアンカーへ) の証明書パスを構築するときに、この制約は役立ちます。パスが部分的に構築されている場合、候補証明書の maxPathLen 値は部分パス内の証明書数以上でなければいけません。

パラメータ:
minMaxPathLen - 基本制約に対する制約の値
例外:
IllegalArgumentException - 値が -2 未満の場合
関連項目:
getBasicConstraints()

setPolicy

public void setPolicy(Set<String> certPolicySet)
               throws IOException
ポリシー制約を設定します。X509Certificate には、その証明書ポリシー機能拡張内に指定したポリシーが少なくとも 1 つ含まれている必要があります。certPolicySet が空の場合、X509Certificate には、その証明書ポリシー機能拡張内に指定したポリシーが複数含まれている必要があります。certPolicySetnull の場合、ポリシーのチェックは行われません。

以後の変更から保護するために、Set は複製されています。

パラメータ:
certPolicySet - 文字列形式の証明書ポリシー OID の Set、または null。各 OID はピリオドで区切られた負にならない整数の組で表される
例外:
IOException - 最初のコンポーネントが 0、1、2 のどれでもなく、2 番目のコンポーネントが 39 よりも大きいというように、OID の構文解析エラーが発生した場合
関連項目:
getPolicy()

setPathToNames

public void setPathToNames(Collection<List<?>> names)
                    throws IOException
pathToNames 基準値を設定します。指定した名前へのパスを構築できないような名前制約が X509Certificate に含まれていてはいけません。

このメソッドを使用すると、1 回のメソッド呼び出しで、呼び出し側が X509Certificates の名前制約が許容される必要のある、名前の完全なセットを指定できます。指定した値は pathToNames 基準値の前の値を置き換えます。

順方向 (ターゲットからトラストアンカーへ) の証明書パスを構築するときに、この制約は役立ちます。パスが部分的に構築されている場合、候補証明書の名前制約は部分パス内の名前へのパスを構築できない制約ではいけません。

null でない names パラメータは、pathToNames 基準値に含まれている名前ごとに 1 エントリとなる Collection になります。各エントリは List で、この List の最初のエントリは Integer (名前タイプ、0 〜 8)、2 番目のエントリは String かバイト配列 (それぞれが文字列形式または ASN.1 DER 符号化形式の名前) になります。同じタイプに複数の名前が存在することもあります。この引数の値として null が指定された場合、pathToNames のチェックは行われません。

Collection 内の名前は、String か ASN.1 符号化バイト配列として指定できます。使用される形式の詳細については、addPathToName(int type, String name) および addPathToName(int type, byte [] name) を参照してください。

注: 識別名は、文字列形式ではなくバイト配列形式で指定してください。詳細は、「addPathToName(int, String)」の注を参照してください。

names パラメータには重複した名前 (同じ名前および名前タイプ) が含まれていますが、この識別名は getPathToNames メソッドで返された名前の Collection から削除できます。

以後の変更から保護するために、Collection にディープコピーが行われます。

パラメータ:
names - 名前 1 つあたり 1 エントリの Collection。または null
例外:
IOException - 構文解析エラーが発生した場合
関連項目:
getPathToNames()

addPathToName

public void addPathToName(int type,
                          String name)
                   throws IOException
pathToNames 基準値に名前を追加します。指定した名前のパスを構築できないような名前制約が X509Certificate に含まれていてはいけません。

このメソッドでは、呼び出し側が名前を X509Certificates の名前制約が許容される必要のある、名前のセットに追加できます。指定した名前は、pathToNames 基準値で先に存在する値に追加されます。名前が重複する場合は無視されます。

名前は文字列形式で与えられます。RFC 822、DNS、URI の各名前では、RFC 2459 に含まれる制限に従って、明確に定義された文字列形式が用いられます。IPv4 アドレス名はドットで 4 つに区切られた表記法が使用されます。OID名は、ピリオドで区切られた負にならない一連の整数として表されます。ディレクトリ名 (識別名) は RFC 2253 文字列形式になります。otherName、X.400 名、EDI 相手名、IPv6 アドレス名、そのほかのタイプの名前には、標準の文字列形式はありません。これらの名前は addPathToName(int type, byte [] name) メソッドを使用して指定される必要があります。

注: 識別名については、代わりに addPathToName(int, byte[]) を使用してください。このメソッドの実行結果を信用しないでください。RFC 2253 文字列形式で記述された一部の識別名では、符号化情報の損失により、証明書の一致処理に失敗する可能性があるためです。

パラメータ:
type - 名前のタイプ (0 〜 8、RFC 2459 のセクション 4.2.1.7 で指定されている)
name - 文字列形式の名前
例外:
IOException - 構文解析エラーが発生した場合

addPathToName

public void addPathToName(int type,
                          byte[] name)
                   throws IOException
pathToNames 基準値に名前を追加します。指定した名前のパスを構築できないような名前制約が X509Certificate に含まれていてはいけません。

このメソッドでは、呼び出し側が名前を X509Certificates の名前制約が許容される必要のある、名前のセットに追加できます。指定した名前は、pathToNames 基準値で先に存在する値に追加されます。名前が重複する場合は無視されます。

名前はバイト配列で与えられます。このバイト配列には、RFC 2459 と X.509 で定義されている GeneralName 構造体にあるような、DER 符号化した名前が含まれている必要があります。この構造体の ASN.1 定義は、addSubjectAlternativeName(int type, byte [] name) で説明しています。

以後の変更から保護するために、ここで提供されるバイト配列は複製されています。

パラメータ:
type - 名前のタイプ (0 〜 8、RFC 2459 のセクション 4.2.1.7 で指定されている)
name - ASN.1 DER 符号化形式による名前を含むバイト配列
例外:
IOException - 構文解析エラーが発生した場合

getCertificate

public X509Certificate getCertificate()
certificateEquals 基準値を返します。指定した X509Certificate は、match メソッドに渡された X509Certificate と同じでないといけません。null の場合、このチェックは行われません。

戻り値:
一致させる X509Certificate。または null
関連項目:
setCertificate(java.security.cert.X509Certificate)

getSerialNumber

public BigInteger getSerialNumber()
serialNumber 基準値を返します。指定したシリアル番号は、X509Certificate の証明書シリアル番号と一致する必要があります。null の場合、任意の証明書シリアル番号と一致します。

戻り値:
一致させる証明書シリアル番号。または null
関連項目:
setSerialNumber(java.math.BigInteger)

getIssuer

public X500Principal getIssuer()
発行者の基準値を X500Principal として返します。この識別名は、X509Certificate の発行者識別名と一致する必要があります。null の場合、発行者の基準値は無効になり、任意の発行者識別名と一致します。

戻り値:
要求された発行者の X500Principal としての識別名または null
導入されたバージョン:
1.5

getIssuerAsString

public String getIssuerAsString()
バグ: 代わりに getIssuer() または getIssuerAsBytes() を使用してください。このメソッドの実行結果を信用しないでください。RFC 2253 文字列形式で記述された一部の識別名では、符号化情報の損失により、証明書の一致処理に失敗する可能性があるためです。

発行者の基準値を String として返します。この識別名は、X509Certificate の発行者識別名と一致する必要があります。null の場合、発行者の基準値は無効になり、任意の発行者識別名と一致します。

返された値が null でない場合は、RFC 2253 形式の識別名になります。

戻り値:
要求された発行者の RFC 2253 形式の識別名。または null

getIssuerAsBytes

public byte[] getIssuerAsBytes()
                        throws IOException
発行者の基準値をバイト配列として返します。この識別名は、X509Certificate の発行者識別名と一致する必要があります。null の場合、発行者の基準値は無効になり、任意の発行者識別名と一致します。

返された値が null ではない場合、X.501 で定義されている DER 符号化された単一識別名を含むバイト配列になります。この構造体の ASN.1 表記については、setIssuer(byte [] issuerDN) を参照してください。

以降の変更から保護するために、返されるバイト配列の複製が作成されます。

戻り値:
ASN.1 DER 形式による要求された発行者の識別名を含むバイト配列。または null
例外:
IOException - 符号化エラーが発生した場合

getSubject

public X500Principal getSubject()
被認証者の基準値を X500Principal として返します。この識別名は、X509Certificate の被認証者識別名と一致する必要があります。null の場合、被認証者の基準値は無効になり、任意の被認証者識別名と一致します。

戻り値:
要求された被認証者の X500Principal としての識別名または null
導入されたバージョン:
1.5

getSubjectAsString

public String getSubjectAsString()
バグ: 代わりに getSubject() または getSubjectAsBytes() を使用してください。このメソッドの実行結果を信用しないでください。RFC 2253 文字列形式で記述された一部の識別名では、符号化情報の損失により、証明書の一致処理に失敗する可能性があるためです。

被認証者の基準値を String として返します。この識別名は、X509Certificate の被認証者識別名と一致する必要があります。null の場合、被認証者の基準値は無効になり、任意の被認証者識別名と一致します。

返された値が null でない場合は、RFC 2253 形式の識別名になります。

戻り値:
要求された被認証者の RFC 2253 形式の識別名。または null

getSubjectAsBytes

public byte[] getSubjectAsBytes()
                         throws IOException
被認証者の基準値をバイト配列として返します。この識別名は、X509Certificate の被認証者識別名と一致する必要があります。null の場合、被認証者の基準値は無効になり、任意の被認証者識別名と一致します。

返された値が null ではない場合、X.501 で定義されている DER 符号化された単一識別名を含むバイト配列になります。この構造体の ASN.1 表記については、setSubject(byte [] subjectDN) を参照してください。

以降の変更から保護するために、返されるバイト配列の複製が作成されます。

戻り値:
ASN.1 DER 形式による要求された被認証者の識別名を含むバイト配列。または null
例外:
IOException - 符号化エラーが発生した場合

getSubjectKeyIdentifier

public byte[] getSubjectKeyIdentifier()
subjectKeyIdentifier 基準値を返します。X509Certificate には、指定した値を持つ SubjectKeyIdentifier 機能拡張が含まれる必要があります。null の場合、subjectKeyIdentifier のチェックは行われません。

以降の変更から保護するために、返されるバイト配列の複製が作成されます。

戻り値:
鍵識別子。または null
関連項目:
setSubjectKeyIdentifier(byte[])

getAuthorityKeyIdentifier

public byte[] getAuthorityKeyIdentifier()
authorityKeyIdentifier 基準値を返します。X509Certificate には、指定した値を持つ AuthorityKeyIdentifier 機能拡張が含まれる必要があります。null の場合、authorityKeyIdentifier のチェックは行われません。

以降の変更から保護するために、返されるバイト配列の複製が作成されます。

戻り値:
鍵識別子。または null
関連項目:
setAuthorityKeyIdentifier(byte[])

getCertificateValid

public Date getCertificateValid()
certificateValid 基準値を返します。指定した日付は、X509Certificate の証明書有効期間内でなければいけません。null の場合、certificateValid のチェックは行われません。

以後の変更から保護するために、返される Date は複製されています。

戻り値:
チェック対象の Date。または null
関連項目:
setCertificateValid(java.util.Date)

getPrivateKeyValid

public Date getPrivateKeyValid()
privateKeyValid 基準値を返します。指定した日付は、X509Certificate の非公開鍵有効期間内でなければいけません。null の場合、privateKeyValid のチェックは行われません。

以後の変更から保護するために、返される Date は複製されています。

戻り値:
チェック対象の Date。または null
関連項目:
setPrivateKeyValid(java.util.Date)

getSubjectPublicKeyAlgID

public String getSubjectPublicKeyAlgID()
subjectPublicKeyAlgID 基準値を返します。X509Certificate には、指定したアルゴリズムによる被認証者の公開鍵が含まれなければいけません。null の場合、subjectPublicKeyAlgID のチェックは行われません。

戻り値:
チェック対象の署名アルゴリズムのオブジェクト識別子 (OID)、または null。OID はピリオドで区切られた負にならない整数の組で表される
関連項目:
setSubjectPublicKeyAlgID(java.lang.String)

getSubjectPublicKey

public PublicKey getSubjectPublicKey()
subjectPublicKey 基準値を返します。X509Certificate には、指定した被認証者の公開鍵が含まれなければいけません。null の場合、subjectPublicKey のチェックは行われません。

戻り値:
チェック対象の被認証者の公開鍵。または null
関連項目:
setSubjectPublicKey(java.security.PublicKey)

getKeyUsage

public boolean[] getKeyUsage()
keyUsage 基準値を返します。指定した keyUsage の値が X509Certificate で有効になっている必要があります。null の場合、keyUsage のチェックは行われません。

以後の変更から保護するために、返される boolean 型配列は複製されています。

戻り値:
X509Certificate.getKeyUsage() によって返される boolean 型配列と同じ形式の boolean 型配列。または null
関連項目:
setKeyUsage(boolean[])

getExtendedKeyUsage

public Set<String> getExtendedKeyUsage()
extendedKeyUsage 基準値を返します。指定した鍵目的が X509Certificate の拡張鍵使用法の機能拡張で有効になっている必要があります。返される keyPurposeSet が空か null の場合、extendedKeyUsage のチェックは行われません。extendedKeyUsage 機能拡張のない X509Certificate では、すべての鍵目的が暗黙的に有効です。

戻り値:
文字列形式による鍵目的 OID の不変な Set、または null
関連項目:
setExtendedKeyUsage(java.util.Set)

getMatchAllSubjectAltNames

public boolean getMatchAllSubjectAltNames()
setSubjectAlternativeNames メソッドまたは addSubjectAlternativeName メソッドで指定された、X509Certificate に含まれる必要がある subjectAlternativeNames の数が、すべてなのか、または少なくとも 1 つなのかを示します。true の場合、指定した被認証者の代替名がすべて X509Certificate に含まれている必要があります。false の場合、X509Certificateに、指定した被認証者の代替名が少なくとも 1 つ含まれている必要があります。

戻り値:
フラグが使用可能な場合は true、使用不可の場合は false。デフォルトでは true
関連項目:
setMatchAllSubjectAltNames(boolean)

getSubjectAlternativeNames

public Collection<List<?>> getSubjectAlternativeNames()
subjectAlternativeNames 基準値のコピーを返します。X509Certificate には、subjectAlternativeNames フラグの値に応じて、指定した subjectAlternativeNames のすべて、または少なくとも 1 つが含まれている必要があります (getMatchAllSubjectAltNames を参照)。返された値が null の場合、subjectAlternativeNames のチェックは行われません。

返される値が null ではない場合、被認証者の代替名基準値に含まれている名前ごとに 1 エントリとなる Collection になります。各エントリは List で、この List の最初のエントリは Integer (名前タイプ、0 〜 8)、2 番目のエントリは String かバイト配列 (それぞれが文字列形式または ASN.1 DER 符号化形式の名前) になります。同じタイプに複数の名前が存在することもあります。返される Collection には重複した名前 (同じ名前と名前タイプ) が含まれることもあります。

Collection 内の各被認証者の代替名は、String または ASN.1 符号化バイト配列として指定できます。使用される形式の詳細については、addSubjectAlternativeName(int type, String name) および addSubjectAlternativeName(int type, byte [] name) を参照してください。

以後の変更から保護するために、Collection にディープコピーが行われます。

戻り値:
名前の Collection。または null
関連項目:
setSubjectAlternativeNames(java.util.Collection>)

getNameConstraints

public byte[] getNameConstraints()
名前制約の基準値を返します。X509Certificate には、指定した名前制約を満たすような被認証者と被認証者の代替名がなければいけません。

名前制約はバイト配列で返されます。このバイト配列には、RFC 2459 と X.509 で定義されている NameConstraints 構造体にあるような、名前制約の DER 符号化形式が含まれています。この構造体の ASN.1 表記は、「setNameConstraints(byte [] bytes)」で説明しています。

以降の変更から保護するために、返されるバイト配列の複製が作成されます。

戻り値:
名前制約をチェックするために使用される NameConstraints 拡張情報を ASN.1 DER で符号化した値を含むバイト配列。名前制約のチェックを行わない場合は null
関連項目:
setNameConstraints(byte[])

getBasicConstraints

public int getBasicConstraints()
基本制約に対する制約を返します。この値が 0 以上の場合、この値以上の pathLen を持つ basicConstraints 機能拡張が X509Certificates に含まれている必要があります。値が -2 の場合、エンドエンティティの証明書だけが許容されます。-1 の場合、basicConstraints のチェックは行われません。

戻り値:
基本制約に対する制約の値
関連項目:
setBasicConstraints(int)

getPolicy

public Set<String> getPolicy()
ポリシー基準値を返します。X509Certificate には、その証明書ポリシー機能拡張内に指定したポリシーが少なくとも 1 つ含まれている必要があります。返された Set が空の場合、X509Certificate には、その証明書ポリシー機能拡張内に指定したポリシーが複数含まれている必要があります。返された Setnull の場合、ポリシーのチェックは行われません。

戻り値:
文字列形式による鍵目的 OID の不変な Set、または null
関連項目:
setPolicy(java.util.Set)

getPathToNames

public Collection<List<?>> getPathToNames()
pathToNames 基準値の複製を返します。指定した名前へのパスを構築できないような名前制約が X509Certificate に含まれてはいけません。返された値が null の場合、pathToNames のチェックは行われません。

返される値が null でない場合、pathToNames 基準値に含まれている名前ごとに 1 エントリとなる Collection になります。各エントリは List で、この List の最初のエントリは Integer (名前タイプ、0 〜 8)、2 番目のエントリは String かバイト配列 (それぞれが文字列形式または ASN.1 DER 符号化形式の名前) になります。同じタイプに複数の名前が存在することもあります。返される Collection には重複した名前 (同じ名前と名前タイプ) が含まれることもあります。

Collection 内の名前は、String か ASN.1 符号化バイト配列として指定できます。使用される形式の詳細については、addPathToName(int type, String name) および addPathToName(int type, byte [] name) を参照してください。

以後の変更から保護するために、Collection にディープコピーが行われます。

戻り値:
名前の Collection。または null
関連項目:
setPathToNames(java.util.Collection>)

toString

public String toString()
CertSelector のプリント可能表現を返します。

オーバーライド:
クラス Object 内の toString
戻り値:
この CertSelector の内容を表す String

match

public boolean match(Certificate cert)
Certificate が選択されるかどうかを判断します。

定義:
インタフェース CertSelector 内の match
パラメータ:
cert - チェック対象の Certificate
戻り値:
Certificate が選択される場合は true、そうでない場合は false

clone

public Object clone()
このオブジェクトの複製を返します。

定義:
インタフェース CertSelector 内の clone
オーバーライド:
クラス Object 内の clone
戻り値:
コピー
関連項目:
Cloneable

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。