6daba0
From 9596788bdd2d061bef042485af14262e9fc4020c Mon Sep 17 00:00:00 2001
6daba0
From: Kazuki Yamaguchi <k@rhe.jp>
6daba0
Date: Thu, 13 Aug 2020 23:20:55 +0900
6daba0
Subject: [PATCH] test/openssl/test_pkcs12: fix test failures with OpenSSL 3.0
6daba0
6daba0
OpenSSL's PKCS12_create() by default uses pbewithSHAAnd40BitRC2-CBC for
6daba0
encryption of the certificates. However, in OpenSSL 3.0, the algorithm
6daba0
is part of the legacy provider and is not enabled by default.
6daba0
6daba0
Specify another algorithm that is still in the default provider for
6daba0
these test cases.
6daba0
---
6daba0
 test/openssl/test_pkcs12.rb | 297 ++++++++++++++++++------------------
6daba0
 1 file changed, 149 insertions(+), 148 deletions(-)
6daba0
6daba0
diff --git a/test/openssl/test_pkcs12.rb b/test/openssl/test_pkcs12.rb
6daba0
index fdbe753b17..ec676743bc 100644
6daba0
--- a/test/openssl/test_pkcs12.rb
6daba0
+++ b/test/openssl/test_pkcs12.rb
6daba0
@@ -5,6 +5,9 @@
6daba0
 
6daba0
 module OpenSSL
6daba0
   class TestPKCS12 < OpenSSL::TestCase
6daba0
+    DEFAULT_PBE_PKEYS = "PBE-SHA1-3DES"
6daba0
+    DEFAULT_PBE_CERTS = "PBE-SHA1-3DES"
6daba0
+
6daba0
     def setup
6daba0
       super
6daba0
       ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA")
6daba0
@@ -14,47 +17,41 @@ def setup
6daba0
         ["subjectKeyIdentifier","hash",false],
6daba0
         ["authorityKeyIdentifier","keyid:always",false],
6daba0
       ]
6daba0
-      @cacert = issue_cert(ca, Fixtures.pkey("rsa2048"), 1, ca_exts, nil, nil)
6daba0
+      ca_key = Fixtures.pkey("rsa-1")
6daba0
+      @cacert = issue_cert(ca, ca_key, 1, ca_exts, nil, nil)
6daba0
 
6daba0
       inter_ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=Intermediate CA")
6daba0
-      inter_ca_key = OpenSSL::PKey.read <<-_EOS_
6daba0
------BEGIN RSA PRIVATE KEY-----
6daba0
-MIICXAIBAAKBgQDp7hIG0SFMG/VWv1dBUWziAPrNmkMXJgTCAoB7jffzRtyyN04K
6daba0
-oq/89HAszTMStZoMigQURfokzKsjpUp8OYCAEsBtt9d5zPndWMz/gHN73GrXk3LT
6daba0
-ZsxEn7Xv5Da+Y9F/Hx2QZUHarV5cdZixq2NbzWGwrToogOQMh2pxN3Z/0wIDAQAB
6daba0
-AoGBAJysUyx3olpsGzv3OMRJeahASbmsSKTXVLZvoIefxOINosBFpCIhZccAG6UV
6daba0
-5c/xCvS89xBw8aD15uUfziw3AuT8QPEtHCgfSjeT7aWzBfYswEgOW4XPuWr7EeI9
6daba0
-iNHGD6z+hCN/IQr7FiEBgTp6A+i/hffcSdR83fHWKyb4M7TRAkEA+y4BNd668HmC
6daba0
-G5MPRx25n6LixuBxrNp1umfjEI6UZgEFVpYOg4agNuimN6NqM253kcTR94QNTUs5
6daba0
-Kj3EhG1YWwJBAO5rUjiOyCNVX2WUQrOMYK/c1lU7fvrkdygXkvIGkhsPoNRzLPeA
6daba0
-HGJszKtrKD8bNihWpWNIyqKRHfKVD7yXT+kCQGCAhVCIGTRoypcDghwljHqLnysf
6daba0
-ci0h5ZdPcIqc7ODfxYhFsJ/Rql5ONgYsT5Ig/+lOQAkjf+TRYM4c2xKx2/8CQBvG
6daba0
-jv6dy70qDgIUgqzONtlmHeYyFzn9cdBO5sShdVYHvRHjFSMEXsosqK9zvW2UqvuK
6daba0
-FJx7d3f29gkzynCLJDkCQGQZlEZJC4vWmWJGRKJ24P6MyQn3VsPfErSKOg4lvyM3
6daba0
-Li8JsX5yIiuVYaBg/6ha3tOg4TCa5K/3r3tVliRZ2Es=
6daba0
------END RSA PRIVATE KEY-----
6daba0
-      _EOS_
6daba0
-      @inter_cacert = issue_cert(inter_ca, inter_ca_key, 2, ca_exts, @cacert, Fixtures.pkey("rsa2048"))
6daba0
+      inter_ca_key = Fixtures.pkey("rsa-2")
6daba0
+      @inter_cacert = issue_cert(inter_ca, inter_ca_key, 2, ca_exts, @cacert, ca_key)
6daba0
 
6daba0
       exts = [
6daba0
         ["keyUsage","digitalSignature",true],
6daba0
         ["subjectKeyIdentifier","hash",false],
6daba0
       ]
6daba0
       ee = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=Ruby PKCS12 Test Certificate")
6daba0
-      @mykey = Fixtures.pkey("rsa1024")
6daba0
+      @mykey = Fixtures.pkey("rsa-3")
6daba0
       @mycert = issue_cert(ee, @mykey, 3, exts, @inter_cacert, inter_ca_key)
6daba0
     end
6daba0
 
6daba0
-    def test_create
6daba0
+    def test_create_single_key_single_cert
6daba0
       pkcs12 = OpenSSL::PKCS12.create(
6daba0
         "omg",
6daba0
         "hello",
6daba0
         @mykey,
6daba0
-        @mycert
6daba0
+        @mycert,
6daba0
+        nil,
6daba0
+        DEFAULT_PBE_PKEYS,
6daba0
+        DEFAULT_PBE_CERTS,
6daba0
       )
6daba0
-      assert_equal @mycert.to_der, pkcs12.certificate.to_der
6daba0
+      assert_equal @mycert, pkcs12.certificate
6daba0
       assert_equal @mykey.to_der, pkcs12.key.to_der
6daba0
       assert_nil pkcs12.ca_certs
6daba0
+
6daba0
+      der = pkcs12.to_der
6daba0
+      decoded = OpenSSL::PKCS12.new(der, "omg")
6daba0
+      assert_equal @mykey.to_der, decoded.key.to_der
6daba0
+      assert_equal @mycert, decoded.certificate
6daba0
+      assert_equal [], Array(decoded.ca_certs)
6daba0
     end
6daba0
 
6daba0
     def test_create_no_pass
6daba0
@@ -62,14 +59,17 @@ def test_create_no_pass
6daba0
         nil,
6daba0
         "hello",
6daba0
         @mykey,
6daba0
-        @mycert
6daba0
+        @mycert,
6daba0
+        nil,
6daba0
+        DEFAULT_PBE_PKEYS,
6daba0
+        DEFAULT_PBE_CERTS,
6daba0
       )
6daba0
-      assert_equal @mycert.to_der, pkcs12.certificate.to_der
6daba0
+      assert_equal @mycert, pkcs12.certificate
6daba0
       assert_equal @mykey.to_der, pkcs12.key.to_der
6daba0
       assert_nil pkcs12.ca_certs
6daba0
 
6daba0
       decoded = OpenSSL::PKCS12.new(pkcs12.to_der)
6daba0
-      assert_cert @mycert, decoded.certificate
6daba0
+      assert_equal @mycert, decoded.certificate
6daba0
     end
6daba0
 
6daba0
     def test_create_with_chain
6daba0
@@ -80,7 +80,9 @@ def test_create_with_chain
6daba0
         "hello",
6daba0
         @mykey,
6daba0
         @mycert,
6daba0
-        chain
6daba0
+        chain,
6daba0
+        DEFAULT_PBE_PKEYS,
6daba0
+        DEFAULT_PBE_CERTS,
6daba0
       )
6daba0
       assert_equal chain, pkcs12.ca_certs
6daba0
     end
6daba0
@@ -95,14 +97,16 @@ def test_create_with_chain_decode
6daba0
         "hello",
6daba0
         @mykey,
6daba0
         @mycert,
6daba0
-        chain
6daba0
+        chain,
6daba0
+        DEFAULT_PBE_PKEYS,
6daba0
+        DEFAULT_PBE_CERTS,
6daba0
       )
6daba0
 
6daba0
       decoded = OpenSSL::PKCS12.new(pkcs12.to_der, passwd)
6daba0
       assert_equal chain.size, decoded.ca_certs.size
6daba0
-      assert_include_cert @cacert, decoded.ca_certs
6daba0
-      assert_include_cert @inter_cacert, decoded.ca_certs
6daba0
-      assert_cert @mycert, decoded.certificate
6daba0
+      assert_include decoded.ca_certs, @cacert
6daba0
+      assert_include decoded.ca_certs, @inter_cacert
6daba0
+      assert_equal @mycert, decoded.certificate
6daba0
       assert_equal @mykey.to_der, decoded.key.to_der
6daba0
     end
6daba0
 
6daba0
@@ -126,8 +130,8 @@ def test_create_with_itr
6daba0
         @mykey,
6daba0
         @mycert,
6daba0
         [],
6daba0
-        nil,
6daba0
-        nil,
6daba0
+        DEFAULT_PBE_PKEYS,
6daba0
+        DEFAULT_PBE_CERTS,
6daba0
         2048
6daba0
       )
6daba0
 
6daba0
@@ -138,8 +142,8 @@ def test_create_with_itr
6daba0
           @mykey,
6daba0
           @mycert,
6daba0
           [],
6daba0
-          nil,
6daba0
-          nil,
6daba0
+          DEFAULT_PBE_PKEYS,
6daba0
+          DEFAULT_PBE_CERTS,
6daba0
           "omg"
6daba0
         )
6daba0
       end
