モジュール java.base
パッケージ 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メソッドはデフォルト値(nullgetBasicConstraintsメソッドの場合は-1)を返します。 したがって、matchメソッドはX509Certificateに対してtrueを返します。 通常、X509CertSelectorは、setIssuersetKeyUsageを呼び出していくつかの基準を有効にした後、CertStore.getCertificatesや類似のメソッドに渡されます。

matchメソッドが通常的に単一のX509Certificateと一意に一致するように、いくつかの基準を(たとえばsetIssuersetSerialNumberを呼び出すことで)有効にできます。 通常、2つの発行CAで同じ識別名を持つことができるため、それぞれは同じシリアル番号で証明書を発行します。 ほかの一意の組み合わせには、発行者、サブジェクト、subjectKeyIdentifierそしてsubjectPublicKey基準が含まれます。

これから説明するX.509証明書機能拡張の定義については、RFC 5280「Internet X.509 Public Key Infrastructure Certificate and CRL Profile」を参照してください。

並行アクセス

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

導入されたバージョン:
1.4
関連項目:
CertSelector, X509Certificate
  • コンストラクタの詳細

    • 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で、その最初のエントリは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 5280に含まれる制限に従って、明確に定義された文字列形式が用いられます。 IPv4アドレス名はドットで4つに区切られた表記法が使用されます。 OID名は、ピリオドで区切られた負にならない一連の整数として表されます。 ディレクトリ名(識別名)はRFC 2253文字列形式になります。 otherName、X.400名、EDI相手名、IPv6アドレス名、そのほかのタイプの名前には、標準の文字列形式はありません。 これらは、addSubjectAlternativeName(int type, byte [] name)メソッドを使用して指定するようにしてください。

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

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

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

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

      名前はバイト配列で指定されます。 このバイト配列には、RFC 5280と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 5280とX.509で定義されているNameConstraints構造体にあるような名前制約のDER符号化形式が含まれなければいけません。 この構造体の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で、その最初のエントリは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 5280に含まれる制限に従って、明確に定義された文字列形式が用いられます。 IPv4アドレス名はドットで4つに区切られた表記法が使用されます。 OID名は、ピリオドで区切られた負にならない一連の整数として表されます。 ディレクトリ名(識別名)はRFC 2253文字列形式になります。 otherName、X.400名、EDI相手名、IPv6アドレス名、そのほかのタイプの名前には、標準の文字列形式はありません。 これらは、addPathToName(int type, byte [] name)メソッドを使用して指定するようにしてください。

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

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

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

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

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

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

      パラメータ:
      type - 名前のタイプ(0-8、RFC 5280のセクション4.2.1.6で指定されている)
      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<java.lang.String>)
    • getMatchAllSubjectAltNames

      public boolean getMatchAllSubjectAltNames()
      setSubjectAlternativeNamesメソッドやaddSubjectAlternativeNameメソッドで指定されたsubjectAlternativeNamesがすべて、または少なくとも1つ、X509Certificateに含まれていなければならないかどうかを示します。 trueの場合、指定したサブジェクトの代替名がすべてX509Certificateに含まれていなければいけません。 falseの場合、指定したサブジェクトの代替名が少なくとも1つX509Certificateに含まれていなければいけません。
      戻り値:
      フラグが使用可能な場合はtrue、使用不可の場合はfalse フラグはデフォルトではtrueです。
      関連項目:
      setMatchAllSubjectAltNames(boolean)
    • getSubjectAlternativeNames

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

      返される値がnullではない場合、サブジェクトの代替名基準値に含まれている名前ごとに1エントリとなるCollectionになります。 各エントリは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<java.util.List<?>>)
    • getNameConstraints

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

      名前制約はバイト配列で返されます。 このバイト配列には、RFC 5280と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<java.lang.String>)
    • getPathToNames

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

      返される値がnullでない場合、pathToNames基準値に含まれている名前ごとに1エントリとなるCollectionになります。 各エントリは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<java.util.List<?>>)
    • toString

      public String toString()
      CertSelectorのプリント可能表現を返します。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      このCertSelectorの内容を表すString
    • match

      public boolean match​(Certificate cert)
      Certificateが選択されるかどうかを判断します。
      定義:
      match、インタフェース: CertSelector
      パラメータ:
      cert - チェック対象のCertificate
      戻り値:
      Certificateが選択される場合はtrue、そうでない場合はfalse
    • clone

      public Object clone()
      このオブジェクトの複製を返します。
      定義:
      clone、インタフェース: CertSelector
      オーバーライド:
      clone、クラス: Object
      戻り値:
      コピー
      関連項目:
      Cloneable