Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::PKey::DSAクラス

class 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 new
インスタンスメソッド
export to_pem to_s g g= p p= params priv_key priv_key= private? pub_key pub_key= public? public_key q q= syssign sysverify to_der to_text

特異メソッド

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 が渡されますが、 これはそのパスフレーズが秘密鍵の復号に使われることを意味します。 ブロックが渡されなかった場合にはターミナルに問い合わせをします。

[PARAM] size:
鍵を生成する時の素数のビット数
[PARAM] obj:
鍵データ
[PARAM] pass:
鍵データに設定したパスフレーズ
[EXCEPTION] OpenSSL::PKey::RSAError:
鍵の読み込みに失敗した場合に発生します。

インスタンスメソッド

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 を設定します。

通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。

[PARAM] g:
設定する整数値
p -> OpenSSL::BN[permalink][rdoc]

DSA 鍵のパラメータ p を返します。

p は公開鍵、秘密鍵の両方に属する情報です。

p=(p)[permalink][rdoc]

DSA 鍵のパラメータ p を設定します。

通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。

[PARAM] 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 鍵の秘密鍵パラメータを設定します。

通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。

[PARAM] private_key:
設定する整数値
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 鍵の公開鍵パラメータを設定します。

通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。

[PARAM] public_key:
設定する整数値
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 を設定します。

通常このメソッドで値を変更することはありません。 よく考えて必要な場合のみ利用してください。

[PARAM] q:
設定する整数値
syssign(data) -> String[permalink][rdoc]

自身で data に署名をし、 DER 形式の文字列で署名を返します。

data は適切なハッシュ関数で計算されたダイジェストであると仮定 しています。

通常は OpenSSL::PKey::PKey#sign を使い、署名をすべきです。

[PARAM] data:
署名の対象
sysverify(data, sign) -> bool[permalink][rdoc]

署名 sign と自身の公開鍵で data を検証します。

検証に成功した場合は真を返します。

sign に OpenSSL::PKey::DSA#syssign が返す DER 形式の文字列 を渡さなければなりません。

data は適切なハッシュ関数で計算されたダイジェストであると仮定 しています。

[PARAM] data:
検証対象の文字列
[PARAM] sign:
署名文字列
[EXCEPTION] OpenSSL::PKey::DSAError:
検証時にエラーが起きた場合に発生します。 正しい署名でなかった場合など、検証に失敗した場合はこの 例外は発生しないことに注意してください
to_der -> String[permalink][rdoc]

自身を DER 形式に変換します。

to_text -> String[permalink][rdoc]

鍵を人間が読める形式に変換します。