6daba0
@@ -152,7 +156,8 @@ def test_create_with_mac_itr
6daba0
         @mykey,
6daba0
         @mycert,
6daba0
         [],
6daba0
-        nil,
6daba0
+        DEFAULT_PBE_PKEYS,
6daba0
+        DEFAULT_PBE_CERTS,
6daba0
         nil,
6daba0
         nil,
6daba0
         2048
6daba0
@@ -165,148 +170,144 @@ def test_create_with_mac_itr
6daba0
           @mykey,
6daba0
           @mycert,
6daba0
           [],
6daba0
-          nil,
6daba0
-          nil,
6daba0
+          DEFAULT_PBE_PKEYS,
6daba0
+          DEFAULT_PBE_CERTS,
6daba0
           nil,
6daba0
           "omg"
6daba0
         )
6daba0
       end
6daba0
     end
6daba0
 
6daba0
-    def test_new_with_one_key_and_one_cert
6daba0
-      # generated with:
6daba0
-      #   openssl version #=> OpenSSL 1.0.2h  3 May 2016
6daba0
-      #   openssl pkcs12 -in <@mycert> -inkey <RSA1024> -export -out <out>
6daba0
-      str = <<~EOF.unpack("m").first
6daba0
-MIIGQQIBAzCCBgcGCSqGSIb3DQEHAaCCBfgEggX0MIIF8DCCAu8GCSqGSIb3DQEH
6daba0
-BqCCAuAwggLcAgEAMIIC1QYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIeZPM
6daba0
-Rh6KiXgCAggAgIICqL6O+LCZmBzdIg6mozPF3FpY0hVbWHvTNMiDHieW3CrAanhN
6daba0
-YCH2/wHqH8WpFpEWwF0qEEXAWjHsIlYB4Cfqo6b7XpuZe5eVESsjNTOTMF1JCUJj
6daba0
-A6iNefXmCFLync1JK5LUodRDhTlKLU1WPK20X9X4vuEwHn8wt5RUb8P0E+Xh6rpS
6daba0
-XC4LkZKT45zF3cJa/n5+dW65ohVGNVnF9D1bCNEKHMOllK1V9omutQ9slW88hpga
6daba0
-LGiFsJoFOb/ESGb78KO+bd6zbX1MdKdBV+WD6t1uF/cgU65y+2A4nXs1urda+MJ7
6daba0
-7iVqiB7Vnc9cANTbAkTSGNyoUDVM/NZde782/8IvddLAzUZ2EftoRDke6PvuBOVL
6daba0
-ljBhNWmdamrtBqzuzVZCRdWq44KZkF2Xoc9asepwIkdVmntzQF7f1Z+Ta5yg6HFp
6daba0
-xnr7CuM+MlHEShXkMgYtHnwAq10fDMSXIvjhi/AA5XUAusDO3D+hbtcRDcJ4uUes
6daba0
-dm5dhQE2qJ02Ysn4aH3o1F3RYNOzrxejHJwl0D2TCE8Ww2X342xib57+z9u03ufj
6daba0
-jswhiMKxy67f1LhUMq3XrT3uV6kCVXk/KUOUPcXPlPVNA5JmZeFhMp6GrtB5xJJ9
6daba0
-wwBZD8UL5A2U2Mxi2OZsdUBv8eo3jnjZ284aFpt+mCjIHrLW5O0jwY8OCwSlYUoY
6daba0
-IY00wlabX0s82kBcIQNZbC1RSV2267ro/7A0MClc8YQ/zWN0FKY6apgtUkHJI1cL
6daba0
-1dc77mhnjETjwW94iLMDFy4zQfVu7IfCBqOBzygRNnqqUG66UhTs1xFnWM0mWXl/
6daba0
-Zh9+AMpbRLIPaKCktIjl5juzzm+KEgkhD+707XRCFIGUYGP5bSHzGaz8PK9hj0u1
6daba0
-E2SpZHUvYOcawmxtA7pmpSxl5uQjMIIC+QYJKoZIhvcNAQcBoIIC6gSCAuYwggLi
6daba0
-MIIC3gYLKoZIhvcNAQwKAQKgggKmMIICojAcBgoqhkiG9w0BDAEDMA4ECKB338m8
6daba0
-qSzHAgIIAASCAoACFhJeqA3xx+s1qIH6udNQYY5hAL6oz7SXoGwFhDiceSyJjmAD
6daba0
-Dby9XWM0bPl1Gj5nqdsuI/lAM++fJeoETk+rxw8q6Ofk2zUaRRE39qgpwBwSk44o
6daba0
-0SAFJ6bzHpc5CFh6sZmDaUX5Lm9GtjnGFmmsPTSJT5an5JuJ9WczGBEd0nSBQhJq
6daba0
-xHbTGZiN8i3SXcIH531Sub+CBIFWy5lyCKgDYh/kgJFGQAaWUOjLI+7dCEESonXn
6daba0
-F3Jh2uPbnDF9MGJyAFoNgWFhgSpi1cf6AUi87GY4Oyur88ddJ1o0D0Kz2uw8/bpG
6daba0
-s3O4PYnIW5naZ8mozzbnYByEFk7PoTwM7VhoFBfYNtBoAI8+hBnPY/Y71YUojEXf
6daba0
-SeX6QbtkIANfzS1XuFNKElShC3DPQIHpKzaatEsfxHfP+8VOav6zcn4mioao7NHA
6daba0
-x7Dp6R1enFGoQOq4UNjBT8YjnkG5vW8zQHW2dAHLTJBq6x2Fzm/4Pjo/8vM1FiGl
6daba0
-BQdW5vfDeJ/l6NgQm3xR9ka2E2HaDqIcj1zWbN8jy/bHPFJYuF/HH8MBV/ngMIXE
6daba0
-vFEW/ToYv8eif0+EpUtzBsCKD4a7qYYYh87RmEVoQU96q6m+UbhpD2WztYfAPkfo
6daba0
-OSL9j2QHhVczhL7OAgqNeM95pOsjA9YMe7exTeqK31LYnTX8oH8WJD1xGbRSJYgu
6daba0
-SY6PQbumcJkc/TFPn0GeVUpiDdf83SeG50lo/i7UKQi2l1hi5Y51fQhnBnyMr68D
6daba0
-llSZEvSWqfDxBJkBpeg6PIYvkTpEwKRJpVQoM3uYvdqVSSnW6rydqIb+snfOrlhd
6daba0
-f+xCtq9xr+kHeTSqLIDRRAnMfgFRhY3IBlj6MSUwIwYJKoZIhvcNAQkVMRYEFBdb
6daba0
-8XGWehZ6oPj56Pf/uId46M9AMDEwITAJBgUrDgMCGgUABBRvSCB04/f8f13pp2PF
6daba0
-vyl2WuMdEwQIMWFFphPkIUICAggA
6daba0
-      EOF
6daba0
-      p12 = OpenSSL::PKCS12.new(str, "abc123")
6daba0
-
6daba0
-      assert_equal @mykey.to_der, p12.key.to_der
6daba0
-      assert_equal @mycert.subject.to_der, p12.certificate.subject.to_der
6daba0
-      assert_equal [], Array(p12.ca_certs)
6daba0
-    end
6daba0
-
6daba0
     def test_new_with_no_keys
6daba0
       # generated with:
6daba0
-      #   openssl pkcs12 -in <@mycert> -nokeys -export -out <out>
6daba0
+      #   openssl pkcs12 -certpbe PBE-SHA1-3DES -in <@mycert> -nokeys -export
6daba0
       str = <<~EOF.unpack("m").first
6daba0
-MIIDHAIBAzCCAuIGCSqGSIb3DQEHAaCCAtMEggLPMIICyzCCAscGCSqGSIb3DQEH
6daba0
-BqCCArgwggK0AgEAMIICrQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIX4+W
6daba0
-irqwH40CAggAgIICgOaCyo+5+6IOVoGCCL80c50bkkzAwqdXxvkKExJSdcJz2uMU
6daba0
-0gRrKnZEjL5wrUsN8RwZu8DvgQTEhNEkKsUgM7AWainmN/EnwohIdHZAHpm6WD67
6daba0
-I9kLGp0/DHrqZrV9P2dLfhXLUSQE8PI0tqZPZ8UEABhizkViw4eISTkrOUN7pGbN
6daba0
-Qtx/oqgitXDuX2polbxYYDwt9vfHZhykHoKgew26SeJyZfeMs/WZ6olEI4cQUAFr
6daba0
-mvYGuC1AxEGTo9ERmU8Pm16j9Hr9PFk50WYe+rnk9oX3wJogQ7XUWS5kYf7XRycd
6daba0
-NDkNiwV/ts94bbuaGZp1YA6I48FXpIc8b5fX7t9tY0umGaWy0bARe1L7o0Y89EPe
6daba0
-lMg25rOM7j3uPtFG8whbSfdETSy57UxzzTcJ6UwexeaK6wb2jqEmj5AOoPLWeaX0
6daba0
-LyOAszR3v7OPAcjIDYZGdrbb3MZ2f2vo2pdQfu9698BrWhXuM7Odh73RLhJVreNI
6daba0
-aezNOAtPyBlvGiBQBGTzRIYHSLL5Y5aVj2vWLAa7hjm5qTL5C5mFdDIo6TkEMr6I
6daba0
-OsexNQofEGs19kr8nARXDlcbEimk2VsPj4efQC2CEXZNzURsKca82pa62MJ8WosB
6daba0
-DTFd8X06zZZ4nED50vLopZvyW4fyW60lELwOyThAdG8UchoAaz2baqP0K4de44yM
6daba0
-Y5/yPFDu4+GoimipJfbiYviRwbzkBxYW8+958ILh0RtagLbvIGxbpaym9PqGjOzx
6daba0
-ShNXjLK2aAFZsEizQ8kd09quJHU/ogq2cUXdqqhmOqPnUWrJVi/VCoRB3Pv1/lE4
6daba0
-mrUgr2YZ11rYvBw6g5XvNvFcSc53OKyV7SLn0dwwMTAhMAkGBSsOAwIaBQAEFEWP
6daba0
-1WRQykaoD4uJCpTx/wv0SLLBBAiDKI26LJK7xgICCAA=
6daba0
+MIIGJAIBAzCCBeoGCSqGSIb3DQEHAaCCBdsEggXXMIIF0zCCBc8GCSqGSIb3
6daba0
+DQEHBqCCBcAwggW8AgEAMIIFtQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMw
6daba0
+DgQIjv5c3OHvnBgCAggAgIIFiMJa8Z/w7errRvCQPXh9dGQz3eJaFq3S2gXD
6daba0
+rh6oiwsgIRJZvYAWgU6ll9NV7N5SgvS2DDNVuc3tsP8TPWjp+bIxzS9qmGUV
6daba0
+kYWuURWLMKhpF12ZRDab8jcIwBgKoSGiDJk8xHjx6L613/XcRM6ln3VeQK+C
6daba0
+hlW5kXniNAUAgTft25Fn61Xa8xnhmsz/fk1ycGnyGjKCnr7Mgy7KV0C1vs23
6daba0
+18n8+b1ktDWLZPYgpmXuMFVh0o+HJTV3O86mkIhJonMcnOMgKZ+i8KeXaocN
6daba0
+JQlAPBG4+HOip7FbQT/h6reXv8/J+hgjLfqAb5aV3m03rUX9mXx66nR1tQU0
6daba0
+Jq+XPfDh5+V4akIczLlMyyo/xZjI1/qupcMjr+giOGnGd8BA3cuXW+ueLQiA
6daba0
+PpTp+DQLVHRfz9XTZbyqOReNEtEXvO9gOlKSEY5lp65ItXVEs2Oqyf9PfU9y
6daba0
+DUltN6fCMilwPyyrsIBKXCu2ZLM5h65KVCXAYEX9lNqj9zrQ7vTqvCNN8RhS
6daba0
+ScYouTX2Eqa4Z+gTZWLHa8RCQFoyP6hd+97/Tg2Gv2UTH0myQxIVcnpdi1wy
6daba0
+cqb+er7tyKbcO96uSlUjpj/JvjlodtjJcX+oinEqGb/caj4UepbBwiG3vv70
6daba0
+63bS3jTsOLNjDRsR9if3LxIhLa6DW8zOJiGC+EvMD1o4dzHcGVpQ/pZWCHZC
6daba0
++YiNJpQOBApiZluE+UZ0m3XrtHFQYk7xblTrh+FJF91wBsok0rZXLAKd8m4p
6daba0
+OJsc7quCq3cuHRRTzJQ4nSe01uqbwGDAYwLvi6VWy3svU5qa05eDRmgzEFTG
6daba0
+e84Gp/1LQCtpQFr4txkjFchO2whWS80KoQKqmLPyGm1D9Lv53Q4ZsKMgNihs
6daba0
+rEepuaOZMKHl4yMAYFoOXZCAYzfbhN6b2phcFAHjMUHUw9e3F0QuDk9D0tsr
6daba0
+riYTrkocqlOKfK4QTomx27O0ON2J6f1rtEojGgfl9RNykN7iKGzjS3914QjW
6daba0
+W6gGiZejxHsDPEAa4gUp0WiSUSXtD5WJgoyAzLydR2dKWsQ4WlaUXi01CuGy
6daba0
++xvncSn2nO3bbot8VD5H6XU1CjREVtnIfbeRYO/uofyLUP3olK5RqN6ne6Xo
6daba0
+eXnJ/bjYphA8NGuuuvuW1SCITmINkZDLC9cGlER9+K65RR/DR3TigkexXMeN
6daba0
+aJ70ivZYAl0OuhZt3TGIlAzS64TIoyORe3z7Ta1Pp9PZQarYJpF9BBIZIFor
6daba0
+757PHHuQKRuugiRkp8B7v4eq1BQ+VeAxCKpyZ7XrgEtbY/AWDiaKcGPKPjc3
6daba0
+AqQraVeQm7kMBT163wFmZArCphzkDOI3bz2oEO8YArMgLq2Vto9jAZlqKyWr
6daba0
+pi2bSJxuoP1aoD58CHcWMrf8/j1LVdQhKgHQXSik2ID0H2Wc/XnglhzlVFuJ
6daba0
+JsNIW/EGJlZh/5WDez9U0bXqnBlu3uasPEOezdoKlcCmQlmTO5+uLHYLEtNA
6daba0
+EH9MtnGZebi9XS5meTuS6z5LILt8O9IHZxmT3JRPHYj287FEzotlLdcJ4Ee5
6daba0
+enW41UHjLrfv4OaITO1hVuoLRGdzjESx/fHMWmxroZ1nVClxECOdT42zvIYJ
6daba0
+J3xBZ0gppzQ5fjoYiKjJpxTflRxUuxshk3ih6VUoKtqj/W18tBQ3g5SOlkgT
6daba0
+yCW8r74yZlfYmNrPyDMUQYpLUPWj2n71GF0KyPfTU5yOatRgvheh262w5BG3
6daba0
+omFY7mb3tCv8/U2jdMIoukRKacpZiagofz3SxojOJq52cHnCri+gTHBMX0cO
6daba0
+j58ygfntHWRzst0pV7Ze2X3fdCAJ4DokH6bNJNthcgmolFJ/y3V1tJjgsdtQ
6daba0
+7Pjn/vE6xUV0HXE2x4yoVYNirbAMIvkN/X+atxrN0dA4AchN+zGp8TAxMCEw
6daba0
+CQYFKw4DAhoFAAQUQ+6XXkyhf6uYgtbibILN2IjKnOAECLiqoY45MPCrAgII
6daba0
+AA==
6daba0
       EOF
