モジュール java.base
パッケージ 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 5280Internet 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