このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 3.0 リファレンスマニュアル

class OpenSSL::PKey::PKey

[edit]

要約

公開鍵暗号のための抽象クラスです。

以下のサブクラスを持ちます。

例
require "openssl"
# 署名用の鍵を新規作成
dsa512 = OpenSSL::PKey::DSA.new(512)
data = 'hoge'
# 署名
sign = dsa512.sign("dss1", data)
# 署名の検証
p dsa512.verify(dss1, sign, data)

目次

インスタンスメソッド

インスタンスメソッド

oid -> StringRuby 3.0 から[permalink][rdoc][edit]

self に関連付けられた OID のショートネームを返します。

require "openssl"
rsa_key = OpenSSL::PKey::RSA.generate(2048)
p rsa_key.oid # => "rsaEncryption"
private_to_der -> StringRuby 3.0 から[permalink][rdoc][edit]
private_to_der(cipher, password) -> String

秘密鍵を DER 形式の PKCS #8 形式にシリアライズします。

引数なしで呼び出した場合は、暗号化されていない PKCS #8 PrivateKeyInfo 形式を使います。cipher と password を指定して呼び出した場合は、PBES2 暗号化方式を使った PKCS #8 EncryptedPrivateKeyInfo 形式を使います。

[PARAM] cipher:
秘密鍵を暗号化する暗号アルゴリズムの名前、または OpenSSL::Cipher オブジェクト
[PARAM] password:
暗号化に使うパスワード

[SEE_ALSO] OpenSSL::PKey::PKey#private_to_pem

private_to_pem -> StringRuby 3.0 から[permalink][rdoc][edit]
private_to_pem(cipher, password) -> String

秘密鍵を PEM 形式の PKCS #8 形式にシリアライズします。

暗号化されていない場合は "-----BEGIN PRIVATE KEY-----" で、暗号化されている場合は "-----BEGIN ENCRYPTED PRIVATE KEY-----" で始まる PEM データになります。

詳細は OpenSSL::PKey::PKey#private_to_der を参照してください。

[PARAM] cipher:
OpenSSL::PKey::PKey#private_to_der を参照してください
[PARAM] password:
OpenSSL::PKey::PKey#private_to_der を参照してください

[SEE_ALSO] OpenSSL::PKey::PKey#private_to_der

public_to_der -> StringRuby 3.0 から[permalink][rdoc][edit]

公開鍵を DER 形式の X.509 SubjectPublicKeyInfo 形式にシリアライズします。

[EXCEPTION] OpenSSL::PKey::PKeyError:
公開鍵やパラメータの情報が無い場合などに発生します
public_to_pem -> StringRuby 3.0 から[permalink][rdoc][edit]

公開鍵を PEM 形式の X.509 SubjectPublicKeyInfo 形式にシリアライズします。

PEM データは "-----BEGIN PUBLIC KEY-----" で始まります。

[EXCEPTION] OpenSSL::PKey::PKeyError:
公開鍵やパラメータの情報が無い場合などに発生します
sign(digest, data) -> String[permalink][rdoc][edit]

秘密鍵で data に署名し、署名の文字列を返します。

digest は利用するハッシュ関数の名前を "sha256" や "md5" といった文字列で指定します。

DSA で署名をする場合はハッシュ関数には "dss1" を指定してください。

[PARAM] digest:
利用するハッシュ関数の名前
[PARAM] data:
署名する文字列
[EXCEPTION] OpenSSL::PKey::PKeyError:
署名時にエラーが起きた場合に発生します
verify(digest, sign, data) -> bool[permalink][rdoc][edit]

data を秘密鍵で署名したその署名文字列が sign であることを公開鍵を使って検証し、検証に成功すれば true を返します。

digest は利用するハッシュ関数の名前を "sha256" や "md5" といった文字列で指定します。

DSA で検証をする場合はハッシュ関数には "dss1" を指定してください。

検証に失敗した、つまり署名時と異なるハッシュ関数を使った、 sign が正しい署名でなかった場合などは false を返します。

[PARAM] digest:
利用するハッシュ関数の名前
[PARAM] sign:
検証に利用する署名文字列
[PARAM] data:
検証対象の文字列
[EXCEPTION] OpenSSL::PKey::PKeyError:
検証時にエラーが起きた場合に発生します。正しい署名でなかった場合など、検証に失敗した場合はこの例外は発生しないことに注意してください