6daba0
       p12 = OpenSSL::PKCS12.new(str, "abc123")
6daba0
 
6daba0
       assert_equal nil, p12.key
6daba0
       assert_equal nil, p12.certificate
6daba0
       assert_equal 1, p12.ca_certs.size
6daba0
-      assert_equal @mycert.subject.to_der, p12.ca_certs[0].subject.to_der
6daba0
+      assert_equal @mycert.subject, p12.ca_certs[0].subject
6daba0
     end
6daba0
 
6daba0
     def test_new_with_no_certs
6daba0
       # generated with:
6daba0
-      #   openssl pkcs12 -inkey <RSA1024> -nocerts -export -out <out>
6daba0
+      #   openssl pkcs12 -inkey fixtures/openssl/pkey/rsa-1.pem -nocerts -export
6daba0
       str = <<~EOF.unpack("m").first
6daba0
-MIIDJwIBAzCCAu0GCSqGSIb3DQEHAaCCAt4EggLaMIIC1jCCAtIGCSqGSIb3DQEH
6daba0
-AaCCAsMEggK/MIICuzCCArcGCyqGSIb3DQEMCgECoIICpjCCAqIwHAYKKoZIhvcN
6daba0
-AQwBAzAOBAg6AaYnJs84SwICCAAEggKAQzZH+fWSpcQYD1J7PsGSune85A++fLCQ
6daba0
-V7tacp2iv95GJkxwYmfTP176pJdgs00mceB9UJ/u9EX5nD0djdjjQjwo6sgKjY0q
6daba0
-cpVhZw8CMxw7kBD2dhtui0zT8z5hy03LePxsjEKsGiSbeVeeGbSfw/I6AAYbv+Uh
6daba0
-O/YPBGumeHj/D2WKnfsHJLQ9GAV3H6dv5VKYNxjciK7f/JEyZCuUQGIN64QFHDhJ
6daba0
-7fzLqd/ul3FZzJZO6a+dwvcgux09SKVXDRSeFmRCEX4b486iWhJJVspCo9P2KNne
6daba0
-ORrpybr3ZSwxyoICmjyo8gj0OSnEfdx9790Ej1takPqSA1wIdSdBLekbZqB0RBQg
6daba0
-DEuPOsXNo3QFi8ji1vu0WBRJZZSNC2hr5NL6lNR+DKxG8yzDll2j4W4BBIp22mAE
6daba0
-7QRX7kVxu17QJXQhOUac4Dd1qXmzebP8t6xkAxD9L7BWEN5OdiXWwSWGjVjMBneX
6daba0
-nYObi/3UT/aVc5WHMHK2BhCI1bwH51E6yZh06d5m0TQpYGUTWDJdWGBSrp3A+8jN
6daba0
-N2PMQkWBFrXP3smHoTEN4oZC4FWiPsIEyAkQsfKRhcV9lGKl2Xgq54ROTFLnwKoj
6daba0
-Z3zJScnq9qmNzvVZSMmDLkjLyDq0pxRxGKBvgouKkWY7VFFIwwBIJM39iDJ5NbBY
6daba0
-i1AQFTRsRSsZrNVPasCXrIq7bhMoJZb/YZOGBLNyJVqKUoYXhtwsajzSq54VlWft
6daba0
-JxsPayEd4Vi6O9EU1ahnj6qFEZiKFzsicgK2J1Rb8cYagrp0XWjHW0SBn5GVUWCg
6daba0
-GUokSFG/0JTdeYTo/sQuG4qNgJkOolRjpeI48Fciq5VUWLvVdKioXzAxMCEwCQYF
6daba0
-Kw4DAhoFAAQUYAuwVtGD1TdgbFK4Yal2XBgwUR4ECEawsN3rNaa6AgIIAA==
6daba0
+MIIJ7wIBAzCCCbUGCSqGSIb3DQEHAaCCCaYEggmiMIIJnjCCCZoGCSqGSIb3
6daba0
+DQEHAaCCCYsEggmHMIIJgzCCCX8GCyqGSIb3DQEMCgECoIIJbjCCCWowHAYK
6daba0
+KoZIhvcNAQwBAzAOBAjX5nN8jyRKwQICCAAEgglIBIRLHfiY1mNHpl3FdX6+
6daba0
+72L+ZOVXnlZ1MY9HSeg0RMkCJcm0mJ2UD7INUOGXvwpK9fr6WJUZM1IqTihQ
6daba0
+1dM0crRC2m23aP7KtAlXh2DYD3otseDtwoN/NE19RsiJzeIiy5TSW1d47weU
6daba0
++D4Ig/9FYVFPTDgMzdCxXujhvO/MTbZIjqtcS+IOyF+91KkXrHkfkGjZC7KS
6daba0
+WRmYw9BBuIPQEewdTI35sAJcxT8rK7JIiL/9mewbSE+Z28Wq1WXwmjL3oZm9
6daba0
+lw6+f515b197GYEGomr6LQqJJamSYpwQbTGHonku6Tf3ylB4NLFqOnRCKE4K
6daba0
+zRSSYIqJBlKHmQ4pDm5awoupHYxMZLZKZvXNYyYN3kV8r1iiNVlY7KBR4CsX
6daba0
+rqUkXehRmcPnuqEMW8aOpuYe/HWf8PYI93oiDZjcEZMwW2IZFFrgBbqUeNCM
6daba0
+CQTkjAYxi5FyoaoTnHrj/aRtdLOg1xIJe4KKcmOXAVMmVM9QEPNfUwiXJrE7
6daba0
+n42gl4NyzcZpxqwWBT++9TnQGZ/lEpwR6dzkZwICNQLdQ+elsdT7mumywP+1
6daba0
+WaFqg9kpurimaiBu515vJNp9Iqv1Nmke6R8Lk6WVRKPg4Akw0fkuy6HS+LyN
6daba0
+ofdCfVUkPGN6zkjAxGZP9ZBwvXUbLRC5W3N5qZuAy5WcsS75z+oVeX9ePV63
6daba0
+cue23sClu8JSJcw3HFgPaAE4sfkQ4MoihPY5kezgT7F7Lw/j86S0ebrDNp4N
6daba0
+Y685ec81NRHJ80CAM55f3kGCOEhoifD4VZrvr1TdHZY9Gm3b1RYaJCit2huF
6daba0
+nlOfzeimdcv/tkjb6UsbpXx3JKkF2NFFip0yEBERRCdWRYMUpBRcl3ad6XHy
6daba0
+w0pVTgIjTxGlbbtOCi3siqMOK0GNt6UgjoEFc1xqjsgLwU0Ta2quRu7RFPGM
6daba0
+GoEwoC6VH23p9Hr4uTFOL0uHfkKWKunNN+7YPi6LT6IKmTQwrp+fTO61N6Xh
6daba0
+KlqTpwESKsIJB2iMnc8wBkjXJtmG/e2n5oTqfhICIrxYmEb7zKDyK3eqeTj3
6daba0
+FhQh2t7cUIiqcT52AckUqniPmlE6hf82yBjhaQUPfi/ExTBtTDSmFfRPUzq+
6daba0
+Rlla4OHllPRzUXJExyansgCxZbPqlw46AtygSWRGcWoYAKUKwwoYjerqIV5g
6daba0
+JoZICV9BOU9TXco1dHXZQTs/nnTwoRmYiL/Ly5XpvUAnQOhYeCPjBeFnPSBR
6daba0
+R/hRNqrDH2MOV57v5KQIH2+mvy26tRG+tVGHmLMaOJeQkjLdxx+az8RfXIrH
6daba0
+7hpAsoBb+g9jUDY1mUVavPk1T45GMpQH8u3kkzRvChfOst6533GyIZhE7FhN
6daba0
+KanC6ACabVFDUs6P9pK9RPQMp1qJfpA0XJFx5TCbVbPkvnkZd8K5Tl/tzNM1
6daba0
+n32eRao4MKr9KDwoDL93S1yJgYTlYjy1XW/ewdedtX+B4koAoz/wSXDYO+GQ
6daba0
+Zu6ZSpKSEHTRPhchsJ4oICvpriVaJkn0/Z7H3YjNMB9U5RR9+GiIg1wY1Oa1
6daba0
+S3WfuwrrI6eqfbQwj6PDNu3IKy6srEgvJwaofQALNBPSYWbauM2brc8qsD+t
6daba0
+n8jC/aD1aMcy00+9t3H/RVCjEOb3yKfUpAldIkEA2NTTnZpoDQDXeNYU2F/W
6daba0
+yhmFjJy8A0O4QOk2xnZK9kcxSRs0v8vI8HivvgWENoVPscsDC4742SSIe6SL
6daba0
+f/T08reIX11f0K70rMtLhtFMQdHdYOTNl6JzhkHPLr/f9MEZsBEQx52depnF
6daba0
+ARb3gXGbCt7BAi0OeCEBSbLr2yWuW4r55N0wRZSOBtgqgjsiHP7CDQSkbL6p
6daba0
+FPlQS1do9gBSHiNYvsmN1LN5bG+mhcVb0UjZub4mL0EqGadjDfDdRJmWqlX0
6daba0
+r5dyMcOWQVy4O2cPqYFlcP9lk8buc5otcyVI2isrAFdlvBK29oK6jc52Aq5Q
6daba0
+0b2ESDlgX8WRgiOPPxK8dySKEeuIwngCtJyNTecP9Ug06TDsu0znZGCXJ+3P
6daba0
+8JOpykgA8EQdOZOYHbo76ZfB2SkklI5KeRA5IBjGs9G3TZ4PHLy2DIwsbWzS
6daba0
+H1g01o1x264nx1cJ+eEgUN/KIiGFIib42RS8Af4D5e+Vj54Rt3axq+ag3kI+
6daba0
+53p8uotyu+SpvvXUP7Kv4xpQ/L6k41VM0rfrd9+DrlDVvSfxP2uh6I1TKF7A
6daba0
+CT5n8zguMbng4PGjxvyPBM5k62t6hN5fuw6Af0aZFexh+IjB/5wFQ6onSz23
6daba0
+fBzMW4St7RgSs8fDg3lrM+5rwXiey1jxY1ddaxOoUsWRMvvdd7rZxRZQoN5v
6daba0
+AcI5iMkK/vvpQgC/sfzhtXtrJ2XOPZ+GVgi7VcuDLKSkdFMcPbGzO8SdxUnS
6daba0
+SLV5XTKqKND+Lrfx7DAoKi5wbDFHu5496/MHK5qP4tBe6sJ5bZc+KDJIH46e
6daba0
+wTV1oWtB5tV4q46hOb5WRcn/Wjz3HSKaGZgx5QbK1MfKTzD5CTUn+ArMockX
6daba0
+2wJhPnFK85U4rgv8iBuh9bRjyw+YaKf7Z3loXRiE1eRG6RzuPF0ZecFiDumk
6daba0
+AC/VUXynJhzePBLqzrQj0exanACdullN+pSfHiRWBxR2VFUkjoFP5X45GK3z
6daba0
+OstSH6FOkMVU4afqEmjsIwozDFIyin5EyWTtdhJe3szdJSGY23Tut+9hUatx
6daba0
+9FDFLESOd8z3tyQSNiLk/Hib+e/lbjxqbXBG/p/oyvP3N999PLUPtpKqtYkV
6daba0
+H0+18sNh9CVfojiJl44fzxe8yCnuefBjut2PxEN0EFRBPv9P2wWlmOxkPKUq
6daba0
+NrCJP0rDj5aONLrNZPrR8bZNdIShkZ/rKkoTuA0WMZ+xUlDRxAupdMkWAlrz
6daba0
+8IcwNcdDjPnkGObpN5Ctm3vK7UGSBmPeNqkXOYf3QTJ9gStJEd0F6+DzTN5C
6daba0
+KGt1IyuGwZqL2Yk51FDIIkr9ykEnBMaA39LS7GFHEDNGlW+fKC7AzA0zfoOr
6daba0
+fXZlHMBuqHtXqk3zrsHRqGGoocigg4ctrhD1UREYKj+eIj1TBiRdf7c6+COf
6daba0
+NIOmej8pX3FmZ4ui+dDA8r2ctgsWHrb4A6iiH+v1DRA61GtoaA/tNRggewXW
6daba0
+VXCZCGWyyTuyHGOqq5ozrv5MlzZLWD/KV/uDsAWmy20RAed1C4AzcXlpX25O
6daba0
+M4SNl47g5VRNJRtMqokc8j6TjZrzMDEwITAJBgUrDgMCGgUABBRrkIRuS5qg
6daba0
+BC8fv38mue8LZVcbHQQIUNrWKEnskCoCAggA
6daba0
       EOF
