diff --git a/lib/ruby/shared/openssl/pkcs12.rb b/lib/ruby/shared/openssl/pkcs12.rb index e11fb49065f..adb7c33be85 100644 --- a/lib/ruby/shared/openssl/pkcs12.rb +++ b/lib/ruby/shared/openssl/pkcs12.rb @@ -31,6 +31,7 @@ def initialize(str = nil, password = '') @der = file.read file.close else + str.force_encoding(Encoding::ASCII_8BIT) @der = str end diff --git a/test/mri/openssl/test_pkcs12.rb b/test/mri/openssl/test_pkcs12.rb index cdc00b2d3a3..da1de167a7c 100644 --- a/test/mri/openssl/test_pkcs12.rb +++ b/test/mri/openssl/test_pkcs12.rb @@ -52,31 +52,28 @@ def setup end def test_create - pkcs12 = OpenSSL::PKCS12.create( - "omg", - "hello", - TEST_KEY_RSA1024, - @mycert - ) + pkcs12 = create_store assert_equal @mycert, pkcs12.certificate assert_equal TEST_KEY_RSA1024, pkcs12.key assert_nil pkcs12.ca_certs end - def test_load - temp = OpenSSL::PKCS12.create( - "omg", - "hello", - TEST_KEY_RSA1024, - @mycert - ) - - Tempfile.open('test_cert.pk12') do |f| - f << temp.to_der - f.rewind + def test_from_file + tempfile do |f| OpenSSL::PKCS12.new(f, 'omg') end + end + def test_from_ascii_string + tempfile do |f| + OpenSSL::PKCS12.new(f.read.force_encoding(Encoding::ASCII_8BIT), 'omg') + end + end + + def test_from_utf8_string + tempfile do |f| + OpenSSL::PKCS12.new(f.read.force_encoding(Encoding::UTF_8), 'omg') + end end def test_create_no_pass @@ -219,6 +216,23 @@ def assert_include_cert cert, ary false end + def create_store + OpenSSL::PKCS12.create( + "omg", + "hello", + TEST_KEY_RSA1024, + @mycert + ) + end + + def tempfile store=create_store + Tempfile.open('test_cert.pk12') do |f| + f << store.to_der + f.rewind + yield f + end + end + end end