ruby-trunk-changes 2021-07-18

今日は主に拡張ライブラリ openssl の更新がありました。利用する OpenSSL と LibreSSL の最低バージョンの引き上げや多数メソッドの新規追加などがありました。

[e0e12202c7] Nobuyoshi Nakada 2021-07-18 02:40:21 UTC

rubyspec の C API のテストのための拡張ライブラリで fd0df9c4fb36597e5e3f500670b29dbd77a14eca で deprecated にした C API rb_iterate() のかわりに rb_block_call() を利用するように変更しています。

[ed1e5663a4] git 2021-07-18 03:40:58 UTC

version.h の日付更新

[01fcb8f45b] Rick Mark 2021-04-01 19:29:21 UTC

拡張ライブラリ openssl に OpenSSL::BN#abs メソッドを追加しています。また OpenSSL::BN#+@ が self をそのまま返していたのを複製したオブジェクトを返すようにしています。

[decce40da7] Kazuki Yamaguchi 2021-04-02 13:08:13 UTC

拡張ライブラリ openssl の OpenSSL::BN.new と OpenSSL::BN#to_s の rdoc 用コメントに説明を追記しています。

[cd002305f0] Kazuki Yamaguchi 2020-08-04 14:14:44 UTC

拡張ライブラリ openssl の依存ライブラリを OpenSSL の 1.0.2 以降または LibreSSL の 3.1 以降として、古いバージョンのための代替実装などを削除しています。

[50332c4071] Kazuki Yamaguchi 2020-08-06 06:24:42 UTC

拡張ライブラリ openssl で SSL_CTX_set_ecdh_auto() という API を利用する条件として OpenSSL とリンクしていてそのバージョンが 1.0.2 以前(つまり 1.0.2 のみ)の時だけになるよう preprocessor 分岐の条件を追加しています。

[88d64418dd] Kazuki Yamaguchi 2020-08-06 06:35:30 UTC

拡張ライブラリ openssl で TLS_method() という関数を利用するのを OpenSSL 利用時のみにしていましたが LibreSSL 利用時にも使うようにしています。

[b7a908af34] Kazuki Yamaguchi 2020-08-21 08:33:25 UTC

拡張ライブラリ openssl で Thread safe にするためのロック取得のためのコールバック群の利用を CRYPTO_lock() という関数の存在チェックで制御していたのを LIBRESSL_VERSION_NUMBER と OPENSSL_VERSION_NUMBER だけで判定するように変更しています。

[1706302be5] Kazuki Yamaguchi 2020-06-12 05:12:59 UTC

拡張ライブラリ openssl の OpenSSL::PKey::PKey#sign の整数オーバーフローによるエラー時のメモリリークを修正しています。

[e2014d0354] Kazuki Yamaguchi 2021-04-02 14:58:48 UTC

拡張ライブラリ openssl のリファクタリング。 pkey_ctx_apply_options() という関数を追加しています。

[8cfe92b8a2] Kazuki Yamaguchi 2020-07-18 11:40:39 UTC

拡張ライブラリ openssl の OpenSSL::PKey::PKey#sign と #verify に Hash でオプションを引数として渡せるようにしています。キーワード引数じゃないんだなぁ。

[595644e4f6] Kazuki Yamaguchi 2021-04-04 15:30:01 UTC

拡張ライブラリ openssl の OpenSSL::PKey::PKey.generate_key がシグナルの受信など続行可能な割り込みの時にも処理を止めてしまっていたのをリトライするように修正しています。

[098985a5e6] Kazuki Yamaguchi 2020-05-17 11:48:23 UTC

拡張ライブラリ OpenSSL::PKey::DH.generate と OpenSSL::PKey::DH#generate_key! メソッドを C 実装から ruby 実装に移動しています。

[b8dcf9c8fd] Kazuki Yamaguchi 2020-05-17 11:48:23 UTC

