[ruby/openssl] pkey: have PKey.read parse PEM-encoded DHParameter

Try PEM_read_bio_Parameters(). Only PEM format is supported at the
moment since corresponding d2i_* functions are not provided by OpenSSL.

https://github.com/ruby/openssl/commit/867e5c021b
This commit is contained in:
Kazuki Yamaguchi 2017-03-18 17:26:33 +09:00
Родитель c157f6e787
Коммит efad0166c6
3 изменённых файлов: 5 добавлений и 3 удалений

Просмотреть файл

@ -178,6 +178,9 @@ ossl_pkey_new_from_data(int argc, VALUE *argv, VALUE self)
OSSL_BIO_reset(bio);
if ((pkey = PEM_read_bio_PUBKEY(bio, NULL, NULL, NULL)))
goto ok;
OSSL_BIO_reset(bio);
if ((pkey = PEM_read_bio_Parameters(bio, NULL)))
goto ok;
BIO_free(bio);
ossl_raise(ePKeyError, "Could not parse PKey");

Просмотреть файл

@ -36,6 +36,8 @@ class OpenSSL::TestPKeyDH < OpenSSL::PKeyTestCase
EOF
key = OpenSSL::PKey::DH.new(pem)
assert_same_dh dup_public(dh1024), key
key = OpenSSL::PKey.read(pem)
assert_same_dh dup_public(dh1024), key
assert_equal asn1.to_der, dh1024.to_der
assert_equal pem, dh1024.export

Просмотреть файл

@ -42,9 +42,6 @@ module OpenSSL::TestUtils
def pkey(name)
OpenSSL::PKey.read(read_file("pkey", name))
rescue OpenSSL::PKey::PKeyError
# TODO: DH parameters can be read by OpenSSL::PKey.read atm
OpenSSL::PKey::DH.new(read_file("pkey", name))
end
def read_file(category, name)