Skip to content

Commit c0e0669

Browse files
committed
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.
1 parent 6f1695d commit c0e0669

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

test/openssl/test_pkey_dh.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,25 @@ def test_params_ok?
130130
assert_equal(false, dh2.params_ok?)
131131
end
132132

133+
def test_params
134+
dh = Fixtures.pkey("dh2048_ffdhe2048")
135+
assert_kind_of(OpenSSL::BN, dh.p)
136+
assert_equal(dh.p, dh.params["p"])
137+
assert_kind_of(OpenSSL::BN, dh.g)
138+
assert_equal(dh.g, dh.params["g"])
139+
assert_nil(dh.pub_key)
140+
assert_equal(0, dh.params["pub_key"])
141+
assert_nil(dh.priv_key)
142+
assert_equal(0, dh.params["priv_key"])
143+
144+
dhkey = OpenSSL::PKey.generate_key(dh)
145+
assert_equal(dh.params["p"], dhkey.params["p"])
146+
assert_kind_of(OpenSSL::BN, dhkey.pub_key)
147+
assert_equal(dhkey.pub_key, dhkey.params["pub_key"])
148+
assert_kind_of(OpenSSL::BN, dhkey.priv_key)
149+
assert_equal(dhkey.priv_key, dhkey.params["priv_key"])
150+
end
151+
133152
def test_dup
134153
# Parameters only
135154
dh1 = Fixtures.pkey("dh2048_ffdhe2048")

test/openssl/test_pkey_dsa.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,27 @@ def test_read_DSAPublicKey_pem
230230
assert_equal(nil, key.priv_key)
231231
end
232232

233+
def test_params
234+
key = Fixtures.pkey("dsa2048")
235+
assert_kind_of(OpenSSL::BN, key.p)
236+
assert_equal(key.p, key.params["p"])
237+
assert_kind_of(OpenSSL::BN, key.q)
238+
assert_equal(key.q, key.params["q"])
239+
assert_kind_of(OpenSSL::BN, key.g)
240+
assert_equal(key.g, key.params["g"])
241+
assert_kind_of(OpenSSL::BN, key.pub_key)
242+
assert_equal(key.pub_key, key.params["pub_key"])
243+
assert_kind_of(OpenSSL::BN, key.priv_key)
244+
assert_equal(key.priv_key, key.params["priv_key"])
245+
246+
pubkey = OpenSSL::PKey.read(key.public_to_der)
247+
assert_equal(key.params["p"], pubkey.params["p"])
248+
assert_equal(key.pub_key, pubkey.pub_key)
249+
assert_equal(key.pub_key, pubkey.params["pub_key"])
250+
assert_nil(pubkey.priv_key)
251+
assert_equal(0, pubkey.params["priv_key"])
252+
end
253+
233254
def test_dup
234255
key = Fixtures.pkey("dsa1024")
235256
key2 = key.dup

test/openssl/test_pkey_rsa.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,26 @@ def test_private_encoding_encrypted
579579
assert_same_rsa rsa, OpenSSL::PKey.read(pem, "abcdef")
580580
end
581581

582+
def test_params
583+
key = Fixtures.pkey("rsa2048")
584+
assert_equal(2048, key.n.num_bits)
585+
assert_equal(key.n, key.params["n"])
586+
assert_equal(65537, key.e)
587+
assert_equal(key.e, key.params["e"])
588+
[:d, :p, :q, :dmp1, :dmq1, :iqmp].each do |name|
589+
assert_kind_of(OpenSSL::BN, key.send(name))
590+
assert_equal(key.send(name), key.params[name.to_s])
591+
end
592+
593+
pubkey = OpenSSL::PKey.read(key.public_to_der)
594+
assert_equal(key.n, pubkey.n)
595+
assert_equal(key.e, pubkey.e)
596+
[:d, :p, :q, :dmp1, :dmq1, :iqmp].each do |name|
597+
assert_nil(pubkey.send(name))
598+
assert_equal(0, pubkey.params[name.to_s])
599+
end
600+
end
601+
582602
def test_dup
583603
key = Fixtures.pkey("rsa1024")
584604
key2 = key.dup

0 commit comments

Comments
 (0)