- 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); }
Javaプラットフォームの実装は、すべて次の標準の
CertificateFactory
タイプをサポートする必要があります。X.509
CertPath
符号化にも対応する必要があります。PKCS7
PkiPath
- 導入されたバージョン:
- 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
オブジェクトを生成し、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, String provider)
指定されたタイプの証明書ファクトリ・オブジェクトを返します。static CertificateFactory
getInstance(String type, Provider provider)
指定されたタイプの証明書ファクトリ・オブジェクトを返します。Provider
getProvider()
この証明書ファクトリのプロバイダを返します。String
getType()
この証明書ファクトリに関連した証明書タイプの名前を返します。
-
-
-
コンストラクタの詳細
-
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()
メソッド経由で取得できます。- 実装上の注意:
- JDKリファレンス実装では、
jdk.security.provider.preferred
Security
プロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
type
- 要求された証明書タイプの名前。 標準証明書型については、「Javaセキュリティ標準アルゴリズム名指定」のCertificateFactoryセクションを参照してください。- 戻り値:
- 指定されたタイプの証明書ファクトリ・オブジェクト
- 例外:
CertificateException
-Provider
が、指定された型のCertificateFactorySpi
実装をサポートしていない場合NullPointerException
-type
がnull
である場合- 関連項目:
Provider
-
getInstance
public static final CertificateFactory getInstance(String type, String provider) throws CertificateException, NoSuchProviderException
指定されたタイプの証明書ファクトリ・オブジェクトを返します。指定されたプロバイダのCertificateFactorySpi実装をカプセル化する新しいCertificateFactoryオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- パラメータ:
type
- 証明書タイプ。 標準証明書型については、「Javaセキュリティ標準アルゴリズム名指定」のCertificateFactoryセクションを参照してください。provider
- プロバイダ名。- 戻り値:
- 指定されたタイプの証明書ファクトリ・オブジェクト
- 例外:
CertificateException
- 指定されたアルゴリズムのCertificateFactorySpi
実装が、指定されたプロバイダから利用可能でない場合IllegalArgumentException
- プロバイダ名がnull
または空の場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException
-type
がnull
である場合- 関連項目:
Provider
-
getInstance
public static final CertificateFactory getInstance(String type, Provider provider) throws CertificateException
指定されたタイプの証明書ファクトリ・オブジェクトを返します。指定されたProviderオブジェクトのCertificateFactorySpi実装をカプセル化する新しいCertificateFactoryオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
- パラメータ:
type
- 証明書タイプ。 標準証明書型については、「Javaセキュリティ標準アルゴリズム名指定」のCertificateFactoryセクションを参照してください。provider
- プロバイダ。- 戻り値:
- 指定されたタイプの証明書ファクトリ・オブジェクト
- 例外:
CertificateException
- 指定されたアルゴリズムのCertificateFactorySpi
実装が、指定されたProvider
オブジェクトから使用できない場合IllegalArgumentException
-provider
がnull
の場合NullPointerException
-type
が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セキュリティ標準アルゴリズム名指定」の「CertPathエンコーディング」セクションを参照してください。返された
Iterator
をremove
メソッドで変更しようとすると、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セキュリティ標準アルゴリズム名指定」の「CertPathエンコーディング」セクションを参照してください。- パラメータ:
inStream
- データが含まれるInputStream
encoding
- データで使用される符号化- 戻り値:
InputStream
からのデータで初期化されたCertPath
- 例外:
CertificateException
- 復号化中に例外が発生した場合、または要求された符号化がサポートされていない場合- 導入されたバージョン:
- 1.4
-
generateCertPath
public final CertPath generateCertPath(List<? extends Certificate> certificates) throws CertificateException
CertPath
オブジェクトを生成し、Certificate
のList
で初期化します。提供される証明書は、
CertificateFactory
でサポートされているタイプである必要があります。 これらは、指定されたList
オブジェクトからコピーされます。- パラメータ:
certificates
-Certificate
のList
- 戻り値:
- 提供された証明書のリストで初期化された
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が構文解析されたあとでデータが続く場合は、CRLException
がスローされます。- パラメータ:
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.CRLオブジェクトのコレクション・ビュー。空の場合もある。
- 例外:
CRLException
- 構文解析エラーの場合。
-
-