Skip to content

Commit 61cb3ed

Browse files
committed
test: reduce noise in tests about unimportant details to the test case
1 parent 781f100 commit 61cb3ed

6 files changed

Lines changed: 25 additions & 26 deletions

File tree

spec/spec_helper.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ def create_rsa_key
101101
OpenSSL::PKey::RSA.new(key_bits)
102102
end
103103

104+
def create_ec_key
105+
OpenSSL::PKey::EC.new("prime256v1").generate_key
106+
end
107+
104108
def create_root_certificate(key)
105109
certificate = OpenSSL::X509::Certificate.new
106110
common_name = "Root-#{rand(1_000_000)}"

spec/webauthn/attestation_statement/android_key_spec.rb

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
RSpec.describe "AndroidKey attestation" do
1010
describe "#valid?" do
11-
let(:credential_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
11+
let(:credential_key) { create_ec_key }
1212
let(:client_data_hash) { OpenSSL::Digest::SHA256.digest({}.to_json) }
1313

1414
let(:authenticator_data_bytes) do
@@ -79,7 +79,7 @@
7979
)
8080
end
8181

82-
let(:root_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
82+
let(:root_key) { create_ec_key }
8383
let(:root_certificate) { create_root_certificate(root_key) }
8484
let(:google_certificates) { [root_certificate] }
8585

@@ -117,7 +117,7 @@
117117
end
118118

119119
context "because it was signed with a different key" do
120-
let(:signature) { OpenSSL::PKey::EC.new("prime256v1").generate_key.sign("SHA256", to_be_signed) }
120+
let(:signature) { create_ec_key.sign("SHA256", to_be_signed) }
121121

122122
it "fails" do
123123
expect(statement.valid?(authenticator_data, client_data_hash)).to be_falsy
@@ -142,7 +142,7 @@
142142
end
143143

144144
context "when the attestation key doesn't match the credential key" do
145-
let(:attestation_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
145+
let(:attestation_key) { create_ec_key }
146146

147147
it "fails" do
148148
expect(statement.valid?(authenticator_data, client_data_hash)).to be_falsy
@@ -202,9 +202,7 @@
202202
end
203203

204204
context "when the attestation certificate is not signed by Google" do
205-
let(:google_certificates) do
206-
[create_root_certificate(OpenSSL::PKey::EC.new("prime256v1").generate_key)]
207-
end
205+
let(:google_certificates) { [create_root_certificate(create_ec_key)] }
208206

209207
it "fails" do
210208
expect(statement.valid?(authenticator_data, client_data_hash)).to be_falsy

spec/webauthn/attestation_statement/android_safetynet_spec.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
issue_certificate(root_certificate, root_key, attestation_key, name: "attest.android.com")
3434
end
3535

36-
let(:root_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
36+
let(:root_key) { create_ec_key }
3737
let(:root_certificate) { create_root_certificate(root_key) }
3838
let(:authenticator_data) { WebAuthn::AuthenticatorData.deserialize(authenticator_data_bytes) }
3939

@@ -79,9 +79,7 @@
7979
end
8080

8181
context "when the attestation certificate is not signed by Google" do
82-
let(:google_certificates) do
83-
[create_root_certificate(OpenSSL::PKey::EC.new("prime256v1").generate_key)]
84-
end
82+
let(:google_certificates) { [create_root_certificate(create_ec_key)] }
8583

8684
it "fails" do
8785
expect(statement.valid?(authenticator_data, client_data_hash)).to be_falsy

spec/webauthn/attestation_statement/fido_u2f_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
RSpec.describe "FidoU2f attestation" do
1010
describe "#valid?" do
11-
let(:credential_public_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key.public_key }
11+
let(:credential_public_key) { create_ec_key.public_key }
1212
let(:client_data_hash) { OpenSSL::Digest::SHA256.digest({}.to_json) }
1313

1414
let(:authenticator_data_bytes) do
@@ -28,7 +28,7 @@
2828
credential_public_key.to_bn.to_s(2)
2929
end
3030

31-
let(:attestation_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
31+
let(:attestation_key) { create_ec_key }
3232
let(:signature) { attestation_key.sign("SHA256", to_be_signed) }
3333

3434
let(:attestation_certificate) do
@@ -42,7 +42,7 @@
4242
)
4343
end
4444

45-
let(:root_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
45+
let(:root_key) { create_ec_key }
4646

4747
let(:root_certificate) do
4848
create_root_certificate(root_key)
@@ -58,7 +58,7 @@
5858

5959
context "when signature is invalid" do
6060
context "because it was signed with a different signing key (self attested)" do
61-
let(:signature) { OpenSSL::PKey::EC.new("prime256v1").generate_key.sign("SHA256", to_be_signed) }
61+
let(:signature) { create_ec_key.sign("SHA256", to_be_signed) }
6262

6363
it "fails" do
6464
expect(statement.valid?(authenticator_data, client_data_hash)).to be_falsy

spec/webauthn/attestation_statement/packed_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
RSpec.describe "Packed attestation" do
1010
describe "#valid?" do
11-
let(:credential_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
11+
let(:credential_key) { create_ec_key }
1212
let(:client_data_hash) { OpenSSL::Digest::SHA256.digest({}.to_json) }
1313

1414
let(:authenticator_data_bytes) do
@@ -61,7 +61,7 @@
6161
end
6262

6363
context "because it was signed with a different signing key" do
64-
let(:signature) { OpenSSL::PKey::EC.new("prime256v1").generate_key.sign("SHA256", to_be_signed) }
64+
let(:signature) { create_ec_key.sign("SHA256", to_be_signed) }
6565

6666
it "fails" do
6767
expect(statement.valid?(authenticator_data, client_data_hash)).to be_falsy
@@ -88,7 +88,7 @@
8888

8989
context "x5c attestation" do
9090
let(:algorithm) { -7 }
91-
let(:attestation_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
91+
let(:attestation_key) { create_ec_key }
9292
let(:signature) { attestation_key.sign("SHA256", to_be_signed) }
9393
let(:attestation_certificate_version) { 2 }
9494
let(:attestation_certificate_subject) { "/C=UY/O=ACME/OU=Authenticator Attestation/CN=CN" }
@@ -118,7 +118,7 @@
118118
certificate.to_der
119119
end
120120

121-
let(:root_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
121+
let(:root_key) { create_ec_key }
122122
let(:root_certificate_start_time) { Time.now - 1 }
123123
let(:root_certificate_end_time) { Time.now + 60 }
124124

@@ -172,7 +172,7 @@
172172
end
173173

174174
context "because it was signed with a different signing key (self attested)" do
175-
let(:signature) { OpenSSL::PKey::EC.new("prime256v1").generate_key.sign("SHA256", to_be_signed) }
175+
let(:signature) { create_ec_key.sign("SHA256", to_be_signed) }
176176

177177
it "fails" do
178178
expect(statement.valid?(authenticator_data, client_data_hash)).to be_falsy

spec/webauthn/attestation_statement/tpm_spec.rb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
end
8989
let(:aik_certificate_start_time) { Time.now - 1 }
9090
let(:aik_certificate_end_time) { Time.now + 60 }
91-
let(:root_key) { OpenSSL::PKey::RSA.new(2048) }
91+
let(:root_key) { create_rsa_key }
9292
let(:root_certificate) { create_root_certificate(root_key) }
9393
let(:signature) { aik.sign("SHA256", cert_info) }
9494

@@ -155,7 +155,7 @@
155155

156156
context "when the attestation certificate is not signed by a TPM" do
157157
let(:tpm_certificates) do
158-
[create_root_certificate(OpenSSL::PKey::RSA.new(2048))]
158+
[create_root_certificate(create_rsa_key)]
159159
end
160160

161161
it "fails" do
@@ -171,8 +171,8 @@
171171

172172
context "when EC algorithm" do
173173
let(:algorithm) { -7 }
174-
let(:aik) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
175-
let(:credential_key) { OpenSSL::PKey::EC.new("prime256v1").generate_key }
174+
let(:aik) { create_ec_key }
175+
let(:credential_key) { create_ec_key }
176176

177177
let(:pub_area) do
178178
t_public = ::TPM::TPublic.new
@@ -204,8 +204,7 @@
204204
t_public.alg_type = ::TPM::ALG_ECC
205205
t_public.name_alg = name_alg
206206
t_public.parameters = pub_area_parameters
207-
t_public.unique.buffer =
208-
OpenSSL::PKey::EC.generate("prime256v1").generate_key.public_key.to_bn.to_s(2)[1..-1]
207+
t_public.unique.buffer = create_ec_key.public_key.to_bn.to_s(2)[1..-1]
209208

210209
t_public.to_binary_s
211210
end

0 commit comments

Comments
 (0)