拡張ライブラリ openssl の OpenSSL::PKey::RSA.generate の実装も C 実装から ruby 実装に移動しています。

[38436d1f5c] Kazuki Yamaguchi 2020-05-17 13:14:03 UTC

拡張ライブラリ openssl の OpenSSL::PKey::DSA.generate の実装も C 実装から ruby 実装に移動しています。

[436aecb520] Kazuki Yamaguchi 2021-04-04 15:39:04 UTC

拡張ライブラリ openssl の ossl_generate_cb_2() という関数が各種 PKey の generate メソッドの ruby 実装への移動で不要になったので削除しています。

[5d1693aac5] Kazuki Yamaguchi 2020-05-17 09:25:38 UTC

拡張ライブラリ openssl の OpenSSL::PKey の各種クラスの to_text メソッドの実装を共通の親クラス OpenSSL::PKey::PKey に定義して EVP_PKEY_print_xxxx() という関数群を利用するように変更しています。OpenSSL 1.0.0 以降で追加された API とのこと。

[3fe8387950] Kazuki Yamaguchi 2021-04-15 10:11:32 UTC

拡張ライブラリ openssl の OpenSSL::PKey::{DH,DSA,RSA} の public_key メソッドの実装を ruby 実装に移動しています。

[6d71918d94] Kazuki Yamaguchi 2020-07-10 05:34:51 UTC

拡張ライブラリ openssl で OpenSSL 1.1.1 で追加された EVP_PKEY_check() という関数を一部の OpenSSL::PKey の check_key メソッドで利用するようにしています。

[593164c2be] Aaron Patterson 2021-04-15 23:53:47 UTC

拡張ライブラリ openssl の OpenSSL::Buffering に getbyte メソッドを追加しています。 OpenSSL::SSL::SSLSocket が通常の Socket と同じメソッドを備えるようにするため。

[29ad4ab3d0] Ryuta Kamizono 2021-04-25 15:31:08 UTC

拡張ライブラリ openssl の rdoc 用コメントの typo 修正。

[a01daab656] Kazuki Yamaguchi 2021-05-19 08:58:18 UTC

拡張ライブラリ openssl の OpenSSL::PKCS7.new や OpenSSL::X509::Certificate.new などで DER 方式と PEM 方式どちらも受付けるものが常に DER として先に parse しようとしてみるようにしています。PEM のほうが寛容なので DER 方式を PEM 方式として読むと単に無視されてしまう可能性があるみたいです。

[1146a94aee] Samuel Williams 2021-05-21 20:47:20 UTC

拡張ライブラリ openssl に OpenSSL::X509::Certificate.load メソッドおよび load_file メソッドを新規追加しています。

[eac7fd57f8] Kazuki Yamaguchi 2021-05-25 08:31:08 UTC

拡張ライブラリ OpenSSL::PKey::{RSA,DSA,DH} の構成要素をセットする代入記号つきメソッドを削除しています。対応する OpenSSL の関数群がなくなったため。

[87458ff2ae] Kazuki Yamaguchi 2020-05-18 11:06:16 UTC

拡張ライブラリ OpenSSL::PKey::PKey#encrypt と #decrypt メソッドを追加しています。

[cbc560e38f] Kazuki Yamaguchi 2021-05-25 09:43:29 UTC

拡張ライブラリ openssl に 8cfe92b8a249465457ebef1d49b9e14a9fdaaddd で OpenSSL::PKey::PKey#sign や #verify の options 引数を追加した時の rdoc 用コメントに追記したバージョンを 2.3 から 3.0 に変更しています。次のリリース時に openssl.gem のバージョンを 3.0 系にすることにしたみたいです。

[4ebff35971] Kazuki Yamaguchi 2020-05-22 07:10:35 UTC

拡張ライブラリ openssl に OpenSSL::PKey::PKey#sign_raw および #verify_raw、#verify_recover メソッドを追加しています。あらかじめ渡すデータを hash 計算したものを渡すことを前提とした API みたいです。

