From a27b63d3fc1c491eda62a8a48527df53301f45ce Mon Sep 17 00:00:00 2001 From: emboss Date: Mon, 13 Jun 2011 01:58:09 +0000 Subject: * ext/openssl/pkey_dh.c: corrected documentation. * test/openssl/utils.rb: add test key for DH. * test/openssl/test_pkey_dh.rb: add tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32039 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/openssl/test_pkey_dh.rb | 72 ++++++++++++++++++++++++++++++++++++++++++++ test/openssl/utils.rb | 7 +++++ 2 files changed, 79 insertions(+) create mode 100644 test/openssl/test_pkey_dh.rb (limited to 'test') diff --git a/test/openssl/test_pkey_dh.rb b/test/openssl/test_pkey_dh.rb new file mode 100644 index 0000000000..bcba400efe --- /dev/null +++ b/test/openssl/test_pkey_dh.rb @@ -0,0 +1,72 @@ +require_relative 'utils' + +if defined?(OpenSSL) + +class OpenSSL::TestPKeyDH < Test::Unit::TestCase + def test_new + dh = OpenSSL::PKey::DH.new(256) + assert_key(dh) + end + + def test_to_der + dh = OpenSSL::PKey::DH.new(256) + der = dh.to_der + dh2 = OpenSSL::PKey::DH.new(der) + assert_equal_params(dh, dh2) + assert_no_key(dh2) + end + + def test_to_pem + dh = OpenSSL::PKey::DH.new(256) + pem = dh.to_pem + dh2 = OpenSSL::PKey::DH.new(pem) + assert_equal_params(dh, dh2) + assert_no_key(dh2) + end + + def test_public_key + dh = OpenSSL::PKey::DH.new(256) + public_key = dh.public_key + assert_no_key(public_key) #implies public_key.public? is false! + assert_equal(dh.to_der, public_key.to_der) + assert_equal(dh.to_pem, public_key.to_pem) + end + + def test_generate_key + dh = OpenSSL::TestUtils::TEST_KEY_DH512.public_key # creates a copy + assert_no_key(dh) + dh.generate_key! + assert_key(dh) + end + + def test_key_exchange + dh = OpenSSL::TestUtils::TEST_KEY_DH512 + dh2 = dh.public_key + dh.generate_key! + dh2.generate_key! + assert_equal(dh.compute_key(dh2.pub_key), dh2.compute_key(dh.pub_key)) + end + + private + + def assert_equal_params(dh1, dh2) + assert_equal(dh1.g, dh2.g) + assert_equal(dh1.p, dh2.p) + end + + def assert_no_key(dh) + assert_equal(false, dh.public?) + assert_equal(false, dh.private?) + assert_equal(nil, dh.pub_key) + assert_equal(nil, dh.priv_key) + end + + def assert_key(dh) + assert(dh.public?) + assert(dh.private?) + assert(dh.pub_key) + assert(dh.priv_key) + end +end + +end diff --git a/test/openssl/utils.rb b/test/openssl/utils.rb index bb51f57c72..3f9662a8a5 100644 --- a/test/openssl/utils.rb +++ b/test/openssl/utils.rb @@ -88,6 +88,13 @@ CeBUl+MahZtn9fO1JKdF4qJmS39dXnpENg== -----END EC PRIVATE KEY----- _end_of_pem_ + TEST_KEY_DH512 = OpenSSL::PKey::DH.new <<-_end_of_pem_ +-----BEGIN DH PARAMETERS----- +MEYCQQDmWXGPqk76sKw/edIOdhAQD4XzjJ+AR/PTk2qzaGs+u4oND2yU5D2NN4wr +aPgwHyJBiK1/ebK3tYcrSKrOoRyrAgEC +-----END DH PARAMETERS----- + _end_of_pem_ + module_function def issue_cert(dn, key, serial, not_before, not_after, extensions, -- cgit v1.2.3