singleton method OpenSSL::PKey::DSA.generate

generate(size) -> OpenSSL::PKey::DSA[permalink][rdoc][edit]
generate(size) {|u,n| ... } -> OpenSSL::PKey::DSA

乱数により DSA 公開鍵と秘密鍵のペアを生成して、DSA オブジェクトとして返します。

このメソッドを呼ぶ前に OpenSSL::Random の各モジュール関数によって乱数が適切に初期化されている必要があります。

size は DSA パラメータの素数のビット数を指定します。最大 1024 まで指定できます。通常 512 か 1024 を使います。

このメソッドにブロックが渡された場合には、鍵パラメータ生成の途中経過の情報を引数としてブロックが呼び出されます。

  • n個目の素数候補を生成した場合、u=0 でブロックが呼びだされる
  • 生成した素数候補が小さな素数で割りきれてしまった場合は u=1, n=-1 でブロックが呼びだされる
  • 生成した素数候補がn回目の素数テスト(Miller-Robin)に成功した 場合、u=1 でブロックが呼び出される
  • 適当な1つめの素数が見付かった場合は、u=2, n=0 と u=3, n=0 でブロックが呼び出される
  • もう1つ素数を見付けるために、上の1,2,3をもう一度繰り返す
  • 適当な2つめの素数が見付かった場合は、u=2, n=1 でブロックが 呼び出される
  • パラメータ g (generator) が見付かった場合には、 u=3, n=1 でブロックが呼び出される

DSA パラメータの生成には時間がかかるため、生成の途中経過をユーザに表示したい場合にこの機能を使います。