Skip to content

Commit 2950531

Browse files
committed
[test] same subject trust-store behavior
an attempt to have a test for the changes from #198
1 parent 387ec05 commit 2950531

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

src/test/ruby/x509/test_x509store.rb

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,4 +378,68 @@ def test_verify
378378
assert_equal(false, store.verify(ee2_cert))
379379
end
380380

381+
def test_verify_same_subject_ca
382+
383+
puts JOpenSSL::VERSION if defined? JRUBY_VERSION
384+
385+
@rsa1 = OpenSSL::PKey::RSA.generate 2048
386+
@rsa2 = OpenSSL::PKey::RSA.generate 2048
387+
@rsa3 = OpenSSL::PKey::RSA.generate 2048
388+
@rsa4 = OpenSSL::PKey::RSA.generate 2048
389+
@dsa1 = OpenSSL::PKey::DSA.generate 512
390+
@dsa2 = OpenSSL::PKey::DSA.generate 512
391+
@ca_same = OpenSSL::X509::Name.parse("/DC=com/DC=same-name/CN=CA")
392+
@ca_other = OpenSSL::X509::Name.parse("/DC=co/DC=anotherOne/CN=CA")
393+
@ee1 = OpenSSL::X509::Name.parse("/DC=com/DC=example/CN=ServerCert1")
394+
@ee2 = OpenSSL::X509::Name.parse("/DC=com/DC=example/CN=ServerCert2")
395+
@ee4 = OpenSSL::X509::Name.parse("/DC=com/DC=example/CN=ServerCert4")
396+
397+
now = Time.at(Time.now.to_i)
398+
not_before = now - 365 * 24 * 60 * 60
399+
not_after = now + 24 * 60 * 60
400+
ca_exts1 = [
401+
["basicConstraints","CA:TRUE",true],
402+
["keyUsage","cRLSign,keyCertSign",true],
403+
]
404+
ca_exts2 = [
405+
["basicConstraints","CA:TRUE",true],
406+
["keyUsage","keyCertSign",true],
407+
]
408+
ee_exts = [
409+
["keyUsage","keyEncipherment,digitalSignature",true],
410+
]
411+
ca1_cert = issue_cert(@ca_same, @rsa1, 1, not_before, now - 60 * 60, ca_exts1,
412+
nil, nil, OpenSSL::Digest::SHA1.new)
413+
ca2_cert = issue_cert(@ca_same, @rsa2, 2, not_before, not_after, ca_exts2,
414+
nil, nil, OpenSSL::Digest::SHA1.new)
415+
ca3_cert = issue_cert(@ca_other, @rsa3, 3, not_before, not_after, ca_exts1,
416+
nil, nil, OpenSSL::Digest::SHA1.new)
417+
ca4_cert = issue_cert(@ca_same, @rsa4, 4, not_before, not_after, ca_exts1,
418+
nil, nil, OpenSSL::Digest::SHA1.new)
419+
ee1_cert = issue_cert(@ee1, @dsa1, 10, now - 60, now + 1800, ee_exts,
420+
ca1_cert, @rsa1, OpenSSL::Digest::SHA1.new)
421+
ee2_cert = issue_cert(@ee2, @dsa2, 20, now - 60, now + 1800, ee_exts,
422+
ca2_cert, @rsa2, OpenSSL::Digest::SHA1.new)
423+
ee4_cert = issue_cert(@ee4, @dsa2, 20, now - 60, now + 1800, ee_exts,
424+
ca4_cert, @rsa4, OpenSSL::Digest::SHA1.new)
425+
426+
cert_store = OpenSSL::X509::Store.new
427+
cert_store.add_cert ca1_cert
428+
cert_store.add_cert ca2_cert
429+
cert_store.add_cert ca3_cert
430+
cert_store.add_cert ca4_cert
431+
432+
ok = cert_store.verify(ee1_cert)
433+
assert_equal 'certificate signature failure', cert_store.error_string
434+
assert_equal false, ok
435+
436+
ok = cert_store.verify(ee2_cert)
437+
assert_equal 'ok', cert_store.error_string
438+
assert_equal true, ok
439+
440+
ok = cert_store.verify(ee4_cert)
441+
assert_equal 'certificate signature failure', cert_store.error_string
442+
assert_equal false, ok # OpenSSL 1.1.1 behavior
443+
end
444+
381445
end

0 commit comments

Comments
 (0)