モジュール java.base
パッケージ java.security.cert

クラスCertPath

  • すべての実装されたインタフェース:
    Serializable


    public abstract class CertPath
    extends Object
    implements Serializable
    不変な証明書のシーケンス(証明書パス)です。

    これはすべてのCertPathに共通なメソッドを定義する抽象クラスです。 サブクラスでは、さまざまな種類の証明書(X.509、PGPなど)を処理できます。

    すべてのCertPathにはタイプ、Certificateのリスト、サポートされる1つ以上の符号化があります。 CertPathクラスは不変であるため、構築後に外部から目に見えるかたちでCertPathを変更することはできません。 このことは、このクラスのすべてのpublicフィールドとメソッド、そしてサブクラスで追加またはオーバーライドされたpublicフィールドとメソッドに当てはまります。

    タイプはStringで、証明書パスでCertificateのタイプを特定します。 証明書パスcertPathの各証明書certでは、cert.getType().equals(certPath.getType())trueである必要があります。

    Certificateのリストは0個以上のCertificateからなる順序付きのListです。 このListと、含まれるCertificateは不変である必要があります。

    それぞれのCertPathオブジェクトは、ほかの相手に格納したり伝送したりするためにバイト配列に変換できるように、1つ以上の符号化をサポートしていなければいけません。 なるべくその符号化は、PKCS#7のように明確にドキュメント化されている標準にします。 CertPathでサポートされている符号化のうちの1つを、デフォルトの符号化とします。 符号化を明示的に要求しない場合(たとえばgetEncoded()メソッド)に、デフォルトの符号化が使用されます。

    すべてのCertPathオブジェクトはSerializableでもあります。 直列化中にCertPathオブジェクトは代替CertPathRepオブジェクトに解釈処理されます。 これにより、基本的な実装にかかわらず、CertPathオブジェクトを同等の表現に直列化できます。

    CertPathオブジェクトはCertificateFactoryで作成されますが、CertPathBuilderのようなほかのクラスから返されることもあります。

    規則では、X509Certificateで構成されているX.509 CertPathは、ターゲット証明書で始まり、トラスト・アンカーが発行した証明書で終わるように順序付けされています。 つまり、証明書の発行者は、その次に続く証明書の主体になります。 TrustAnchorを表す証明書は、証明書パスに含まれません。 未検査のX.509 CertPathはこの規則に従いません。 PKIX CertPathValidatorは、この規則の違反を検出することにより、証明書パスが無効になりCertPathValidatorExceptionがスローされるのを防ぎます。

    Javaプラットフォームの実装は、すべて次の標準のCertPath符号化をサポートする必要があります。

    • PKCS7
    • PkiPath
    これらのエンコーディングはJavaセキュリティ標準アルゴリズム名仕様の「「CertPathエンコーディング」セクション」に記述されています。 サポートされているその他の符号化については、実装のリリース・ノートを参照してください。

    並行アクセス

    すべてのCertPathオブジェクトは、スレッドに対して安全である必要があります。 つまり、単一の(または複数の) CertPathオブジェクト上で、このクラスに定義されたメソッドを複数のスレッドが同時に呼び出しても、悪影響はありません。 このことはCertPath.getCertificatesが返すListについても当てはまります。

    CertPathオブジェクトは、不変かつスレッドに対して安全でなければならないので、アクセスの調整を心配することなく、オブジェクトをさまざまなコードに渡すことができます。 CertPathオブジェクトとListオブジェクトが不変なので、通常、スレッドに対して安全にすることは難しくありません。

    導入されたバージョン:
    1.4
    関連項目:
    CertificateFactory, CertPathBuilder, 直列化された形式
    • ネストされたクラスのサマリー

      ネストされたクラス 
      修飾子と型 クラス 説明
      protected static class  CertPath.CertPathRep
      直列化の代替CertPathクラスです。
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected CertPath​(String type)
      指定されたタイプのCertPathを作成します。
    • コンストラクタの詳細

      • CertPath

        protected CertPath​(String type)
        指定されたタイプのCertPathを作成します。

        ほとんどのユーザーはCertificateFactoryを使用してCertPathを作成するため、このコンストラクタは保護されています。

        パラメータ:
        type - このパス内のCertificateのタイプの標準名
    • メソッドの詳細

      • getType

        public String getType​()
        この証明書パス内のCertificateのタイプを返します。 これは、証明書パス内のすべてのCertificateに対するcert.getType()で返される文字列と同じです。
        戻り値:
        この証明書パス内のCertificateのタイプ(nullにはならない)
      • getEncodings

        public abstract Iterator<String> getEncodings​()
        この証明書パスでサポートする符号化の繰返しを返します。 返されたIteratorremoveメソッドで変更しようとすると、UnsupportedOperationExceptionがスローされます。
        戻り値:
        サポートされる符号化の名前(String)を反復するIterator
      • equals

        public boolean equals​(Object other)
        指定されたオブジェクトとこの証明書パスが等しいかどうかを比較します。 2つのCertPathのタイプが等しく、証明書のListが(つまりList内のCertificateが暗黙的に)等しい場合、これらのCertPathは等しいことになります。 CertPathCertPathでないオブジェクトと等しくなることはありません。

        このアルゴリズムはこのメソッドに実装されています。 オーバーライドするときは、ここで説明した動作が維持されるようにしなければいけません。

        オーバーライド:
        equals、クラス: Object
        パラメータ:
        other - この証明書パスと等しいかどうかが判定されるオブジェクト
        戻り値:
        指定されたオブジェクトがこの証明書パスに等しい場合はtrue、そうでない場合はfalse
        関連項目:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode​()
        この証明書パスのハッシュ・コードを返します。 証明書パスのハッシュ・コードは、次の計算の結果として定義されます。
        
          hashCode = path.getType().hashCode();
          hashCode = 31*hashCode + path.getCertificates().hashCode();
         
        これにより、Object.hashCodeの一般規則によって要求されるように、任意の2つの証明書パスpath1path2path1.equals(path2)であれば、path1.hashCode()==path2.hashCode()となることが保証されます。
        オーバーライド:
        hashCode、クラス: Object
        戻り値:
        この証明書パスにおけるハッシュ・コード値
        関連項目:
        Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
      • toString

        public String toString​()
        この証明書パスの文字列表現を返します。 パスの各CertificatetoStringメソッドを呼び出します。
        オーバーライド:
        toString、クラス: Object
        戻り値:
        この証明書パスの文字列表現
      • getEncoded

        public abstract byte[] getEncoded​()
                                   throws CertificateEncodingException
        デフォルトの符号化を使用して、この証明書パスの符号化された形式を返します。
        戻り値:
        符号化されたバイト
        例外:
        CertificateEncodingException - 符号化エラーが発生した場合
      • getEncoded

        public abstract byte[] getEncoded​(String encoding)
                                   throws CertificateEncodingException
        指定した符号化を使用して、この証明書パスの符号化された形式を返します。
        パラメータ:
        encoding - 使用する符号化名
        戻り値:
        符号化されたバイト
        例外:
        CertificateEncodingException - 符号化エラーが発生した場合、または要求された符号化がサポートされていない場合
      • getCertificates

        public abstract List<? extends Certificate> getCertificates​()
        この証明書パス内の証明書のリストを返します。 返されるListは不変で、スレッドに対して安全である必要があります。
        戻り値:
        Certificateの不変なList (空は可、nullは不可)
      • writeReplace

        protected Object writeReplace​()
                               throws ObjectStreamException
        直列化されるCertPathCertPathRepオブジェクトに置き換えます。
        戻り値:
        直列化されるCertPathRep
        例外:
        ObjectStreamException - この証明書パスを表すCertPathRepオブジェクトを作成できなかった場合