diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2016-08-18 22:51:29 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2016-08-18 22:51:29 +0900 |
commit | c6536e05a8642cc22cf1bed648a1f2da5b2ca998 (patch) | |
tree | 40b382e9ee29263db465ae3de8f0f1dc0fa4c74e /test/utils.rb | |
parent | b8ae1f937c0145f157a978584e68d71941926d7a (diff) | |
parent | 20a88ace0778282d5ee564842023c78e4a2e9399 (diff) | |
download | ruby-openssl-c6536e05a8642cc22cf1bed648a1f2da5b2ca998.tar.gz |
Merge branch 'topic/fixup-tests'
* topic/fixup-tests:
test: refactor PKey::PKey#{sign,verify} tests
test: rework PEM/DER encoding and decoding tests
test/test_pkey_ec: stop iterating all curves
test/test_pkey_dh: refine OpenSSL::PKey::DH::DEFAULT_* tests
Diffstat (limited to 'test/utils.rb')
-rw-r--r-- | test/utils.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/utils.rb b/test/utils.rb index 6b1487d3..f30504a5 100644 --- a/test/utils.rb +++ b/test/utils.rb @@ -372,5 +372,39 @@ AQjjxMXhwULlmuR/K+WwlaZPiLIBYalLAZQ7ZbOPeVkJ8ePao0eLAgEC end end + class OpenSSL::PKeyTestCase < OpenSSL::TestCase + def check_component(base, test, keys) + keys.each { |comp| + assert_equal base.send(comp), test.send(comp) + } + end + + def dup_public(key) + case key + when OpenSSL::PKey::RSA + rsa = OpenSSL::PKey::RSA.new + rsa.set_key(key.n, key.e, nil) + rsa + when OpenSSL::PKey::DSA + dsa = OpenSSL::PKey::DSA.new + dsa.set_pqg(key.p, key.q, key.g) + dsa.set_key(key.pub_key, nil) + dsa + when OpenSSL::PKey::DH + dh = OpenSSL::PKey::DH.new + dh.set_pqg(key.p, nil, key.g) + dh + else + if defined?(OpenSSL::PKey::EC) && OpenSSL::PKey::EC === key + ec = OpenSSL::PKey::EC.new(key.group) + ec.public_key = key.public_key + ec + else + raise "unknown key type" + end + end + end + end + end if defined?(OpenSSL::OPENSSL_LIBRARY_VERSION) and /\AOpenSSL +0\./ !~ OpenSSL::OPENSSL_LIBRARY_VERSION |