mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 13:04:13 +02:00
[ruby/openssl] pkey: add PKey#inspect and #oid
Implement OpenSSL::PKey::PKey#oid as a wrapper around EVP_PKEY_id().
This allows user code to check the type of a PKey object.
EVP_PKEY can have a pkey type for which we do not provide a dedicated
subclass. In other words, an EVP_PKEY that is not any of {RSA,DSA,DH,EC}
can exist. It is currently not possible to distinguish such a pkey.
Also, implement PKey#inspect to include the key type for convenience.
dafbb1b3e6
This commit is contained in:
parent
a7145c3de4
commit
6f008c9d2f
2 changed files with 66 additions and 0 deletions
28
test/openssl/test_pkey.rb
Normal file
28
test/openssl/test_pkey.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
# frozen_string_literal: true
|
||||
require_relative "utils"
|
||||
|
||||
class OpenSSL::TestPKey < OpenSSL::PKeyTestCase
|
||||
def test_generic_oid_inspect
|
||||
# RSA private key
|
||||
rsa = Fixtures.pkey("rsa-1")
|
||||
assert_instance_of OpenSSL::PKey::RSA, rsa
|
||||
assert_equal "rsaEncryption", rsa.oid
|
||||
assert_match %r{oid=rsaEncryption}, rsa.inspect
|
||||
|
||||
# X25519 private key
|
||||
x25519_pem = <<~EOF
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MC4CAQAwBQYDK2VuBCIEIHcHbQpzGKV9PBbBclGyZkXfTC+H68CZKrF3+6UduSwq
|
||||
-----END PRIVATE KEY-----
|
||||
EOF
|
||||
begin
|
||||
x25519 = OpenSSL::PKey.read(x25519_pem)
|
||||
rescue OpenSSL::PKey::PKeyError
|
||||
# OpenSSL < 1.1.0
|
||||
pend "X25519 is not implemented"
|
||||
end
|
||||
assert_instance_of OpenSSL::PKey::PKey, x25519
|
||||
assert_equal "X25519", x25519.oid
|
||||
assert_match %r{oid=X25519}, x25519.inspect
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue