mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 08:33:58 +02:00
[ruby/openssl] pkey/dh: use high level EVP interface to generate parameters and keys
Implement PKey::DH.new(size, gen), PKey::DH.generate(size, gen), and
PKey::DH#generate_key! using PKey.generate_parameters and .generate_key
instead of the low level DH functions.
Note that the EVP interface can enforce additional restrictions - for
example, DH key shorter than 2048 bits is no longer accepted by default
in OpenSSL 3.0. The test code is updated accordingly.
c2e9b16f0b
This commit is contained in:
parent
595644e4f6
commit
098985a5e6
3 changed files with 101 additions and 157 deletions
|
@ -4,12 +4,19 @@ require_relative 'utils'
|
|||
if defined?(OpenSSL) && defined?(OpenSSL::PKey::DH)
|
||||
|
||||
class OpenSSL::TestPKeyDH < OpenSSL::PKeyTestCase
|
||||
NEW_KEYLEN = 256
|
||||
NEW_KEYLEN = 2048
|
||||
|
||||
def test_new
|
||||
def test_new_empty
|
||||
dh = OpenSSL::PKey::DH.new
|
||||
assert_equal nil, dh.p
|
||||
assert_equal nil, dh.priv_key
|
||||
end
|
||||
|
||||
def test_new_generate
|
||||
# This test is slow
|
||||
dh = OpenSSL::PKey::DH.new(NEW_KEYLEN)
|
||||
assert_key(dh)
|
||||
end
|
||||
end if ENV["OSSL_TEST_ALL"]
|
||||
|
||||
def test_new_break
|
||||
assert_nil(OpenSSL::PKey::DH.new(NEW_KEYLEN) { break })
|
||||
|
@ -80,7 +87,7 @@ class OpenSSL::TestPKeyDH < OpenSSL::PKeyTestCase
|
|||
end
|
||||
|
||||
def test_dup
|
||||
dh = OpenSSL::PKey::DH.new(NEW_KEYLEN)
|
||||
dh = Fixtures.pkey("dh1024")
|
||||
dh2 = dh.dup
|
||||
assert_equal dh.to_der, dh2.to_der # params
|
||||
assert_equal_params dh, dh2 # keys
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue