JavaTM 2 Platform
Standard Ed. 5.0

java.security.cert
クラス CertPath

java.lang.Object
  上位を拡張 java.security.cert.CertPath
すべての実装されたインタフェース:
Serializable

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 をスローします。

並行アクセス

すべての CertPath オブジェクトは、スレッドに対して安全でなければなりません。つまり、このクラスで定義されたメソッドは、悪影響を与えることなく、複数スレッドが並行して単一 CertPath オブジェクト (または 1 つ以上) 上で呼び出すことができます。このことは CertPath.getCertificates が返す List についても当てはまります。

CertPath オブジェクトは不変で、かつスレッドに対して安全でなければならないため、アクセスの同期の心配をすることなく、さまざまなコードにこのオブジェクトを渡すことができます。

導入されたバージョン:
1.4
関連項目:
CertificateFactory, CertPathBuilder, 直列化された形式

入れ子のクラスの概要
protected static class CertPath.CertPathRep
          直列化の代替 CertPath クラスです。
 
コンストラクタの概要
protected CertPath(String type)
          指定されたタイプの 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()
          直列化される CertPathCertPathRep オブジェクトに置き換えます。
 
クラス java.lang.Object から継承されたメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

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 でないオブジェクトと等しくなることはありません。

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

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

hashCode

public int hashCode()
この証明書パスのハッシュコードを返します。証明書パスのハッシュコードは、次の計算の結果として定義されます。

  hashCode = path.getType().hashCode();
  hashCode = 31*hashCode + path.getCertificates().hashCode();
 
これにより、Object.hashCode の一般規約によって要求されるように、任意の 2 つの証明書パス path1path2 で、path1.equals(path2) であれば path1.hashCode()==path2.hashCode() となることが保証されます。

オーバーライド:
クラス Object 内の hashCode
戻り値:
この証明書パスにおけるハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
この証明書パスの文字列表現を返します。パスの各 CertificatetoString メソッドを呼び出します。

オーバーライド:
クラス Object 内の toString
戻り値:
この証明書パスの文字列表現

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 を生成できなかった場合

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。