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符号化をサポートする必要があります。
PKCS7PkiPath並行アクセス
すべてのCertPathオブジェクトは、スレッドに対して安全である必要があります。 つまり、単一の(または複数の) CertPathオブジェクト上で、このクラスに定義されたメソッドを複数のスレッドが同時に呼び出しても、悪影響はありません。 このことはCertPath.getCertificatesが返すListについても当てはまります。
CertPathオブジェクトは、不変かつスレッドに対して安全でなければならないので、アクセスの調整を心配することなく、オブジェクトをさまざまなコードに渡すことができます。 CertPathオブジェクトとListオブジェクトが不変なので、通常、スレッドに対して安全にすることは難しくありません。
CertificateFactory, CertPathBuilder, 直列化された形式| 修飾子と型 | クラス | 説明 |
|---|---|---|
protected static class |
CertPath.CertPathRep |
直列化の代替
CertPathクラスです。 |
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
boolean |
equals(Object other) |
指定されたオブジェクトとこの証明書パスが等しいかどうかを比較します。
|
abstract List<? extends Certificate> |
getCertificates() |
この証明書パス内の証明書のリストを返します。
|
abstract byte[] |
getEncoded() |
デフォルトの符号化を使用して、この証明書パスの符号化された形式を返します。
|
abstract byte[] |
getEncoded(String encoding) |
指定した符号化を使用して、この証明書パスの符号化された形式を返します。
|
abstract Iterator<String> |
getEncodings() |
この証明書パスでサポートする符号化の繰返しを返します。
|
String |
getType() |
この証明書パス内の
Certificateのタイプを返します。 |
int |
hashCode() |
この証明書パスのハッシュ・コードを返します。
|
String |
toString() |
この証明書パスの文字列表現を返します。
|
protected Object |
writeReplace() |
直列化される
CertPathをCertPathRepオブジェクトに置き換えます。 |
protected CertPath(String type)
CertPathを作成します。
ほとんどのユーザーはCertificateFactoryを使用してCertPathを作成するため、このコンストラクタは保護されています。
type - このパス内のCertificateのタイプの標準名public String getType()
Certificateのタイプを返します。 これは、証明書パス内のすべてのCertificateに対するcert.getType()で返される文字列と同じです。 Certificateのタイプ(nullにはならない)public abstract Iterator<String> getEncodings()
Iteratorをremoveメソッドで変更しようとすると、UnsupportedOperationExceptionがスローされます。 Iteratorpublic boolean equals(Object other)
CertPathのタイプが等しく、証明書のListが(つまりList内のCertificateが暗黙的に)等しい場合、これらのCertPathは等しいことになります。 CertPathはCertPathでないオブジェクトと等しくなることはありません。
このアルゴリズムはこのメソッドに実装されています。 オーバーライドするときは、ここで説明した動作が維持されるようにしなければいけません。
equals、クラスObjectother - この証明書パスと等しいかどうかが判定されるオブジェクトObject.hashCode()、HashMappublic int hashCode()
hashCode = path.getType().hashCode();
hashCode = 31*hashCode + path.getCertificates().hashCode();
これにより、Object.hashCodeの一般規則によって要求されるように、任意の2つの証明書パスpath1とpath2でpath1.equals(path2)であれば、path1.hashCode()==path2.hashCode()となることが保証されます。hashCode、クラスObjectObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public String toString()
CertificateでtoStringメソッドを呼び出します。 public abstract byte[] getEncoded()
throws CertificateEncodingException
CertificateEncodingException - 符号化エラーが発生した場合public abstract byte[] getEncoded(String encoding) throws CertificateEncodingException
encoding - 使用する符号化名CertificateEncodingException - 符号化エラーが発生した場合、または要求された符号化がサポートされていない場合public abstract List<? extends Certificate> getCertificates()
Listは不変で、スレッドに対して安全である必要があります。 Certificateの不変なList (空は可、nullは不可)protected Object writeReplace() throws ObjectStreamException
CertPathをCertPathRepオブジェクトに置き換えます。CertPathRepObjectStreamException - この証明書パスを表すCertPathRepオブジェクトを作成できなかった場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。