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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c779dd25f9a95cfc831617c40bd58adc467a36eb
4
- data.tar.gz: 94efeeaad1dacd2f0d77a9c78732643d91b750db
3
+ metadata.gz: 4c24a1971210f173c24a9e93c488133a3165db70
4
+ data.tar.gz: bfa2a34fd0d63d308d57cc9be246861cf4c95842
5
5
  SHA512:
6
- metadata.gz: ec901166a6ae4436cad602d63016e392f10a0d2deaa78f20ea4ec0555e9e8f16bb65af5508ecc04e3928fb91a989b993341c77d469f5bfdadd725b8c48501219
7
- data.tar.gz: 0d48814191c242bc0f5cec5ece404d5e85cb321cc110db2e767156763255a54322dc242bae9a1200a87503314d5d39180597b50a96f71ece49209b30b8861795
6
+ metadata.gz: e00d61768512827fe9037384b6311bac3f4fc32651cb4e2e5269966b89cc62e28fb5dc4736ed97240ddc99ef3d40e2c88c244ea92ae88105a5a1f0bb21dddee1
7
+ data.tar.gz: 0abeed621b15a657d315fdb89896d7180120422613012120a91e85f5be50061c398b4649b88befb14b695d380af187e0529f173179dc1db8e0d7a94b70a0ee3e
@@ -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'])
@@ -1,3 +1,3 @@
1
1
  module U2F
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -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.3
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-20 00:00:00.000000000 Z
12
+ date: 2014-11-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake