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

class OpenSSL::PKey::EC

[edit]

要約

EC(Ellicptic Curve,楕円曲線)暗号鍵のクラスです。

このクラスのメソッドについてより詳しく知りたい場合は openssl のドキュメントの対応する関数の項を見てください。

目次

特異メソッド
インスタンスメソッド
定数

継承しているメソッド

OpenSSL::PKey::PKeyから継承しているメソッド

特異メソッド

builtin_curves -> [[String, String]][permalink][rdoc][edit]

組み込みの曲線の名前と、それに対する説明を文字列の配列ペアの配列で返します。

例
require 'openssl'

p OpenSSL::PKey::EC.builtin_curves
# => [["secp112r1", "SECG/WTLS curve over a 112 bit prime field"],
#     ["secp112r2", "SECG curve over a 112 bit prime field"], 
#     ["secp128r1", "SECG curve over a 128 bit prime field"], 
#     ["secp128r2", "SECG curve over a 128 bit prime field"],
#     ... ]

[SEE_ALSO] OpenSSL::PKey::EC::Group.new

generate(ec_group) -> OpenSSL::PKey::ECRuby 2.4.0 から[permalink][rdoc][edit]
generate(string) -> OpenSSL::PKey::EC

新しいランダムな秘密鍵と公開鍵を持つ EC オブジェクトを生成します。

[PARAM] ec_group:
鍵パラメータとなる群を表す OpenSSL::PKey::EC::Group オブジェクト
[PARAM] string:
曲線の名前を表す文字列

[SEE_ALSO] OpenSSL::PKey::EC.new

new -> OpenSSL::PKey::EC[permalink][rdoc][edit]
new(obj) -> OpenSSL::PKey::EC

OpenSSL::PKey::EC オブジェクトを生成します。

引数の種類や内容によって異なる挙動をします。

引数なしの場合は、空の EC オブジェクトを生成します。これにはパラメータ(曲線から定義される群)も鍵対も含まれていません。

引数が OpenSSL::PKey::EC オブジェクトである場合には、そのオブジェクトのコピーを返します。

引数が OpenSSL::PKey::EC::Group のオブジェクトである場合には、それを群として設定されます。鍵対は含まれません。

引数が DER 形式もしくは PEM 形式の文字列である場合は、その内容を読み込んで EC オブジェクトを出力します。その内容によって鍵対の両方、もしくは公開鍵のみ含まれています。

引数が曲線の名前の文字列である場合には、その曲線で定義される群がパラメータとして設定されます。鍵対は含まれません。

[PARAM] obj:
ECオブジェクトの生成元(EC オブジェクト or EC::Group オブジェクト or 文字列)
[EXCEPTION] OpenSSL::PKey::ECError:
オブジェクトの生成に失敗した場合に発生します

インスタンスメソッド

check_key -> true[permalink][rdoc][edit]

パラメータと鍵対をチェックします。

なんらかの意味で鍵対に問題がある場合には例外 ECError を発生します。

[EXCEPTION] OpenSSL::PKey::ECError:
鍵に問題がある場合に発生します
dh_compute_key(pubkey) -> String[permalink][rdoc][edit]

自分の秘密鍵と相手の公開鍵から ECDH によって鍵文字列を計算し、返します。

相手の公開鍵は OpenSSL::PKey::EC::Point オブジェクトである必要があります。

[PARAM] pubkey:
相手の公開鍵
[EXCEPTION] OpenSSL::PKey::ECError:
鍵交換に失敗した場合に発生します
dsa_sign_asn1(data) -> String[permalink][rdoc][edit]

秘密鍵を用い、data に ECDSA で署名します。

結果は文字列として返します。

data のダイジェストを取る処理はこのメソッドに含まれていません。自身で適当なダイジェストを取る必要があります。

[PARAM] data:
署名対象のデータ(文字列)
[EXCEPTION] OpenSSL::PKey::ECError:
EC オブジェクトが秘密鍵を保持していない場合、もしくは署名に失敗した場合に発生します

[SEE_ALSO] OpenSSL::PKey::EC#dsa_verify_asn1

dsa_verify_asn1(data, sig) -> bool[permalink][rdoc][edit]

公開鍵を用い、署名を ECDSA で検証します。

data のダイジェストを取る処理はこのメソッドに含まれていません。自身で適当なダイジェストを取る必要があります。

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

[PARAM] data:
署名対象のデータ(文字列)
[PARAM] sig:
署名データ(文字列)
[EXCEPTION] OpenSSL::PKey::ECError:
署名の検証時にエラーが生じた場合に発生します

[SEE_ALSO] OpenSSL::PKey::EC#dsa_sign_asn1

export(cipher = nil, pass = nil) -> StringRuby 2.0.0 から[permalink][rdoc][edit]
to_pem(cipher = nil, pass = nil) -> String

鍵を PEM 形式の文字列に変換します。

self が公開鍵の情報しか持たない場合は X.509 SubjectPublicKeyInfo 形式になります。この場合 cipher と pass は無視されます。

self が秘密鍵の情報を持つ場合は SEC 1/RFC 5915 の ECPrivateKey 形式になります。cipher と pass を指定すると、OpenSSL の伝統的な PEM 暗号化形式で暗号化します。この形式は鍵導出に MD5 を使うため、FIPS 準拠のシステムでは利用できません。

このメソッドは互換性のために残されています。X.509 SubjectPublicKeyInfo 形式が必要なら OpenSSL::PKey::PKey#public_to_pem を、PKCS #8 形式が必要なら OpenSSL::PKey::PKey#private_to_pem を使ってください。

[PARAM] cipher:
秘密鍵を暗号化する暗号アルゴリズムの名前、または OpenSSL::Cipher オブジェクト
[PARAM] pass:
暗号化に使うパスワード
[EXCEPTION] OpenSSL::PKey::ECError:
文字列への変換に失敗した場合に発生します。公開鍵が含まれていない場合や、鍵が妥当でない場合などに失敗します。
generate_key! -> selfRuby 2.4.0 から[permalink][rdoc][edit]
generate_key -> self

鍵ペアを乱数で生成します。

OpenSSL 3.0 以降とリンクされている場合は、鍵オブジェクトが変更不可(immutable)になるためこのメソッドは利用できません。代わりに OpenSSL::PKey::EC.generate を使ってください。

[EXCEPTION] OpenSSL::PKey::ECError:
鍵ペアの生成に失敗した場合、または OpenSSL 3.0 以降とリンクされている場合に発生します
group -> OpenSSL::PKey::EC::Group[permalink][rdoc][edit]

鍵パラメータとなる群を表すオブジェクトを返します。

[SEE_ALSO] OpenSSL::PKey::EC#group=

group=(gr)[permalink][rdoc][edit]

鍵パラメータとなる群を表すオブジェクトを設定します。

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

[PARAM] gr:
設定する OpenSSL::PKey::EC::Group オブジェクト
[EXCEPTION] OpenSSL::PKey::ECError:
Group オブジェクトの設定に失敗した場合に発生します

[SEE_ALSO] OpenSSL::PKey::EC#group

private_key? -> bool[permalink][rdoc][edit]
private? -> boolRuby 2.4.0 から

EC オブジェクトが秘密鍵を保持していれば真を返します。

private_key -> OpenSSL::BN|nil[permalink][rdoc][edit]

秘密鍵となる整数を返します。

鍵が設定されていない場合は nil を返します。

[SEE_ALSO] OpenSSL::PKey::EC#private_key=

private_key=(privkey)[permalink][rdoc][edit]

秘密鍵となる整数を設定します。

nil を渡すことで EC オブジェクトが公開鍵のみを持つ状態に変更できます。

[PARAM] privkey:
設定する秘密鍵(OpenSSL::BN オブジェクト)
[EXCEPTION] OpenSSL::PKey::ECError:
秘密鍵の設定に失敗した場合に発生します

[SEE_ALSO] OpenSSL::PKey::EC#private_key

public_key? -> bool[permalink][rdoc][edit]
public? -> boolRuby 2.4.0 から

EC オブジェクトが公開鍵を保持していれば真を返します。

OpenSSL::PKey::RSA や OpenSSL::PKey::DSA と異なり、EC オブジェクトが公開鍵を含まない場合が存在します。例えば、OpenSSL::PKey::EC.new でパラメータとなる群のみを指定して EC オブジェクトを作った場合は、公開鍵も秘密鍵も保持していません。この場合 OpenSSL::PKey::EC#generate_key で鍵を生成するまで、その状態のままです。

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

public_key -> OpenSSL::PKey::EC::Point|nil[permalink][rdoc][edit]

公開鍵となる楕円曲線上の点を表すオブジェクトを返します。

鍵が設定されていない場合は nil を返します。

[EXCEPTION] OpenSSL::PKey::ECError:
公開鍵の取得時にエラーが生じた場合に発生します

[SEE_ALSO] OpenSSL::PKey::EC#public_key=

public_key=(pubkey)[permalink][rdoc][edit]

公開鍵となる楕円曲線上の点を表すオブジェクトを設定します。

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

[PARAM] pubkey:
公開鍵となる OpenSSL::PKey::EC::Point オブジェクト
[EXCEPTION] OpenSSL::PKey::ECError:
公開鍵の設定時にエラーが生じた場合に発生します

[SEE_ALSO] OpenSSL::PKey::EC#public_key

to_der -> String[permalink][rdoc][edit]

鍵を DER 形式の文字列に変換します。

[EXCEPTION] OpenSSL::PKey::ECError:
文字列への変換に失敗した場合に発生します。公開鍵が含まれていない場合や、鍵が妥当でない場合などに失敗します。
to_text -> String[permalink][rdoc][edit]

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

[EXCEPTION] OpenSSL::PKey::ECError:
文字列への変換に失敗した場合に発生します。公開鍵が含まれていない場合や、鍵が妥当でない場合などに失敗します。

定数

NAMED_CURVE -> Integer[permalink][rdoc][edit]

その群が名前を持つ曲線から定義されていることを意味するフラグです。

OpenSSL::PKey::EC::Group#asn1_flag= で利用されます。