モジュール java.base
パッケージ java.security

クラスKeyPairGenerator

java.lang.Object
java.security.KeyPairGeneratorSpi
java.security.KeyPairGenerator

public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
KeyPairGeneratorクラスは、公開キーと秘密キーのペアを生成するために使用されます。 キー・ペア・ジェネレータは、getInstanceファクトリ・メソッド(指定されたクラスのインスタンスを返すstaticメソッド)を使用して構築されます。

特定のアルゴリズムに対応するキー・ペア・ジェネレータは、このアルゴリズムで使用される公開キーおよび非公開キーのペアを作成します。 また、アルゴリズム固有型のパラメータを生成された各キーに関連付けます。

キーのペアの生成方法には、アルゴリズム独立型とアルゴリズム固有型の2つがあります。 この2つの唯一の相違点は、オブジェクトの初期化にあります。

  • アルゴリズムに依存しない初期化

    すべてのキー・ジェネレータは、キー・サイズおよび乱数発生の元の概念を共有します。 キー・サイズの解釈はアルゴリズムによって異なります(DSAアルゴリズムの場合、サイズはビットで表したモジュラスの長さに対応するなど)。 このKeyPairGeneratorクラスには、これら2つの汎用共有型の引数を取るinitializeメソッドがあります。 また、引数にkeysizeだけをとり、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用するinitializeメソッドもあります。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

    上記のアルゴリズムに依存しないinitializeメソッドを呼び出した場合、パラメータが指定されないため、それぞれのキーに関連したアルゴリズム固有のパラメータが存在する場合、これをどのように扱うかはプロバイダに任されます。

    アルゴリズムがDSAアルゴリズムで、キー・サイズ(モジュラス・サイズ)が512、768、1024または2048の場合、Sunプロバイダは、pqおよびgパラメータに事前計算された値のセットを使用します。 モジュラスのサイズが上記の値の1つでない場合は、Sunプロバイダは、新しいパラメータのセットを作成します。 他のプロバイダには、前述のモジュラス・サイズ以上のパラメータ・セットが事前に計算されている場合があります。 また、事前に計算されたパラメータがなく、常に新しいパラメータ・セットを作成するプロバイダが存在する可能性もあります。

  • アルゴリズム固有の初期化

    アルゴリズム固有のパラメータのセットがすでに存在する状況では(DSAのコミュニティ・パラメータなど)、AlgorithmParameterSpec引数を取るinitializeメソッドが2つあります。 1つはまた、SecureRandom引数を持ち、もう1つは、ランダム性のソースとして最も優先度の高いインストールされたプロバイダのSecureRandom実装を使用します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

クライアントがKeyPairGenerator (initializeメソッドへのコールを介して)を明示的に初期化しない場合、各プロバイダは(とドキュメント)をデフォルトの初期化に指定する必要があります。 JDKプロバイダで使用されるKeyPairGeneratorのデフォルトの詳細は、「JDKプロバイダ」ドキュメントの「キー・サイズの制限」セクションを参照してください。 ただし、デフォルトはプロバイダごとに異なる場合があります。 また、プロバイダのデフォルト値は、将来のバージョンで変更される可能性があります。 そのため、プロバイダ固有のデフォルトに依存するかわりに、KeyPairGeneratorを明示的に初期化することをお薦めします。

このクラスは、歴史的な事情からKeyPairGeneratorSpiクラスから拡張された抽象クラスになっていることに注意してください。 アプリケーションの開発者は、このKeyPairGeneratorクラスで定義されたメソッドだけに配慮してください。スーパー・クラスのすべてのメソッドは、キー・ペア・ジェネレータの独自の実装を提供する必要がある暗号サービス・プロバイダで使用されることを想定しています。

Javaプラットフォームの実装は、すべて次の標準のKeyPairGeneratorアルゴリズムとカッコ内のキー・サイズをサポートする必要があります。

  • DiffieHellman (1024, 2048, 4096)
  • DSA (1024, 2048)
  • RSA (1024, 2048, 4096)
