Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::PKey::DSAクラス
クラスの継承リスト: OpenSSL::PKey::DSA < OpenSSL::PKey::PKey < Object < Kernel < BasicObject
DSA 公開鍵暗号クラス
実際には、DSA は署名のためのアルゴリズムであり、暗号化はできません。
以下は、data に署名し、署名をもとに data を検証する簡単な例です。
require "openssl" dsa512 = OpenSSL::PKey::DSA.new(512) data = 'hoge' sign = dsa512.sign('dss1', data) p dsa512.verify('dss1', sign, data)
generate(size) -> OpenSSL::PKey::DSA
[permalink][rdoc]generate(size) {|u,n| ... } -> OpenSSL::PKey::DSA
乱数により DSA 公開鍵と秘密鍵のペアを生成して、DSA オブジェクトとして 返します。
このメソッドを呼ぶ前に OpenSSL::Random の各モジュール関数に よって乱数が適切に初期化されている必要があります。
size は DSA パラメータの素数のビット数を指定します。最大 1024 まで 指定できます。通常 512 か 1024 を使います。
このメソッドにブロックが渡された場合には、鍵パラメータ生成の途中経過の 情報を引数としてブロックが呼び出されます。
DSA パラメータの生成には時間がかかるため、生成の途中経過を ユーザに表示したい場合にこの機能を使います。
new -> OpenSSL::PKey::DSA
[permalink][rdoc]new(size) -> OpenSSL::PKey::DSA
new(obj, pass=nil) -> OpenSSL::PKey::DSA
new(obj, pass=nil) {|flag| ... } -> OpenSSL::PKey::DSA
DSA オブジェクトを生成します。
引数なしの場合は空の DSA オブジェクトを返します。
第一引数に整数を指定した場合には、OpenSSL::PKey::DSA.generate により 公開鍵と秘密鍵のペアを生成し、それを返します。
それ以外の場合には、以下のようにして鍵データを読みこみ、DSA オブジェクト を生成します。
pass が指定された場合は、秘密鍵を pass を使って復号化します。
鍵データにパスフレーズが設定されているにもかかわらず、passが省略された場合は、 渡されたブロックを呼びだしてパスフレーズを要求します。ブロックの返り値を パスフレーズとみなして復号します。ブロックの引数は通常は false が渡されますが、 これはそのパスフレーズが秘密鍵の復号に使われることを意味します。 ブロックが渡されなかった場合にはターミナルに問い合わせをします。
export(cipher=nil, pass=nil) -> String
[permalink][rdoc]export(cipher=nil, pass=nil) {|flag| ... } -> String
to_pem(cipher=nil, pass=nil) -> String
to_pem(cipher=nil, pass=nil) {|flag| ... } -> String
to_s(cipher=nil, pass=nil) -> String
to_s(cipher=nil, pass=nil) {|flag| ... } -> String
鍵を PEM 形式で出力します。
cipher と pass が指定された場合、 秘密鍵を暗号 cipher OpenSSL::Cipher::Cipher とパスワード pass を使って暗号化します。
cipher を指定して pass を省略した場合は 渡されたブロックを呼びだしてパスフレーズを要求します。ブロックの返り値を パスフレーズとみなして暗号化します。 ブロックの引数は通常は true が渡されますが、 これはそのパスフレーズが秘密鍵の暗号化に使われることを意味します。 ブロックが渡されなかった場合にはターミナルに問い合わせをします。
公開鍵を出力する場合は cipher と pass は無視されます。
g -> OpenSSL::BN
[permalink][rdoc]DSA 鍵のパラメータ g を返します。
g は公開鍵、秘密鍵の両方に属する情報です。
g=(g)
[permalink][rdoc]DSA 鍵のパラメータ g を設定します。
通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。
p -> OpenSSL::BN
[permalink][rdoc]DSA 鍵のパラメータ p を返します。
p は公開鍵、秘密鍵の両方に属する情報です。
p=(p)
[permalink][rdoc]DSA 鍵のパラメータ p を設定します。
通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。
params -> {String => OpenSSL::BN}
[permalink][rdoc]鍵のパラメータを {パラメータ名 => その整数値} というハッシュで返します。
公開鍵における priv_key のように自身が持っていないパラメータは 0 がセットされます。
priv_key -> OpenSSL::BN
[permalink][rdoc]DSA 鍵の秘密鍵パラメータを返します。
秘密鍵はこの値と、 OpenSSL::PKey::DSA#p, OpenSSL::PKey::DSA#q, OpenSSL::PKey::DSA#g から構成されます。
priv_key=(private_key)
[permalink][rdoc]DSA 鍵の秘密鍵パラメータを設定します。
通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。
private? -> bool
[permalink][rdoc]自身が秘密鍵をもっている場合に true を返します。
pub_key -> OpenSSL::BN
[permalink][rdoc]DSA 鍵の公開鍵パラメータを返します。
公開鍵はこの値と、 OpenSSL::PKey::DSA#p, OpenSSL::PKey::DSA#q, OpenSSL::PKey::DSA#g から構成されます。
pub_key=(public_key)
[permalink][rdoc]DSA 鍵の公開鍵パラメータを設定します。
通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。
public? -> bool
[permalink][rdoc]自身が公開鍵をもっている場合に true を返します。
public_key -> OpenSSL::PKey::DSA
[permalink][rdoc]公開鍵を複製して DSA オブジェクトとして返します。
q -> OpenSSL::BN
[permalink][rdoc]DSA 鍵のパラメータ q を返します。
q は公開鍵、秘密鍵の両方に属する情報です。
q=(q)
[permalink][rdoc]DSA 鍵のパラメータ q を設定します。
通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。
syssign(data) -> String
[permalink][rdoc]自身で data に署名をし、 DER 形式の文字列で署名を返します。
data は適切なハッシュ関数で計算されたダイジェストであると仮定 しています。
通常は OpenSSL::PKey::PKey#sign を使い、署名をすべきです。
sysverify(data, sign) -> bool
[permalink][rdoc]署名 sign と自身の公開鍵で data を検証します。
検証に成功した場合は真を返します。
sign に OpenSSL::PKey::DSA#syssign が返す DER 形式の文字列 を渡さなければなりません。
data は適切なハッシュ関数で計算されたダイジェストであると仮定 しています。
to_der -> String
[permalink][rdoc]自身を DER 形式に変換します。
to_text -> String
[permalink][rdoc]鍵を人間が読める形式に変換します。