From 87316d58faa2d57e9f1c1df2f76584a129a60bcc Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Fri, 14 Jun 2024 14:45:56 +0900 Subject: [ruby/openssl] pkey: change PKey::{RSA,DSA,DH}#params to use nil for missing parameters The returned Hash from these methods contain 0 in place of a missing parameter in the key, for example: pkey = OpenSSL::PKey.read(OpenSSL::PKey::RSA.new(2048).public_to_pem) pp pkey.params #=> # {"n"=>#, # "e"=>#, # "d"=>#, # "p"=>#, # "q"=>#, # "dmp1"=>#, # "dmq1"=>#, # "iqmp"=>#} Let's use nil instead, which is more appropriate for indicating a missing value. https://github.com/ruby/openssl/commit/f247ec3dec --- ext/openssl/lib/openssl/pkey.rb | 6 +++--- test/openssl/test_pkey_dh.rb | 4 ++-- test/openssl/test_pkey_dsa.rb | 2 +- test/openssl/test_pkey_rsa.rb | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ext/openssl/lib/openssl/pkey.rb b/ext/openssl/lib/openssl/pkey.rb index 1aa22bfee6..3d1e8885ca 100644 --- a/ext/openssl/lib/openssl/pkey.rb +++ b/ext/openssl/lib/openssl/pkey.rb @@ -42,7 +42,7 @@ module OpenSSL::PKey # The hash has keys 'p', 'q', 'g', 'pub_key', and 'priv_key'. def params %w{p q g pub_key priv_key}.map { |name| - [name, send(name) || 0.to_bn] + [name, send(name)] }.to_h end @@ -174,7 +174,7 @@ module OpenSSL::PKey # The hash has keys 'p', 'q', 'g', 'pub_key', and 'priv_key'. def params %w{p q g pub_key priv_key}.map { |name| - [name, send(name) || 0.to_bn] + [name, send(name)] }.to_h end @@ -360,7 +360,7 @@ module OpenSSL::PKey # The hash has keys 'n', 'e', 'd', 'p', 'q', 'dmp1', 'dmq1', and 'iqmp'. def params %w{n e d p q dmp1 dmq1 iqmp}.map { |name| - [name, send(name) || 0.to_bn] + [name, send(name)] }.to_h end diff --git a/test/openssl/test_pkey_dh.rb b/test/openssl/test_pkey_dh.rb index f7f0522bc1..686c9b97d0 100644 --- a/test/openssl/test_pkey_dh.rb +++ b/test/openssl/test_pkey_dh.rb @@ -137,9 +137,9 @@ class OpenSSL::TestPKeyDH < OpenSSL::PKeyTestCase assert_kind_of(OpenSSL::BN, dh.g) assert_equal(dh.g, dh.params["g"]) assert_nil(dh.pub_key) - assert_equal(0, dh.params["pub_key"]) + assert_nil(dh.params["pub_key"]) assert_nil(dh.priv_key) - assert_equal(0, dh.params["priv_key"]) + assert_nil(dh.params["priv_key"]) dhkey = OpenSSL::PKey.generate_key(dh) assert_equal(dh.params["p"], dhkey.params["p"]) diff --git a/test/openssl/test_pkey_dsa.rb b/test/openssl/test_pkey_dsa.rb index a95cce2cf9..e45c3da3e2 100644 --- a/test/openssl/test_pkey_dsa.rb +++ b/test/openssl/test_pkey_dsa.rb @@ -248,7 +248,7 @@ fWLOqqkzFeRrYMDzUpl36XktY6Yq8EJYlW9pCMmBVNy/dQ== assert_equal(key.pub_key, pubkey.pub_key) assert_equal(key.pub_key, pubkey.params["pub_key"]) assert_nil(pubkey.priv_key) - assert_equal(0, pubkey.params["priv_key"]) + assert_nil(pubkey.params["priv_key"]) end def test_dup diff --git a/test/openssl/test_pkey_rsa.rb b/test/openssl/test_pkey_rsa.rb index 55606654c5..360309b475 100644 --- a/test/openssl/test_pkey_rsa.rb +++ b/test/openssl/test_pkey_rsa.rb @@ -595,7 +595,7 @@ class OpenSSL::TestPKeyRSA < OpenSSL::PKeyTestCase assert_equal(key.e, pubkey.e) [:d, :p, :q, :dmp1, :dmq1, :iqmp].each do |name| assert_nil(pubkey.send(name)) - assert_equal(0, pubkey.params[name.to_s]) + assert_nil(pubkey.params[name.to_s]) end end -- cgit v1.2.3