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); }
Java プラットフォームの実装は、すべて次の標準の CertificateFactory
タイプをサポートする必要があります。
CertPath
符号化にも対応する必要があります。
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 オブジェクトを生成し、Certificate の List で初期化します。 |
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()
この証明書ファクトリに関連した証明書タイプの名前を返します。
|
protected CertificateFactory(CertificateFactorySpi certFacSpi, Provider provider, String type)
certFacSpi
- プロバイダの実装。provider
- プロバイダ。type
- 証明書タイプ。public static final CertificateFactory getInstance(String type) throws CertificateException
このメソッドは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。指定されたタイプをサポートする最初の Provider の CertificateFactorySpi 実装をカプセル化する新しい CertificateFactory オブジェクトが返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
type
- 要求された証明書タイプの名前。標準の証明書タイプについては、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの CertificateFactory のセクションを参照。CertificateException
- 指定されたタイプの CertificateFactorySpi 実装をサポートするプロバイダが存在しない場合。Provider
public static final CertificateFactory getInstance(String type, String provider) throws CertificateException, NoSuchProviderException
指定されたプロバイダの CertificateFactorySpi 実装をカプセル化する新しい CertificateFactory オブジェクトが返されます。指定したプロバイダは、セキュリティープロバイダリストに登録する必要があります。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
type
- 証明書タイプ。標準の証明書タイプについては、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの CertificateFactory のセクションを参照。provider
- プロバイダ名。CertificateException
- 指定されたプロバイダに指定されたアルゴリズムの CertificateFactorySpi の実装がない場合。NoSuchProviderException
- 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合。IllegalArgumentException
- プロバイダ名が null または空の場合。Provider
public static final CertificateFactory getInstance(String type, Provider provider) throws CertificateException
指定された Provider オブジェクトの CertificateFactorySpi 実装をカプセル化する新しい CertificateFactory オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。
type
- 証明書タイプ。標準の証明書タイプについては、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの CertificateFactory のセクションを参照。provider
- プロバイダ。CertificateException
- 指定された Provider オブジェクトに指定されたアルゴリズムの CertificateFactorySpi の実装がない場合。IllegalArgumentException
- provider
が null の場合。Provider
public final Provider getProvider()
public final String getType()
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
- 構文解析エラーの場合。public final Iterator<String> getCertPathEncodings()
CertPath
のエンコーディングの繰り返しを返します。繰り返しの最初はデフォルトのエンコーディングになります。標準の符号化名とその形式については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの CertPath 符号化のセクションを参照。
返された Iterator
を remove
メソッドで変更しようとすると、UnsupportedOperationException
がスローされます。
CertPath
符号化の名前 (String
) を反復する Iterator
public final CertPath generateCertPath(InputStream inStream) throws CertificateException
CertPath
オブジェクトを生成し、InputStream
である inStream から読み込まれたデータで初期化します。データはデフォルトの符号化がされていると仮定されます。デフォルトの符号化の名前は、getCertPathEncodings
メソッドで返される Iterator
の最初の要素になります。inStream
- データが含まれる InputStream
InputStream
からのデータで初期化された CertPath
CertificateException
- 復号化中に例外が発生した場合public final CertPath generateCertPath(InputStream inStream, String encoding) throws CertificateException
CertPath
オブジェクトを生成し、InputStream
である inStream から読み込まれたデータで初期化します。データは指定した符号化がされていると仮定されます。標準の符号化名とその形式については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの CertPath 符号化のセクションを参照。inStream
- データが含まれる InputStream
encoding
- データで使用される符号化InputStream
からのデータで初期化された CertPath
CertificateException
- 復号化中に例外が発生した場合、または要求された符号化がサポートされていない場合public final CertPath generateCertPath(List<? extends Certificate> certificates) throws CertificateException
CertPath
オブジェクトを生成し、Certificate
の List
で初期化します。
提供される証明書は、CertificateFactory
でサポートされているタイプである必要があります。これらは、指定された List
オブジェクトからコピーされます。
certificates
- Certificate
の List
CertPath
CertificateException
- 例外が発生する場合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
- 証明書を持つ入力ストリーム。CertificateException
- 構文解析エラーの場合。public final CRL generateCRL(InputStream inStream) throws CRLException
inStream
から読み込まれたデータで初期化します。
この証明書ファクトリによってサポートされている特殊な形式の CRL を利用するために、返された CRL オブジェクトを対応する CRL クラスに型キャストできます。たとえば、この証明書ファクトリが X.509 CRL を実装する場合、返された CRL オブジェクトを X509CRL
クラスに型キャストできます。
指定された入力ストリームが mark
および reset
をサポートしていない場合、このメソッドは入力ストリーム全体を使用します。そうでない場合、このメソッドが呼び出されるたびに CRL を 1 つ消費し、入力ストリームの読み込み位置は、固有の end-of-CRL マーカーのあとで次に使用可能なバイトに設定されます。固有の end-of-CRL マーカー (EOF 以外) が入力ストリームのデータに含まれず、CRL が構文解析されたあとでデータが続く場合は、CRLException
がスローされます。
inStream
- CRL データを持つ入力ストリーム。CRLException
- 構文解析エラーの場合。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 を持つ入力ストリーム。CRLException
- 構文解析エラーの場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.