JavaTM Platform
Standard Ed. 6

java.security.cert
クラス CertificateFactory

java.lang.Object
  上位を拡張 java.security.cert.CertificateFactory

public class CertificateFactory
extends Object

証明書ファクトリの機能を定義します。証明書ファクトリは、証明書オブジェクト、証明書パス (CertPath) および証明書の取り消しリスト (CRL) オブジェクトを符号から生成するために使用します。

複数の証明書からなる符号化では、互いに関連性がないと思われる証明書のコレクションを解析する場合に、generateCertificates を使用します。そうでない場合は、CertPath (証明書チェーン) を生成して CertPathValidator で検証するときに generateCertPath を使用します。

X.509 の証明書ファクトリは、java.security.cert.X509Certificate のインスタンスである証明書、および java.security.cert.X509CRL のインスタンスである CRL を返します。

次の例は、Base64 で符号化された証明書を持つファイルを読み出します。 これらの証明書は、先頭が -----BEGIN CERTIFICATE----- によって区切られ、終端が -----END CERTIFICATE----- によって区切られます。generateCertificate の各呼び出しが 1 つの証明書だけを使用し、入力ストリームの読み出し位置がファイル内の次の証明書に置かれるように、FileInputStream (mark および reset をサポートしていない) を BufferedInputStream (これらのメソッドをサポート) に変換します。

 FileInputStream fis = new FileInputStream(filename);
 BufferedInputStream bis = new BufferedInputStream(fis);

 CertificateFactory cf = CertificateFactory.getInstance("X.509");

 while (bis.available() > 0) {
    Certificate cert = cf.generateCertificate(bis);
    System.out.println(cert.toString());
 }
 

次の例は、ファイル内に保存された PKCS#7 形式の認証応答を解析し、そこから証明書をすべて抽出します。

 FileInputStream fis = new FileInputStream(filename);
 CertificateFactory cf = CertificateFactory.getInstance("X.509");
 Collection c = cf.generateCertificates(fis);
 Iterator i = c.iterator();
 while (i.hasNext()) {
    Certificate cert = (Certificate)i.next();
    System.out.println(cert);
 }
 

導入されたバージョン:
1.2
関連項目:
Certificate, X509Certificate, CertPath, CRL, X509CRL

コンストラクタの概要
protected CertificateFactory(CertificateFactorySpi certFacSpi, Provider provider, String type)
          指定されたタイプの CertificateFactory オブジェクトを作成し、指定されたプロバイダの実装 (SPI オブジェクト) をそこにカプセル化します。
 
メソッドの概要
 Certificate generateCertificate(InputStream inStream)
          証明書オブジェクトを生成し、入力ストリーム inStream から読み出されたデータを使ってその証明書オブジェクトを初期化します。
 Collection<? extends Certificate> generateCertificates(InputStream inStream)
          指定された入力ストリーム inStream から読み出された証明書のコレクションビューを返します。
 CertPath generateCertPath(InputStream inStream)
          CertPath オブジェクトを生成し、InputStream である inStream から読み込まれたデータで初期化します。
 CertPath generateCertPath(InputStream inStream, String encoding)
          CertPath オブジェクトを生成し、InputStream である inStream から読み込まれたデータで初期化します。
 CertPath generateCertPath(List<? extends Certificate> certificates)
          CertPath オブジェクトを生成し、CertificateList で初期化します。
 CRL generateCRL(InputStream inStream)
          証明書の取り消しリスト (CRL) オブジェクトを生成し、入力ストリーム inStream から読み出されたデータを使って初期化します。
 Collection<? extends CRL> generateCRLs(InputStream inStream)
          指定された入力ストリーム inStream から読み出された CRL のコレクションビューを返します。
 Iterator<String> getCertPathEncodings()
          この証明書ファクトリでサポートする CertPath の符号化の繰り返しを返します。
static CertificateFactory getInstance(String type)
          指定されたタイプの証明書を実装する証明書ファクトリオブジェクトを返します。
static CertificateFactory getInstance(String type, Provider provider)
          指定されたタイプの証明書ファクトリオブジェクトを返します。
static CertificateFactory getInstance(String type, String provider)
          指定されたタイプの証明書ファクトリオブジェクトを返します。
 Provider getProvider()
          この証明書ファクトリのプロバイダを返します。
 String getType()
          この証明書ファクトリに関連した証明書タイプの名前を返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

CertificateFactory

protected CertificateFactory(CertificateFactorySpi certFacSpi,
                             Provider provider,
                             String type)
指定されたタイプの CertificateFactory オブジェクトを作成し、指定されたプロバイダの実装 (SPI オブジェクト) をそこにカプセル化します。

パラメータ:
certFacSpi - プロバイダの実装
provider - プロバイダ
type - 証明書タイプ
メソッドの詳細

getInstance

public static final CertificateFactory getInstance(String type)
                                            throws CertificateException
指定されたタイプの証明書を実装する証明書ファクトリオブジェクトを返します。

このメソッドは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。指定されたタイプをサポートする最初の Provider の CertificateFactorySpi 実装をカプセル化する新しい CertificateFactory オブジェクトが返されます。

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。

