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

クラスCertPath

java.lang.Object
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
関連項目: