クラス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);
 }
 

Javaプラットフォー の実装は、すべて次の標準のCertificateFactoryタイプをサポートする必要があります。

  • X.509
また、次の標準のCertPath符号化にも対応する必要があります。
  • PKCS7
  • PkiPath
タイプおよびエンコーディングについては、Javaセキュリティ標準アルゴリズ 名仕様の「CertificateFactoryセクション」および「CertPathエンコーディング」セクションを参照してく さい。 サポートされているその他のタイプや符号化については、実装のリリース・ノートを参照してく さい。

導入されたバージョン:
1.2
関連 目:
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    指定されたタイプのCertificateFactoryオブジェクトを作成し、指定されたプロバイダの実装(SPIオブジェクト)をそこにカプセル化します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    証明書オブジェクトを生成し、入力ストリー inStreamから読み込まれたデータで初期化します。
    final Collection<? extends Certificate>
    指定された入力ストリー inStreamから読み込まれた証明書のコレクション・ビュー(空の 合もある)を返します。
    final CertPath
    CertPathオブジェクトを生成し、InputStreamであるinStreamから読み込まれたデータで初期化します。
    final CertPath
    generateCertPath(InputStream inStream, String encoding)
    CertPathオブジェクトを生成し、InputStreamであるinStreamから読み込まれたデータで初期化します。
    final CertPath
    generateCertPath(List<? extends Certificate> certificates)
    CertPathオブジェクトを生成し、CertificateListで初期化します。
    final CRL
    証明書の取消しリスト(CRL)オブジェクトを生成し、入力ストリー inStreamから読み込まれたデータで初期化します。
    final Collection<? extends CRL>
    指定された入力ストリー inStreamから読み込まれたCRLのコレクション・ビュー(空の 合もある)を返します。
    この証明書ファクトリでサポートするCertPathのエンコーディングの繰返しを返します。繰返しの最初はデフォルトのエンコーディングになります。
    static final CertificateFactory
    指定されたタイプの証明書を実装する証明書ファクトリ・オブジェクトを返します。
    static final CertificateFactory
    getInstance(String type, String provider)
    指定されたタイプの証明書ファクトリ・オブジェクトを返します。
    static final CertificateFactory
    getInstance(String type, Provider provider)
    指定されたタイプの証明書ファクトリ・オブジェクトを返します。
    final Provider
    この証明書ファクトリのプロバイダを返します。
    final String
    この証明書ファクトリに関連した証明書タイプの名前を返します。

    クラス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()メソッド経由で取得できます。

      実装上のノート:
      JDKリファレンス実装では、さらにjdk.security.provider.preferred Securityプロパティを使用して、指定したアルゴリズ の優先プロバイダ 序を決定します。 これは、Security.getProviders()によって返されるプロバイダの 序とは異なる 合があります。
      パラメータ:
      type - 要求された証明書タイプの名前。 標準証明書タイプの詳細は、「Javaセキュリティ標準アルゴリズ 名仕様」のCertificateFactoryの を参照してく さい。
      戻り値:
      指定されたタイプの証明書ファクトリ・オブジェクト
      スロー:
      CertificateException - Providerが、指定された型のCertificateFactorySpi実装をサポートしていない 合
      NullPointerException - typenullである 合
      関連 目:
    • 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 - typenullである 合
      関連 目:
    • getInstance

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

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

      パラメータ:
      type - 証明書タイプ。 標準証明書タイプの詳細は、「Javaセキュリティ標準アルゴリズ 名仕様」のCertificateFactoryの を参照してく さい。
      provider - プロバイダ
      戻り値:
      指定されたタイプの証明書ファクトリ・オブジェクト
      スロー:
      CertificateException - 指定されたアルゴリズ のCertificateFactorySpi実装が、指定されたProviderオブジェクトから使用できない 合
      IllegalArgumentException - providernullの 合
      NullPointerException - typenullである 合
      導入されたバージョン:
      1.4
      関連 目:
    • 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エンコーディング」の を参照してく さい。

      返された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セキュリティ標準アルゴリズ 名仕様」の「CertPathエンコーディング」の を参照してく さい。
      パラメータ:
      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が構文解析されたあとでデータが続く 合は、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 - 構文解析エラーの 合。