Skip to content

Commit 461cfcb

Browse files
committed
test_x509cert.rb: break up test_extension into smaller units
test_extesion is testing too many features at once and is hard to navigate. Let's split each chunk apart for more clarity.
1 parent c96e666 commit 461cfcb

File tree

1 file changed

+51
-15
lines changed

1 file changed

+51
-15
lines changed

test/openssl/test_x509cert.rb

Lines changed: 51 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,14 @@ def test_validity
6868
assert_equal(now.getutc, cert.not_after)
6969
end
7070

71-
def test_extension
71+
def test_extension_factory
7272
ca_exts = [
7373
["basicConstraints","CA:TRUE",true],
7474
["keyUsage","keyCertSign, cRLSign",true],
7575
["subjectKeyIdentifier","hash",false],
7676
["authorityKeyIdentifier","issuer:always,keyid:always",false],
7777
]
7878
ca_cert = issue_cert(@ca, @rsa2048, 1, ca_exts, nil, nil)
79-
keyid = get_subject_key_id(ca_cert.to_der, hex: false)
80-
assert_equal keyid, ca_cert.authority_key_identifier
81-
assert_equal keyid, ca_cert.subject_key_identifier
8279
ca_cert.extensions.each_with_index{|ext, i|
8380
assert_equal(ca_exts[i].first, ext.oid)
8481
assert_equal(ca_exts[i].last, ext.critical?)
@@ -90,33 +87,79 @@ def test_extension
9087
["authorityKeyIdentifier","issuer:always,keyid:always",false],
9188
["extendedKeyUsage","clientAuth, emailProtection, codeSigning",false],
9289
["subjectAltName","email:ee1@ruby-lang.org",false],
93-
["authorityInfoAccess","caIssuers;URI:http://www.example.com/caIssuers,OCSP;URI:http://www.example.com/ocsp",false],
9490
]
9591
ee1_cert = issue_cert(@ee1, @rsa1024, 2, ee1_exts, ca_cert, @rsa2048)
9692
assert_equal(ca_cert.subject.to_der, ee1_cert.issuer.to_der)
9793
ee1_cert.extensions.each_with_index{|ext, i|
9894
assert_equal(ee1_exts[i].first, ext.oid)
9995
assert_equal(ee1_exts[i].last, ext.critical?)
10096
}
101-
assert_nil(ee1_cert.crl_uris)
97+
end
98+
99+
def test_akiski
100+
ca_cert = generate_cert(@ca, @rsa2048, 4, nil)
101+
ef = OpenSSL::X509::ExtensionFactory.new(ca_cert, ca_cert)
102+
ca_cert.add_extension(
103+
ef.create_extension("subjectKeyIdentifier", "hash", false))
104+
ca_cert.add_extension(
105+
ef.create_extension("authorityKeyIdentifier", "issuer:always,keyid:always", false))
106+
ca_cert.sign(@rsa2048, "sha256")
107+
108+
ca_keyid = get_subject_key_id(ca_cert.to_der, hex: false)
109+
assert_equal ca_keyid, ca_cert.authority_key_identifier
110+
assert_equal ca_keyid, ca_cert.subject_key_identifier
111+
112+
ee_cert = generate_cert(@ee1, Fixtures.pkey("p256"), 5, ca_cert)
113+
ef = OpenSSL::X509::ExtensionFactory.new(ca_cert, ee_cert)
114+
ee_cert.add_extension(
115+
ef.create_extension("subjectKeyIdentifier", "hash", false))
116+
ee_cert.add_extension(
117+
ef.create_extension("authorityKeyIdentifier", "issuer:always,keyid:always", false))
118+
ee_cert.sign(@rsa2048, "sha256")
119+
120+
ee_keyid = get_subject_key_id(ee_cert.to_der, hex: false)
121+
assert_equal ca_keyid, ee_cert.authority_key_identifier
122+
assert_equal ee_keyid, ee_cert.subject_key_identifier
123+
end
102124

125+
def test_akiski_missing
126+
cert = issue_cert(@ee1, @rsa2048, 1, [], nil, nil)
127+
assert_nil(cert.authority_key_identifier)
128+
assert_nil(cert.subject_key_identifier)
129+
end
130+
131+
def test_crl_uris_no_crl_distribution_points
132+
cert = issue_cert(@ee1, @rsa2048, 1, [], nil, nil)
133+
assert_nil(cert.crl_uris)
134+
end
135+
136+
def test_crl_uris
137+
# Multiple DistributionPoint contains a single general name each
103138
ef = OpenSSL::X509::ExtensionFactory.new
104139
ef.config = OpenSSL::Config.parse(<<~_cnf_)
105140
[crlDistPts]
106141
URI.1 = http://www.example.com/crl
107142
URI.2 = ldap://ldap.example.com/cn=ca?certificateRevocationList;binary
108143
_cnf_
109-
cdp_cert = generate_cert(@ee1, @rsa1024, 3, ca_cert)
144+
cdp_cert = generate_cert(@ee1, @rsa2048, 3, nil)
110145
ef.subject_certificate = cdp_cert
111146
cdp_cert.add_extension(ef.create_extension("crlDistributionPoints", "@crlDistPts"))
112147
cdp_cert.sign(@rsa2048, "sha256")
113148
assert_equal(
114149
["http://www.example.com/crl", "ldap://ldap.example.com/cn=ca?certificateRevocationList;binary"],
115150
cdp_cert.crl_uris
116151
)
152+
end
117153

154+
def test_aia_missing
155+
cert = issue_cert(@ee1, @rsa2048, 1, [], nil, nil)
156+
assert_nil(cert.ca_issuer_uris)
157+
assert_nil(cert.ocsp_uris)
158+
end
159+
160+
def test_aia
118161
ef = OpenSSL::X509::ExtensionFactory.new
119-
aia_cert = generate_cert(@ee1, @rsa1024, 4, ca_cert)
162+
aia_cert = generate_cert(@ee1, @rsa2048, 4, nil)
120163
ef.subject_certificate = aia_cert
121164
aia_cert.add_extension(
122165
ef.create_extension(
@@ -137,13 +180,6 @@ def test_extension
137180
["http://www.example.com/ocsp", "ldap://ldap.example.com/cn=ca?authorityInfoAccessOcsp;binary"],
138181
aia_cert.ocsp_uris
139182
)
140-
141-
no_exts_cert = issue_cert(@ca, @rsa2048, 5, [], nil, nil)
142-
assert_equal nil, no_exts_cert.authority_key_identifier
143-
assert_equal nil, no_exts_cert.subject_key_identifier
144-
assert_equal nil, no_exts_cert.crl_uris
145-
assert_equal nil, no_exts_cert.ca_issuer_uris
146-
assert_equal nil, no_exts_cert.ocsp_uris
147183
end
148184

149185
def test_invalid_extension

0 commit comments

Comments
 (0)