aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_pkey_dh.rb
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2016-07-07 00:19:32 +0900
committerKazuki Yamaguchi <k@rhe.jp>2016-08-18 01:58:45 +0900
commit675e2906764a141040144b8586a5f3d32e228f6f (patch)
tree74e9c565572d122a518efb59a4c6cc4e83a8b8fa /test/test_pkey_dh.rb
parent12e12e1070b7447e228163062fa81e127f69e750 (diff)
downloadruby-openssl-675e2906764a141040144b8586a5f3d32e228f6f.tar.gz
test: rework PEM/DER encoding and decoding tests
Check that PKey::*.new actually read the ASN.1 structure, and PKey::PKey#to_der and #export return the expected structure.
Diffstat (limited to 'test/test_pkey_dh.rb')
-rw-r--r--test/test_pkey_dh.rb41
1 files changed, 26 insertions, 15 deletions
diff --git a/test/test_pkey_dh.rb b/test/test_pkey_dh.rb
index 78dedd1b..470c952e 100644
--- a/test/test_pkey_dh.rb
+++ b/test/test_pkey_dh.rb
@@ -3,7 +3,8 @@ require_relative 'utils'
if defined?(OpenSSL::TestUtils)
-class OpenSSL::TestPKeyDH < OpenSSL::TestCase
+class OpenSSL::TestPKeyDH < OpenSSL::PKeyTestCase
+ DH1024 = OpenSSL::TestUtils::TEST_KEY_DH1024
NEW_KEYLEN = 256
@@ -35,20 +36,26 @@ class OpenSSL::TestPKeyDH < OpenSSL::TestCase
end
end
- def test_to_der
- dh = OpenSSL::TestUtils::TEST_KEY_DH1024
- 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::TestUtils::TEST_KEY_DH1024
- pem = dh.to_pem
- dh2 = OpenSSL::PKey::DH.new(pem)
- assert_equal_params(dh, dh2)
- assert_no_key(dh2)
+ def test_DHparams
+ asn1 = OpenSSL::ASN1::Sequence([
+ OpenSSL::ASN1::Integer(DH1024.p),
+ OpenSSL::ASN1::Integer(DH1024.g)
+ ])
+ key = OpenSSL::PKey::DH.new(asn1.to_der)
+ assert_same_dh dup_public(DH1024), key
+
+ pem = <<~EOF
+ -----BEGIN DH PARAMETERS-----
+ MIGHAoGBAKnKQ8MNK6nYZzLrrcuTsLxuiJGXoOO5gT+tljOTbHBuiktdMTITzIY0
+ pFxIvjG05D7HoBZQfrR0c92NGWPkAiCkhQKB8JCbPVzwNLDy6DZ0pmofDKrEsYHG
+ AQjjxMXhwULlmuR/K+WwlaZPiLIBYalLAZQ7ZbOPeVkJ8ePao0eLAgEC
+ -----END DH PARAMETERS-----
+ EOF
+ key = OpenSSL::PKey::DH.new(pem)
+ assert_same_dh dup_public(DH1024), key
+
+ assert_equal asn1.to_der, DH1024.to_der
+ assert_equal pem, DH1024.export
end
def test_public_key
@@ -104,6 +111,10 @@ class OpenSSL::TestPKeyDH < OpenSSL::TestCase
assert(dh.pub_key)
assert(dh.priv_key)
end
+
+ def assert_same_dh(expected, key)
+ check_component(expected, key, [:p, :q, :g, :pub_key, :priv_key])
+ end
end
end