パラメータ:
type - 要求された証明書タイプの名前。 標準の証明書タイプの詳細は、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
戻り値:
指定されたタイプの証明書ファクトリオブジェクト
例外:
CertificateException - 指定されたタイプの CertificateFactorySpi 実装をサポートする Provider が存在しない場合
関連項目:
Provider

getInstance

public static final CertificateFactory getInstance(String type,
                                                   String provider)
                                            throws CertificateException,
                                                   NoSuchProviderException
指定されたタイプの証明書ファクトリオブジェクトを返します。

指定されたプロバイダの CertificateFactorySpi 実装をカプセル化する新しい CertificateFactory オブジェクトが返されます。指定したプロバイダは、セキュリティープロバイダリストに登録する必要があります。

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。

パラメータ:
type - 証明書タイプ 標準の証明書タイプの詳細は、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダ名
戻り値:
指定されたタイプの証明書ファクトリオブジェクト
例外:
CertificateException - 指定されたプロバイダに指定されたアルゴリズムの CertificateFactorySpi 実装がない場合
NoSuchProviderException - 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合
IllegalArgumentException - プロバイダの名前が null か空の場合
関連項目:
Provider

getInstance

public static final CertificateFactory getInstance(String type,
                                                   Provider provider)
                                            throws CertificateException
指定されたタイプの証明書ファクトリオブジェクトを返します。

指定された Provider オブジェクトの CertificateFactorySpi 実装をカプセル化する新しい CertificateFactory オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。

パラメータ:
type - 証明書タイプ 標準の証明書タイプの詳細は、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダ
戻り値:
指定されたタイプの証明書ファクトリオブジェクト
例外:
CertificateException - 指定された Provider オブジェクトに指定されたアルゴリズムの CertificateFactorySpi 実装がない場合
IllegalArgumentException - provider が null の場合
導入されたバージョン:
1.4
関連項目:
Provider

getProvider

public final Provider getProvider()
この証明書ファクトリのプロバイダを返します。

戻り値:
この証明書ファクトリのプロバイダ

getType

public final String getType()
この証明書ファクトリに関連した証明書タイプの名前を返します。

戻り値:
この証明書ファクトリに関連付けられた証明書タイプの名前

generateCertificate

public final Certificate generateCertificate(InputStream inStream)
                                      throws CertificateException
証明書オブジェクトを生成し、入力ストリーム inStream から読み出されたデータを使ってその証明書オブジェクトを初期化します。

この証明書ファクトリによってサポートされている特殊形式の証明書を利用するために、返された証明書オブジェクトを対応する証明書クラスに型キャストできます。たとえば、この証明書ファクトリが X.509 証明書を実装する場合、返された証明書オブジェクトを X509Certificate クラスに型キャストできます。

X.509 証明書の証明書ファクトリの場合は、inStream で提供される証明書は DER で符号化される必要があり、バイナリまたはプリント可能 (Base64) な符号で提供されることもあります。証明書が Base64 の符号で提供された場合、先頭は -----BEGIN CERTIFICATE----- によって区切られ、終端は -----END CERTIFICATE----- によって区切られる必要があります。

指定された入力ストリームが mark および reset をサポートしていない場合、このメソッドは入力ストリーム全体を使用します。そうでない場合、このメソッドが呼び出されるたびに証明書を 1 つ消費し、入力ストリームの読み込み位置は、固有の end-of-certificate マーカーのあとで次に使用可能なバイトに設定されます。固有の end-of-certificate マーカー (EOF 以外) が入力ストリームのデータに含まれず、証明書が構文解析されたあとでデータが続く場合は、CertificateException がスローされます。

パラメータ:
inStream - 証明書データを持つ入力ストリーム
戻り値:
入力ストリームのデータを使って初期化された証明書オブジェクト
例外:
CertificateException - 構文解析エラーの場合

getCertPathEncodings

public final Iterator<String> getCertPathEncodings()
この証明書ファクトリでサポートする CertPath の符号化の繰り返しを返します。 繰り返しの最初はデフォルトの符号化になります。標準の符号化名とその形式については、「Java Certification Path API プログラマーズガイド」 の付録 A を参照してください。  

返された Iteratorremove メソッドで変更しようとすると、UnsupportedOperationException がスローされます。

戻り値:
サポートされる CertPath の符号化の名前 (String) を反復する Iterator
導入されたバージョン:
1.4

generateCertPath

public final CertPath generateCertPath(InputStream inStream)
                                throws CertificateException
CertPath オブジェクトを生成し、InputStream である inStream から読み込まれたデータで初期化します。データはデフォルトの符号化がされていると仮定されます。デフォルトの符号化の名前は、getCertPathEncodings メソッドで返される Iterator の最初の要素になります。

パラメータ:
inStream - データが含まれる InputStream
戻り値:
InputStream からのデータで初期化された CertPath
例外:
CertificateException - 復号化中に例外が発生した場合
導入されたバージョン:
1.4

generateCertPath

public final CertPath generateCertPath(InputStream inStream,
                                       String encoding)
                                throws CertificateException
CertPath オブジェクトを生成し、InputStream である inStream から読み込まれたデータで初期化します。データは指定した符号化がされていると仮定されます。標準の符号化名とその形式については、「Java Certification Path API プログラマーズガイド」 の付録 A を参照してください。

パラメータ:
inStream - データが含まれる InputStream
encoding - データで使用される符号化
戻り値:
InputStream からのデータで初期化された CertPath
例外:
CertificateException - 復号化中に例外が発生した場合、または指定した符号化がサポートされていない場合
導入されたバージョン:
1.4

generateCertPath

public final CertPath generateCertPath(List<? extends Certificate> certificates)
                                throws CertificateException
CertPath オブジェクトを生成し、CertificateList で初期化します。

提供される証明書は、CertificateFactory でサポートされている種類である必要があります。これらは、指定された List オブジェクトからコピーされます。

パラメータ:
certificates - CertificateList
戻り値:
提供された証明書のリストで初期化された CertPath
例外:
CertificateException - 例外が発生する場合
導入されたバージョン:
1.4

generateCertificates

public final Collection<? extends Certificate> generateCertificates(InputStream inStream)
                                                             throws CertificateException
指定された入力ストリーム inStream から読み出された証明書のコレクションビューを返します。コレクションビューは空の場合もあります。

この証明書ファクトリによってサポートされている特殊な形式の証明書を利用するために、返されたコレクションビューの各要素を対応する証明書クラスに型キャストできます。たとえば、この証明書ファクトリが X.509 証明書を実装する場合、返されたコレクション内の要素を X509Certificate クラスに型キャストできます。

X.509 証明書で使う証明書ファクトリの場合、inStream には、generateCertificate で説明されている形式の、DER で符号化された一連の証明書が格納されます。また、inStream には PKCS#7 証明書チェーンが格納されます。これは PKCS#7 SignedData オブジェクトであり、上位フィールドは certificates だけです。特に、署名および内容は無視されます。この形式の場合、複数の証明書を 1 回でダウンロードできます。証明書がない場合は、空のコレクションが返されます。

指定された入力ストリームが mark および reset をサポートしていない場合、このメソッドは入力ストリーム全体を使用します。

パラメータ:
inStream - 証明書を持つ入力ストリーム
戻り値:
入力ストリームからのデータを使って初期化された java.security.cert.Certificate オブジェクトのコレクションビュー。空の場合もある
例外:
CertificateException - 構文解析エラーの場合

generateCRL

public final CRL generateCRL(InputStream inStream)
                      throws CRLException
証明書の取り消しリスト (CRL) オブジェクトを生成し、入力ストリーム inStream から読み出されたデータを使って初期化します。

この証明書ファクトリによってサポートされている特殊な形式の CRL を利用するために、返された CRL オブジェクトを対応する CRL クラスに型キャストできます。たとえば、この証明書ファクトリが X.509 CRL を実装する場合、返された CRL オブジェクトを X509CRL クラスに型キャストできます。

指定された入力ストリームが mark および reset をサポートしていない場合、このメソッドは入力ストリーム全体を使用します。そうでない場合、このメソッドが呼び出されるたびに CRL を 1 つ消費し、入力ストリームの読み込み位置は、固有の end-of-CRL マーカーのあとで次に使用可能なバイトに設定されます。固有の end-of-CRL マーカー (EOF 以外) が入力ストリームのデータに含まれず、CRL が構文解析されたあとでデータが続く場合は、CertificateException がスローされます。

パラメータ:
inStream - CRL データを持つ入力ストリーム
戻り値:
入力ストリームのデータを使って初期化された CRL オブジェクト
例外:
CRLException - 構文解析エラーの場合

generateCRLs

public final Collection<? extends CRL> generateCRLs(InputStream inStream)
                                             throws CRLException
指定された入力ストリーム inStream から読み出された CRL のコレクションビューを返します。コレクションビューは空の場合もあります。

この証明書ファクトリによってサポートされている特殊な形式の CRL を利用するために、返されたコレクションビューの各要素を対応する CRL クラスに型キャストできます。たとえば、この証明書ファクトリが X.509 CRL を実装する場合、返されたコレクション内の要素を X509CRL クラスに型キャストできます。

X.509 CRL の証明書ファクトリの場合は、inStream には、DER で符号化された一連の CRL が格納されます。また、inStream には PKCS#7 CRL セットが格納されます。これは PKCS#7 SignedData オブジェクトで、上位フィールドは crls だけです。特に、署名および内容は無視されます。この形式の場合、複数の CRL を 1 回でダウンロードできます。CRL がない場合は、空のコレクションが返されます。

指定された入力ストリームが mark および reset をサポートしていない場合、このメソッドは入力ストリーム全体を使用します。

パラメータ:
inStream - CRL を持つ入力ストリーム
戻り値:
入力ストリームからのデータを使って初期化された java.security.cert.Certificate オブジェクトのコレクションビュー。空の場合もある
例外:
CRLException - 構文解析エラーの場合

JavaTM Platform
Standard Ed. 6

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

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