[857a177b03] Kazuki Yamaguchi 2020-05-18 11:24:08 UTC

拡張ライブラリ openssl の OpenSSL::PKey::RSA#private_encrypt と #public_encrypt、#private_decrypt と #public_decrypt メソッドを新規追加しています。 それぞれ RSA の公開鍵と秘密鍵による暗号化/復号を簡単にできるようにしています。

[0c23e4a7aa] Kazuki Yamaguchi 2020-07-10 04:43:20 UTC

拡張ライブラリ openssl の OpenSSL::PKey::EC#dsa_sign_asn1 と #dsa_verify_asn1 メソッドを ruby 実装に移動して 4ebff35971d499f4ddd13f48bff0444f77d63421 で追加した sign_raw と verify_raw を利用するようにしています。

[5fc2912e60] Kazuki Yamaguchi 2020-07-10 04:51:18 UTC

拡張ライブラリ openssl の OpenSSL::PKey::DSA#syssign, #sysverify の実装も ruby 実装に移動して sign_raw と verify_raw を利用するように書きかえています。

[3d37e5d11c] Yusuke Endoh 2021-02-16 09:21:51 UTC

拡張ライブラリ openssl に OpenSSL::BN#set_flags と OpenSSL::BN#get_flags メソッドを新規追加しています。OpenSSL の side channel attack の対策としてフラグを設定する機能が追加されたようでそれを ruby レベルでも使えるようにしたということみたいです。

[4f7c3f631a] Vinicius Stock 2021-02-25 23:18:44 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLSocket の例外発生時に例外メッセージに peer の IPアドレスを含めるようにしています。

[70f0a802fe] Kazuki Yamaguchi 2021-06-25 11:27:14 UTC

拡張ライブラリ openssl の gemspec から add_development_dependency を削除しています。

[11651ab703] Yusuke Nakamura 2021-06-27 07:37:18 UTC

拡張ライブラリ openssl の OpenSSL::KDF.hkdf の rdoc 用コメントにサンプルコードを追記しています。

[3975840780] Benoit Daloze 2021-07-06 17:25:22 UTC

拡張ライブラリ openssl で rb_iterate() を使っているところが残ってたので rb_block_call() を使うように書きかえています。

[3f1d8a18ea] Samuel Williams 2021-06-19 01:47:16 UTC

拡張ライブラリ openssl で rb_io_maybe_wait_readable()/rb_io_maybe_wait_writable() という C API (こんなのあったっけ……)を使っていたところをバージョンに応じて rb_io_wait_readable()/rb_io_wait_writable() を使うようにした wrapper 関数 io_wait_readable()/io_wait_writable() を定義してこれを利用するようにリファクタリングしています。

[bd356c6899] Kazuki Yamaguchi 2021-07-18 09:04:25 UTC

拡張ライブラリ openssl の行末の空白除去。

[803eb1ee83] Nobuyoshi Nakada 2021-07-13 15:51:53 UTC

load.c の features_index_add_single() で st_lookup() の引数に直接 & 演算子によるポインタ化とキャストしたものを渡してたのを一旦 st_data 型の変数を使うようにしています。

[ab37e6ee7e] Nobuyoshi Nakada 2021-07-18 10:55:07 UTC

cont.c の C の関数定義のコーディングスタイルの修正。

[56d983697f] Nobuyoshi Nakada 2021-07-18 10:55:33 UTC

object.c の rb_opts_exception_p() 内の配列変数宣言に const 修飾子を追加しています。

[23c4b93e54] Bruno Arueira 2021-06-17 22:42:45 UTC

拡張ライブラリ racc の gemspec ファイルの spec.files からテストやサンプルのファイルを削っています。

[9b972310fa] Benoit Daloze 2021-07-06 16:23:01 UTC

拡張ライブラリ racc の extconf.rb に rb_block_call() の存在チェックを追加しています。