u2f 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/u2f/errors.rb +18 -0
- data/lib/u2f/register_response.rb +5 -0
- data/lib/version.rb +1 -1
- data/spec/lib/register_response_spec.rb +16 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c24a1971210f173c24a9e93c488133a3165db70
|
4
|
+
data.tar.gz: bfa2a34fd0d63d308d57cc9be246861cf4c95842
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e00d61768512827fe9037384b6311bac3f4fc32651cb4e2e5269966b89cc62e28fb5dc4736ed97240ddc99ef3d40e2c88c244ea92ae88105a5a1f0bb21dddee1
|
7
|
+
data.tar.gz: 0abeed621b15a657d315fdb89896d7180120422613012120a91e85f5be50061c398b4649b88befb14b695d380af187e0529f173179dc1db8e0d7a94b70a0ee3e
|
data/lib/u2f/errors.rb
CHANGED
@@ -11,4 +11,22 @@ module U2F
|
|
11
11
|
class CounterToLowError < Error; end
|
12
12
|
class AuthenticationFailedError < Error; end
|
13
13
|
class UserNotPresentError < Error;end
|
14
|
+
|
15
|
+
class RegistrationError < Error
|
16
|
+
CODES = {
|
17
|
+
1 => "OTHER_ERROR",
|
18
|
+
2 => "BAD_REQUEST",
|
19
|
+
3 => "CONFIGURATION_UNSUPPORTED",
|
20
|
+
4 => "DEVICE_INELIGIBLE",
|
21
|
+
5 => "TIMEOUT"
|
22
|
+
}
|
23
|
+
|
24
|
+
attr_reader :code
|
25
|
+
|
26
|
+
def initialize(options = {})
|
27
|
+
@code = options[:code]
|
28
|
+
message = options[:message] || "Token returned #{CODES[code]}"
|
29
|
+
super(message)
|
30
|
+
end
|
31
|
+
end
|
14
32
|
end
|
@@ -15,6 +15,11 @@ module U2F
|
|
15
15
|
def self.load_from_json(json)
|
16
16
|
# TODO: validate
|
17
17
|
data = JSON.parse(json)
|
18
|
+
|
19
|
+
if data['errorCode'] && data['errorCode'] > 0
|
20
|
+
fail RegistrationError, :code => data['errorCode']
|
21
|
+
end
|
22
|
+
|
18
23
|
instance = new
|
19
24
|
instance.client_data_json =
|
20
25
|
::U2F.urlsafe_decode64(data['clientData'])
|
data/lib/version.rb
CHANGED
@@ -18,6 +18,10 @@ describe U2F::RegisterResponse do
|
|
18
18
|
"{\"registrationData\":\"BQT2UXxw7PXHmN5nCj1M3Lq_sibfqQehZbuUV1Vxr1l0J1Gdcv7FEvnPofmrSN44_pz8-XAj7pOpqB79rOphJPf2QM8nt8Jtyyj9_XmZWZTQMg2UVHvrin_Jc4tMHY9QmyCNDmSU9_Bhb-Ei4u5GPgLrpF1TaEYQCqUHboqDKt4x524wggIbMIIBBaADAgECAgR1o_Z1MAsGCSqGSIb3DQEBCzAuMSwwKgYDVQQDEyNZdWJpY28gVTJGIFJvb3QgQ0EgU2VyaWFsIDQ1NzIwMDYzMTAgFw0xNDA4MDEwMDAwMDBaGA8yMDUwMDkwNDAwMDAwMFowKjEoMCYGA1UEAwwfWXViaWNvIFUyRiBFRSBTZXJpYWwgMTk3MzY3OTczMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBmjfkNqa2mXzVh2ZxuES5coCvvENxDMDLmfd-0ACG0Fu7wR4ZTjKd9KAuidySpfona5csGmlM0Te_Zu35h_wwujEjAQMA4GCisGAQQBgsQKAQIEADALBgkqhkiG9w0BAQsDggEBAb0tuI0-CzSxBg4cAlyD6UyT4cKyJZGVhWdtPgj_mWepT3Tu9jXtdgA5F3jfZtTc2eGxuS-PPvqRAkZd40AXgM8A0YaXPwlT4s0RUTY9Y8aAQzQZeAHuZk3lKKd_LUCg5077dzdt90lC5eVTEduj6cOnHEqnOr2Cv75FuiQXX7QkGQxtoD-otgvhZ2Fjk29o7Iy9ik7ewHGXOfoVw_ruGWi0YfXBTuqEJ6H666vvMN4BZWHtzhC0k5ceQslB9Xdntky-GQgDqNkkBf32GKwAFT9JJrkO2BfsB-wfBrTiHr0AABYNTNKTceA5dtR3UVpI492VUWQbY3YmWUUfKTI7fM4wRgIhAIfEKaF0w43L3RJHXp8qeRKw8Ek0CVcZ6pvBsH3Wo3F1AiEA5w89AFOBrjoSsnuGdUgB4AGxc5bRnV-p8jGUNoVSUwI\",\"version\":\"U2F_V2\",\"challenge\":\"oqDO4u_tTvhm1LhFDVYhFwywQF0PzFsXPgjD-5lKGDY\",\"appId\":\"http://localhost:3000\",\"clientData\":\"eyJ0eXAiOiJuYXZpZ2F0b3IuaWQuZmluaXNoRW5yb2xsbWVudCIsImNoYWxsZW5nZSI6Im9xRE80dV90VHZobTFMaEZEVlloRnd5d1FGMFB6RnNYUGdqRC01bEtHRFk9Iiwib3JpZ2luIjoiaHR0cDovL2xvY2FsaG9zdDozMDAwIiwiY2lkX3B1YmtleSI6IiJ9\"}"
|
19
19
|
}
|
20
20
|
|
21
|
+
let(:error_response) {
|
22
|
+
"{\"errorCode\":4}"
|
23
|
+
}
|
24
|
+
|
21
25
|
let(:app_id) { 'http://demo.example.com' }
|
22
26
|
let(:challenge) { 'yKA0x075tjJ-GE7fKTfnzTOSaNUOWQxRd9TWz5aFOg8' }
|
23
27
|
|
@@ -27,6 +31,17 @@ describe U2F::RegisterResponse do
|
|
27
31
|
U2F::RegisterResponse.load_from_json(registration_data_json)
|
28
32
|
end
|
29
33
|
|
34
|
+
context 'with error response' do
|
35
|
+
let(:registration_data_json) { error_response }
|
36
|
+
it 'raises RegistrationError with code' do
|
37
|
+
expect {
|
38
|
+
register_response
|
39
|
+
}.to raise_error(U2F::RegistrationError) do |error|
|
40
|
+
expect(error.code).to eq(4)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
30
45
|
context 'with unpadded response' do
|
31
46
|
let(:registration_data_json) { registration_data_without_padding }
|
32
47
|
it 'does not raise "invalid base64" exception' do
|
@@ -67,4 +82,4 @@ describe U2F::RegisterResponse do
|
|
67
82
|
subject { register_response.verify(app_id) }
|
68
83
|
it { is_expected.to be_truthy }
|
69
84
|
end
|
70
|
-
end
|
85
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: u2f
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johan Brissmyr
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-11-
|
12
|
+
date: 2014-11-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|