summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazuki Yamaguchi <[email protected]>2024-06-14 14:50:21 +0900
committerKazuki Yamaguchi <[email protected]>2025-01-23 01:45:51 +0900
commit47fe59cd8299a04dfa7af41131d0563c0e6f5b98 (patch)
treefe084bba995b7560185906bc961d652ffc819216
parent72480389d149063f2c990227e9b490889f0fc407 (diff)
[ruby/openssl] pkey: add tests for PKey::{RSA,DSA,DH}#params
Add missing test cases to verify the current behavior. The next patch will rewrite those methods. https://github.com/ruby/openssl/commit/c0e0669f9b
-rw-r--r--test/openssl/test_pkey_dh.rb19
-rw-r--r--test/openssl/test_pkey_dsa.rb21
-rw-r--r--test/openssl/test_pkey_rsa.rb20
3 files changed, 60 insertions, 0 deletions
diff --git a/test/openssl/test_pkey_dh.rb b/test/openssl/test_pkey_dh.rb
index 45911968e2..f7f0522bc1 100644
--- a/test/openssl/test_pkey_dh.rb
+++ b/test/openssl/test_pkey_dh.rb
@@ -130,6 +130,25 @@ class OpenSSL::TestPKeyDH < OpenSSL::PKeyTestCase
assert_equal(false, dh2.params_ok?)
end
+ def test_params
+ dh = Fixtures.pkey("dh2048_ffdhe2048")
+ assert_kind_of(OpenSSL::BN, dh.p)
+ assert_equal(dh.p, dh.params["p"])
+ 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.priv_key)
+ assert_equal(0, dh.params["priv_key"])
+
+ dhkey = OpenSSL::PKey.generate_key(dh)
+ assert_equal(dh.params["p"], dhkey.params["p"])
+ assert_kind_of(OpenSSL::BN, dhkey.pub_key)
+ assert_equal(dhkey.pub_key, dhkey.params["pub_key"])
+ assert_kind_of(OpenSSL::BN, dhkey.priv_key)
+ assert_equal(dhkey.priv_key, dhkey.params["priv_key"])
+ end
+
def test_dup
# Parameters only
dh1 = Fixtures.pkey("dh2048_ffdhe2048")
diff --git a/test/openssl/test_pkey_dsa.rb b/test/openssl/test_pkey_dsa.rb
index 3e8a83b2d0..a95cce2cf9 100644
--- a/test/openssl/test_pkey_dsa.rb
+++ b/test/openssl/test_pkey_dsa.rb
@@ -230,6 +230,27 @@ fWLOqqkzFeRrYMDzUpl36XktY6Yq8EJYlW9pCMmBVNy/dQ==
assert_equal(nil, key.priv_key)
end
+ def test_params
+ key = Fixtures.pkey("dsa2048")
+ assert_kind_of(OpenSSL::BN, key.p)
+ assert_equal(key.p, key.params["p"])
+ assert_kind_of(OpenSSL::BN, key.q)
+ assert_equal(key.q, key.params["q"])
+ assert_kind_of(OpenSSL::BN, key.g)
+ assert_equal(key.g, key.params["g"])
+ assert_kind_of(OpenSSL::BN, key.pub_key)
+ assert_equal(key.pub_key, key.params["pub_key"])
+ assert_kind_of(OpenSSL::BN, key.priv_key)
+ assert_equal(key.priv_key, key.params["priv_key"])
+
+ pubkey = OpenSSL::PKey.read(key.public_to_der)
+ assert_equal(key.params["p"], pubkey.params["p"])
+ 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"])
+ end
+
def test_dup
key = Fixtures.pkey("dsa1024")
key2 = key.dup
diff --git a/test/openssl/test_pkey_rsa.rb b/test/openssl/test_pkey_rsa.rb
index e1a0df13f7..55606654c5 100644
--- a/test/openssl/test_pkey_rsa.rb
+++ b/test/openssl/test_pkey_rsa.rb
@@ -579,6 +579,26 @@ class OpenSSL::TestPKeyRSA < OpenSSL::PKeyTestCase
assert_same_rsa rsa, OpenSSL::PKey.read(pem, "abcdef")
end
+ def test_params
+ key = Fixtures.pkey("rsa2048")
+ assert_equal(2048, key.n.num_bits)
+ assert_equal(key.n, key.params["n"])
+ assert_equal(65537, key.e)
+ assert_equal(key.e, key.params["e"])
+ [:d, :p, :q, :dmp1, :dmq1, :iqmp].each do |name|
+ assert_kind_of(OpenSSL::BN, key.send(name))
+ assert_equal(key.send(name), key.params[name.to_s])
+ end
+
+ pubkey = OpenSSL::PKey.read(key.public_to_der)
+ assert_equal(key.n, pubkey.n)
+ 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])
+ end
+ end
+
def test_dup
key = Fixtures.pkey("rsa1024")
key2 = key.dup