これらのアルゴリズムについては、Javaセキュリティ標準アルゴリズム名仕様の「KeyPairGeneratorセクション」を参照してください。 サポートされているその他のアルゴリズムについては、実装のリリース・ドキュメントを参照してください。

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

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    指定されたアルゴリズムのKeyPairGeneratorオブジェクトを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    キー・ペアを生成します。
    final KeyPair
    キー・ペアを生成します。
    このキー・ペア・ジェネレータのアルゴリズムの標準名を返します。
    getInstance(String algorithm)
    指定されたアルゴリズムの公開/秘密キーのペアを生成するKeyPairGeneratorオブジェクトを返します。
    getInstance(String algorithm, String provider)
    指定されたアルゴリズムの公開/秘密キーのペアを生成するKeyPairGeneratorオブジェクトを返します。
    getInstance(String algorithm, Provider provider)
    指定されたアルゴリズムの公開/秘密キーのペアを生成するKeyPairGeneratorオブジェクトを返します。
    final Provider
    このキー・ペア・ジェネレータ・オブジェクトのプロバイダを返します。
    void
    initialize(int keysize)
    任意のキーのサイズに対するキー・ペア・ジェネレータを初期化します。デフォルトのパラメータ・セットと、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用します。
    void
    initialize(int keysize, SecureRandom random)
    任意のキーのサイズに対するキー・ペア・ジェネレータを初期化します。指定された乱数発生の元と、デフォルトのパラメータ・セットを使用します。
    void
    指定されたパラメータのセットと、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用して、キー・ペア・ジェネレータを初期化します。
    void
    指定されたパラメータ・セットと乱数発生の元を使ってキー・ペア・ジェネレータを初期化します。

    クラスjava.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • KeyPairGenerator

      protected KeyPairGenerator(String algorithm)
      指定されたアルゴリズムのKeyPairGeneratorオブジェクトを作成します。
      パラメータ:
      algorithm - アルゴリズムの標準名を表す文字列。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyPairGeneratorの項を参照してください。
  • メソッドの詳細

    • getAlgorithm

      public String getAlgorithm()
      このキー・ペア・ジェネレータのアルゴリズムの標準名を返します。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyPairGeneratorの項を参照してください。
      戻り値:
      アルゴリズムの標準名を表す文字列。
    • getInstance

      public static KeyPairGenerator getInstance(String algorithm) throws NoSuchAlgorithmException
      指定されたアルゴリズムの公開/秘密キーのペアを生成するKeyPairGeneratorオブジェクトを返します。

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

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

      実装上のノート:
      JDKリファレンス実装では、さらにjdk.security.provider.preferred Securityプロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
      パラメータ:
      algorithm - アルゴリズムの標準名を表す文字列。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyPairGeneratorの項を参照してください。
      戻り値:
      新しいKeyPairGeneratorオブジェクト
      例外:
      NoSuchAlgorithmException - Providerが、指定されたアルゴリズムのKeyPairGeneratorSpi実装をサポートしていない場合
      NullPointerException - algorithmnullである場合
      関連項目:
    • getInstance

      public static KeyPairGenerator getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
      指定されたアルゴリズムの公開/秘密キーのペアを生成するKeyPairGeneratorオブジェクトを返します。

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

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

      パラメータ:
      algorithm - アルゴリズムの標準名を表す文字列。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyPairGeneratorの項を参照してください。
      provider - プロバイダ名の文字列名。
      戻り値:
      新しいKeyPairGeneratorオブジェクト
      例外:
      IllegalArgumentException - プロバイダ名がnullまたは空の場合
      NoSuchAlgorithmException - 指定されたアルゴリズムのKeyPairGeneratorSpi実装が、指定されたプロバイダから利用可能でない場合
      NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
      NullPointerException - algorithmnullである場合
      関連項目:
    • getInstance

      public static KeyPairGenerator getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
      指定されたアルゴリズムの公開/秘密キーのペアを生成するKeyPairGeneratorオブジェクトを返します。

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

      パラメータ:
      algorithm - アルゴリズムの標準名を表す文字列。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyPairGeneratorの項を参照してください。
      provider - プロバイダ
      戻り値:
      新しいKeyPairGeneratorオブジェクト
      例外:
      IllegalArgumentException - 指定されたプロバイダがnullの場合
      NoSuchAlgorithmException - 指定されたアルゴリズムのKeyPairGeneratorSpi実装が、指定されたProviderオブジェクトから使用できない場合
      NullPointerException - algorithmnullである場合
      導入されたバージョン:
      1.4
      関連項目:
    • getProvider

      public final Provider getProvider()
      このキー・ペア・ジェネレータ・オブジェクトのプロバイダを返します。
      戻り値:
      このキー・ペア・ジェネレータ・オブジェクトのプロバイダ。
    • initialize

      public void initialize(int keysize)
      任意のキーのサイズに対するキー・ペア・ジェネレータを初期化します。デフォルトのパラメータ・セットと、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。
      パラメータ:
      keysize - キー・サイズ。 モジュラスの長さのような、ビット長で指定されたアルゴリズムに固有のメトリック。
      例外:
      InvalidParameterException - keysizeがこのKeyPairGeneratorオブジェクトでサポートされていない場合。
    • initialize

      public void initialize(int keysize, SecureRandom random)
      任意のキーのサイズに対するキー・ペア・ジェネレータを初期化します。指定された乱数発生の元と、デフォルトのパラメータ・セットを使用します。
      定義:
      initialize、クラスKeyPairGeneratorSpi
      パラメータ:
      keysize - キー・サイズ。 モジュラスの長さのような、ビット長で指定されたアルゴリズムに固有のメトリック。
      random - 乱数発生の元。
      例外:
      InvalidParameterException - keysizeがこのKeyPairGeneratorオブジェクトでサポートされていない場合。
      導入されたバージョン:
      1.2
    • initialize

      public void initialize(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
      指定されたパラメータのセットと、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用して、キー・ペア・ジェネレータを初期化します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

      この具象メソッドは、事前に定義されたこの抽象クラスに追加されたものです。 このメソッドは、KeyPairGeneratorSpiのinitializeメソッドを呼び出します。メソッドの呼出しの際には、引数としてparamsと乱数発生の元(インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダから取得。プロバイダが乱数発生の元を提供しない場合は、システムが提供するもの)を渡します。 このinitializeメソッドは、プロバイダによってオーバーライドされない場合、常にUnsupportedOperationExceptionをスローします。

      パラメータ:
      params - キーを生成するためのパラメータ・セット。
      例外:
      InvalidAlgorithmParameterException - 指定されたパラメータがこのキー・ペア・ジェネレータに不適切な場合。
      導入されたバージョン:
      1.2
    • initialize

      public void initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
      指定されたパラメータ・セットと乱数発生の元を使ってキー・ペア・ジェネレータを初期化します。

      この具象メソッドは、事前に定義されたこの抽象クラスに追加されたものです。 このメソッドは、paramsrandomを渡して、KeyPairGeneratorSpiクラスのinitializeメソッドを呼び出します。 このinitializeメソッドは、プロバイダによってオーバーライドされない場合、常にUnsupportedOperationExceptionをスローします。

      オーバーライド:
      initialize、クラスKeyPairGeneratorSpi
      パラメータ:
      params - キーを生成するためのパラメータ・セット。
      random - 乱数発生の元。
      例外:
      InvalidAlgorithmParameterException - 指定されたパラメータがこのキー・ペア・ジェネレータに不適切な場合。
      導入されたバージョン:
      1.2
    • genKeyPair

      public final KeyPair genKeyPair()
      キー・ペアを生成します。

      このKeyPairGeneratorが明示的に初期化されていない場合、プロバイダ固有のデフォルトが、生成されたキーのサイズおよびその他の(algorithm-specific)値に使用されます。

      これは呼び出されるたびに、新しいキー・ペアを生成します。

      このメソッドは、機能的にはgenerateKeyPairと同等です。

      戻り値:
      生成されたキー・ペア
      導入されたバージョン:
      1.2
    • generateKeyPair

      public KeyPair generateKeyPair()
      キー・ペアを生成します。

      このKeyPairGeneratorが明示的に初期化されていない場合、プロバイダ固有のデフォルトが、生成されたキーのサイズおよびその他の(algorithm-specific)値に使用されます。

      これは呼び出されるたびに、新しいキー・ペアを生成します。

      このメソッドは、機能的にはgenKeyPairと同等です。

      定義:
      generateKeyPair、クラスKeyPairGeneratorSpi
      戻り値:
      生成されたキー・ペア