public abstract class CertPath extends Object implements Serializable
これはすべての CertPath に共通なメソッドを定義する abstract クラスです。サブクラスでは、さまざまな種類の証明書 (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 符号化をサポートする必要があります。
並行アクセス
すべての 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 のタイプ (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, 2013, Oracle and/or its affiliates. All rights reserved.