Skip to content

Commit 3e9d3fb

Browse files
committed
test: reduce noise of unimportant details in test cases
1 parent 1d76321 commit 3e9d3fb

5 files changed

Lines changed: 60 additions & 79 deletions

File tree

spec/spec_helper.rb

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,17 @@ def create_ec_key
105105
OpenSSL::PKey::EC.new("prime256v1").generate_key
106106
end
107107

108-
def create_root_certificate(key)
108+
X509_V3 = 2
109+
110+
def create_root_certificate(key, not_before: Time.now - 1, not_after: Time.now + 60)
109111
certificate = OpenSSL::X509::Certificate.new
110-
common_name = "Root-#{rand(1_000_000)}"
111112

112-
certificate.subject = OpenSSL::X509::Name.new([["CN", common_name]])
113+
certificate.version = X509_V3
114+
certificate.subject = OpenSSL::X509::Name.parse("CN=Root-#{rand(1_000_000)}")
113115
certificate.issuer = certificate.subject
114116
certificate.public_key = key
115-
certificate.not_before = Time.now - 1
116-
certificate.not_after = Time.now + 60
117+
certificate.not_before = not_before
118+
certificate.not_after = not_after
117119

118120
extension_factory = OpenSSL::X509::ExtensionFactory.new
119121
extension_factory.subject_certificate = certificate
@@ -129,16 +131,30 @@ def create_root_certificate(key)
129131
certificate
130132
end
131133

132-
def issue_certificate(ca_certificate, ca_key, key, name: nil)
134+
def issue_certificate(
135+
ca_certificate,
136+
ca_key,
137+
key,
138+
version: X509_V3,
139+
name: "CN=Cert-#{rand(1_000_000)}",
140+
not_before: Time.now - 1,
141+
not_after: Time.now + 60,
142+
extensions: nil
143+
)
144+
133145
certificate = OpenSSL::X509::Certificate.new
134-
common_name = name || "Cert-#{rand(1_000_000)}"
135146

136-
certificate.subject = OpenSSL::X509::Name.new([["CN", common_name]])
147+
certificate.version = version
148+
certificate.subject = OpenSSL::X509::Name.parse(name)
137149
certificate.issuer = ca_certificate.subject
138-
certificate.not_before = Time.now - 1
139-
certificate.not_after = Time.now + 60
150+
certificate.not_before = not_before
151+
certificate.not_after = not_after
140152
certificate.public_key = key
141153

154+
if extensions
155+
certificate.extensions = extensions
156+
end
157+
142158
certificate.sign(ca_key, "SHA256")
143159

144160
certificate

spec/webauthn/attestation_statement/android_key_spec.rb

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,12 @@
5454
end
5555

5656
let(:attestation_certificate) do
57-
certificate = OpenSSL::X509::Certificate.new
58-
certificate.subject = OpenSSL::X509::Name.new([["CN", "Fake Attestation"]])
59-
certificate.issuer = root_certificate.subject
60-
certificate.not_before = Time.now - 1
61-
certificate.not_after = Time.now + 60
62-
certificate.public_key = attestation_key
63-
64-
extension_factory = OpenSSL::X509::ExtensionFactory.new
65-
extension_factory.subject_certificate = certificate
66-
extension_factory.issuer_certificate = certificate
67-
certificate.extensions = attestation_certificate_extensions
68-
69-
certificate.sign(root_key, "SHA256")
70-
71-
certificate.to_der
57+
issue_certificate(
58+
root_certificate,
59+
root_key,
60+
attestation_key,
61+
extensions: attestation_certificate_extensions
62+
).to_der
7263
end
7364

7465
let(:statement) do

spec/webauthn/attestation_statement/android_safetynet_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
let(:attestation_key) { create_rsa_key }
3131

3232
let(:leaf_certificate) do
33-
issue_certificate(root_certificate, root_key, attestation_key, name: "attest.android.com")
33+
issue_certificate(root_certificate, root_key, attestation_key, name: "CN=attest.android.com")
3434
end
3535

3636
let(:root_key) { create_ec_key }

spec/webauthn/attestation_statement/packed_spec.rb

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -97,51 +97,28 @@
9797
let(:attestation_certificate_end_time) { Time.now + 60 }
9898

