Skip to content

Commit ced912a

Browse files
committed
[test] adjust store tests (based on OSSL updates)
1 parent 7f99d1f commit ced912a

File tree

1 file changed

+47
-13
lines changed

1 file changed

+47
-13
lines changed

src/test/ruby/x509/test_x509store.rb

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -144,12 +144,13 @@ def test_add_cert_concurrently
144144

145145
cert_store = OpenSSL::X509::Store.new
146146
assert cert_store.add_cert(root_ca) == cert_store
147-
begin
147+
# NOTE: logic reverted in JOSSL 0.11.0 to match C-OpenSSL (just adds certificates wout checks)
148+
#begin
148149
cert_store.add_cert(root_ca)
149-
fail 'added same cert twice'
150-
rescue OpenSSL::X509::StoreError => e
151-
assert_equal 'cert already in hash table', e.message
152-
end
150+
#fail 'added same cert twice'
151+
#rescue OpenSSL::X509::StoreError => e
152+
#assert_equal 'cert already in hash table', e.message
153+
#end
153154
end
154155

155156
def test_adding_pem_to_store_like_rubygems
@@ -235,7 +236,17 @@ def test_verify
235236
assert_not_equal(OpenSSL::X509::V_OK, store.error)
236237

237238
store.add_cert(ca1_cert)
238-
assert_equal(true, store.verify(ca2_cert))
239+
verify = store.verify(ca1_cert)
240+
# TODO only works when cert_self_signed is reduced to do a EXFLAG_SI instead of EXFLAG_SS
241+
assert_equal ["/DC=org/DC=ruby-lang/CN=CA1"],
242+
store.chain.map { |cert| cert.subject.to_s }
243+
assert_equal(true, verify)
244+
245+
verify = store.verify(ca2_cert)
246+
assert_equal ["/DC=org/DC=ruby-lang/CN=CA2", "/DC=org/DC=ruby-lang/CN=CA1"],
247+
store.chain.map { |cert| cert.subject.to_s }
248+
assert_equal(true, verify)
249+
239250
assert_equal(OpenSSL::X509::V_OK, store.error)
240251
assert_equal("ok", store.error_string)
241252
chain = store.chain
@@ -306,25 +317,48 @@ def test_verify
306317
store.add_crl(crl1) # revoke no cert
307318
store.add_crl(crl2) # revoke ee2_cert
308319
assert_equal(true, store.verify(ca1_cert))
320+
assert_equal ["/DC=org/DC=ruby-lang/CN=CA1"],
321+
store.chain.map { |cert| cert.subject.to_s }
322+
309323
assert_equal(true, store.verify(ca2_cert))
310-
assert_equal(true, store.verify(ee1_cert, [ca2_cert]))
311-
assert_equal(false, store.verify(ee2_cert, [ca2_cert]))
324+
assert_equal ["/DC=org/DC=ruby-lang/CN=CA2", "/DC=org/DC=ruby-lang/CN=CA1"],
325+
store.chain.map { |cert| cert.subject.to_s }
326+
327+
verify = store.verify(ee1_cert, [ca2_cert])
328+
assert_equal(true, verify)
329+
330+
verify = store.verify(ee2_cert, [ca2_cert])
331+
assert_equal(false, verify)
312332

313333
store = OpenSSL::X509::Store.new
314334
store.purpose = OpenSSL::X509::PURPOSE_ANY
315335
store.flags = OpenSSL::X509::V_FLAG_CRL_CHECK
316336
store.add_cert(ca1_cert)
317337
store.add_crl(crl1_2) # revoke ca2_cert
318338
store.add_crl(crl2) # revoke ee2_cert
319-
assert_equal(true, store.verify(ca1_cert))
320-
assert_equal(false, store.verify(ca2_cert))
339+
340+
verify = store.verify(ca1_cert)
341+
assert_equal ["/DC=org/DC=ruby-lang/CN=CA1"],
342+
store.chain.map { |cert| cert.subject.to_s }
343+
assert_equal(true, verify)
344+
345+
verify = store.verify(ca2_cert)
346+
assert_equal ["/DC=org/DC=ruby-lang/CN=CA2", "/DC=org/DC=ruby-lang/CN=CA1"],
347+
store.chain.map { |cert| cert.subject.to_s }
348+
assert_equal(false, verify)
349+
321350
assert_equal(true, store.verify(ee1_cert, [ca2_cert]),
322351
"This test is expected to be success with OpenSSL 0.9.7c or later.")
323352
assert_equal(false, store.verify(ee2_cert, [ca2_cert]))
324353

325-
store.flags =
326-
OpenSSL::X509::V_FLAG_CRL_CHECK|OpenSSL::X509::V_FLAG_CRL_CHECK_ALL
327-
assert_equal(true, store.verify(ca1_cert))
354+
store.flags = OpenSSL::X509::V_FLAG_CRL_CHECK | OpenSSL::X509::V_FLAG_CRL_CHECK_ALL
355+
356+
verify = store.verify(ca1_cert)
357+
assert_equal ["/DC=org/DC=ruby-lang/CN=CA1"],
358+
store.chain.map { |cert| cert.subject.to_s }
359+
puts "verify(ca1_cert) #{verify} - store.error: #{store.error} (#{store.error_string})"
360+
assert_equal(true, verify)
361+
328362
assert_equal(false, store.verify(ca2_cert))
329363
assert_equal(false, store.verify(ee1_cert, [ca2_cert]))
330364
assert_equal(false, store.verify(ee2_cert, [ca2_cert]))

0 commit comments

Comments
 (0)