diff options
author | Jeremy Evans <code@jeremyevans.net> | 2019-08-15 09:59:06 -0700 |
---|---|---|
committer | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2019-10-08 10:03:38 +1300 |
commit | 9f87c132558ba66cecacd8fa54ceae044b7714a6 (patch) | |
tree | e37da847b9c1d53c22abc7796562a22bcab166fa | |
parent | 7e2e0fbce26d8c572510901d26a8475e5ae8f211 (diff) | |
download | ruby-openssl-9f87c132558ba66cecacd8fa54ceae044b7714a6.tar.gz |
Add test for OpenSSL::PKCS7.{read,write}_smime
The 2nd and 3rd arguments to write_smime are not really testable
without exposing additional OpenSSL constants to Ruby. Still, test
that write_smime works when passed 3 arguments.
Fixes Ruby Bug 8274.
-rw-r--r-- | test/test_pkcs7.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/test_pkcs7.rb b/test/test_pkcs7.rb index 6437112b..5b356fbc 100644 --- a/test/test_pkcs7.rb +++ b/test/test_pkcs7.rb @@ -172,6 +172,28 @@ class OpenSSL::TestPKCS7 < OpenSSL::TestCase assert_equal(:encrypted, p7.type) end + def test_smime + store = OpenSSL::X509::Store.new + store.add_cert(@ca_cert) + ca_certs = [@ca_cert] + + data = "aaaaa\r\nbbbbb\r\nccccc\r\n" + tmp = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, ca_certs) + p7 = OpenSSL::PKCS7.new(tmp.to_der) + smime = OpenSSL::PKCS7.write_smime(p7) + assert_equal(true, smime.start_with?(<<END)) +MIME-Version: 1.0 +Content-Disposition: attachment; filename="smime.p7m" +Content-Type: application/x-pkcs7-mime; smime-type=signed-data; name="smime.p7m" +Content-Transfer-Encoding: base64 + +END + assert_equal(p7.to_der, OpenSSL::PKCS7.read_smime(smime).to_der) + + smime = OpenSSL::PKCS7.write_smime(p7, nil, 0) + assert_equal(p7.to_der, OpenSSL::PKCS7.read_smime(smime).to_der) + end + def test_degenerate_pkcs7 ca_cert_pem = <<END -----BEGIN CERTIFICATE----- |