9999
let(:attestation_certificate) do
100-
certificate = OpenSSL::X509::Certificate.new
101-
certificate.version = attestation_certificate_version
102-
certificate.subject = OpenSSL::X509::Name.parse(attestation_certificate_subject)
103-
certificate.issuer = root_certificate.subject
104-
certificate.not_before = attestation_certificate_start_time
105-
certificate.not_after = attestation_certificate_end_time
106-
certificate.public_key = attestation_key
107-
108100
extension_factory = OpenSSL::X509::ExtensionFactory.new
109-
extension_factory.subject_certificate = certificate
110-
extension_factory.issuer_certificate = certificate
111-
112-
certificate.extensions = [
113-
extension_factory.create_extension("basicConstraints", attestation_certificate_basic_constraints, true),
114-
]
115101

116-
certificate.sign(root_key, "SHA256")
117-
118-
certificate.to_der
102+
issue_certificate(
103+
root_certificate,
104+
root_key,
105+
attestation_key,
106+
version: attestation_certificate_version,
107+
name: attestation_certificate_subject,
108+
not_before: attestation_certificate_start_time,
109+
not_after: attestation_certificate_end_time,
110+
extensions: [
111+
extension_factory.create_extension("basicConstraints", attestation_certificate_basic_constraints, true),
112+
]
113+
).to_der
119114
end
120115

121116
let(:root_key) { create_ec_key }
122117
let(:root_certificate_start_time) { Time.now - 1 }
123118
let(:root_certificate_end_time) { Time.now + 60 }
124119

125120
let(:root_certificate) do
126-
root_certificate = OpenSSL::X509::Certificate.new
127-
root_certificate.version = attestation_certificate_version
128-
root_certificate.subject = OpenSSL::X509::Name.parse("/DC=org/DC=fake-ca/CN=Fake CA")
129-
root_certificate.issuer = root_certificate.subject
130-
root_certificate.public_key = root_key
131-
root_certificate.not_before = root_certificate_start_time
132-
root_certificate.not_after = root_certificate_end_time
133-
134-
extension_factory = OpenSSL::X509::ExtensionFactory.new
135-
extension_factory.subject_certificate = root_certificate
136-
extension_factory.issuer_certificate = root_certificate
137-
root_certificate.extensions = [
138-
extension_factory.create_extension("basicConstraints", "CA:TRUE", true),
139-
extension_factory.create_extension("keyUsage", "keyCertSign,cRLSign", true),
140-
]
141-
142-
root_certificate.sign(root_key, "SHA256")
143-
144-
root_certificate
121+
create_root_certificate(root_key, not_before: root_certificate_start_time, not_after: root_certificate_end_time)
145122
end
146123

147124
let(:statement) do

spec/webauthn/attestation_statement/tpm_spec.rb

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,23 @@
2929
let(:algorithm) { -257 }
3030

3131
let(:aik_certificate) do
32-
cert = OpenSSL::X509::Certificate.new
33-
cert.version = aik_certificate_version
34-
cert.issuer = root_certificate.subject
35-
cert.subject = OpenSSL::X509::Name.parse(aik_certificate_subject)
36-
cert.not_before = aik_certificate_start_time
37-
cert.not_after = aik_certificate_end_time
38-
cert.public_key = aik
39-
4032
extension_factory = OpenSSL::X509::ExtensionFactory.new
4133
extension_factory.config = aik_certificate_san_config
4234

43-
cert.extensions = [
44-
extension_factory.create_extension("basicConstraints", aik_certificate_basic_constraints, true),
45-
extension_factory.create_extension("extendedKeyUsage", aik_certificate_extended_key_usage),
46-
extension_factory.create_extension("subjectAltName", "ASN1:SEQUENCE:dir_seq", aik_certificate_san_critical),
47-
]
48-
49-
cert.sign(root_key, "SHA256")
50-
51-
cert
35+
issue_certificate(
36+
root_certificate,
37+
root_key,
38+
aik,
39+
version: aik_certificate_version,
40+
name: aik_certificate_subject,
41+
not_before: aik_certificate_start_time,
42+
not_after: aik_certificate_end_time,
43+
extensions: [
44+
extension_factory.create_extension("basicConstraints", aik_certificate_basic_constraints, true),
45+
extension_factory.create_extension("extendedKeyUsage", aik_certificate_extended_key_usage),
46+
extension_factory.create_extension("subjectAltName", "ASN1:SEQUENCE:dir_seq", aik_certificate_san_critical),
47+
]
48+
)
5249
end
5350

5451
let(:aik) { create_rsa_key }

0 commit comments

Comments
 (0)