6daba0
       p12 = OpenSSL::PKCS12.new(str, "abc123")
6daba0
 
6daba0
-      assert_equal @mykey.to_der, p12.key.to_der
6daba0
+      assert_equal Fixtures.pkey("rsa-1").to_der, p12.key.to_der
6daba0
       assert_equal nil, p12.certificate
6daba0
       assert_equal [], Array(p12.ca_certs)
6daba0
     end
6daba0
 
6daba0
     def test_dup
6daba0
-      p12 = OpenSSL::PKCS12.create("pass", "name", @mykey, @mycert)
6daba0
+      p12 = OpenSSL::PKCS12.create(
6daba0
+        "pass",
6daba0
+        "name",
6daba0
+        @mykey,
6daba0
+        @mycert,
6daba0
+        nil,
6daba0
+        DEFAULT_PBE_PKEYS,
6daba0
+        DEFAULT_PBE_CERTS,
6daba0
+      )
6daba0
       assert_equal p12.to_der, p12.dup.to_der
6daba0
     end
6daba0
-
6daba0
-    private
6daba0
-    def assert_cert expected, actual
6daba0
-      [
6daba0
-        :subject,
6daba0
-        :issuer,
6daba0
-        :serial,
6daba0
-        :not_before,
6daba0
-        :not_after,
6daba0
-      ].each do |attribute|
6daba0
-        assert_equal expected.send(attribute), actual.send(attribute)
6daba0
-      end
6daba0
-      assert_equal expected.to_der, actual.to_der
6daba0
-    end
6daba0
-
6daba0
-    def assert_include_cert cert, ary
6daba0
-      der = cert.to_der
6daba0
-      ary.each do |candidate|
6daba0
-        if candidate.to_der == der
6daba0
-          return true
6daba0
-        end
6daba0
-      end
6daba0
-      false
6daba0
-    end
6daba0
   end
6daba0
 end
6daba0
 
6daba0
-- 
6daba0
2.32.0
6daba0