two_factor_auth 0.1.1 → 0.2.0

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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/two_factor_auth/authentications_controller.rb +2 -1
  3. data/app/controllers/two_factor_auth/registrations_controller.rb +2 -2
  4. data/app/controllers/two_factor_auth/two_factor_auth_controller.rb +1 -2
  5. data/app/helpers/two_factor_auth/authentications_helper.rb +24 -1
  6. data/app/helpers/two_factor_auth/registrations_helper.rb +14 -1
  7. data/lib/generators/two_factor_auth/install_generator.rb +4 -0
  8. data/lib/two_factor_auth.rb +24 -9
  9. data/lib/two_factor_auth/engine.rb +7 -0
  10. data/lib/two_factor_auth/version.rb +1 -1
  11. data/test/controllers/two_factor_auth/authentications_controller_test.rb +7 -6
  12. data/test/controllers/two_factor_auth/registrations_controller_test.rb +7 -6
  13. data/test/controllers/two_factor_auth/trusted_facets_controller_test.rb +2 -1
  14. data/test/dummy/config/environments/test.rb +3 -1
  15. data/test/dummy/config/initializers/two_factor_auth.rb +1 -1
  16. data/test/dummy/db/development.sqlite3 +0 -0
  17. data/test/dummy/db/test.sqlite3 +0 -0
  18. data/test/dummy/log/development.log +2004 -0
  19. data/test/dummy/log/test.log +21119 -0
  20. data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  21. data/test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  22. data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  23. data/test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  24. data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  25. data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  26. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/23gMR8_-IjXg7R6VFJYTeYfI5Bk1pWz9cGq8bYcuJVk.cache +0 -0
  27. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/2VRoJl4_ryRqfqbshRZyyukLNeBRe43LWj0jAxWygT8.cache +1 -0
  28. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/3xxZOw1d_F3SQEOfqWbJDK7GkQZG6RFL_rML9GivIog.cache +1 -0
  29. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/6hrL0PP7EpTrDf7TE6Jy_bGZTX0YP6vt1Ek4ZV6EZgQ.cache +0 -0
  30. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/AZvyaoCJYXrzlPHaUn5jiXhx5FffjtGdmDbdcFUAFdw.cache +1 -0
  31. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache +2 -0
  32. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/PsO6qD3Gkku7kiCNSCLjl27Qq5KhCd_CA-N_70WNYzA.cache +0 -0
  33. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/RRPGdlAzXvxv9xR3OTJeAZ51DrgTuoR-H0hSr7tw7gI.cache +1 -0
  34. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/W89qjVs-Q9sY5rtUb3SkjwhL30IIXe4E2Hw9Lj-puHc.cache +1 -0
  35. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/XX56qn6mvgUCTqB1EZEwn5jwrN5nZg7QgMZoWarZirw.cache +1 -0
  36. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/X_vJiIKpNLyakGDEt551QhTBBdYNFyORGG_f2652cEU.cache +0 -0
  37. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache +3 -0
  38. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/jhJyHm46ZT4ALVcHC9sT70lqgwGavwHZ0tNh4A87x18.cache +0 -0
  39. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache +2 -0
  40. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache +3 -0
  41. data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/tTO9Y99i7uTczFALqpXjw1qu3SnPz3p3IY2y3u8Vn4w.cache +0 -0
  42. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6hrL0PP7EpTrDf7TE6Jy_bGZTX0YP6vt1Ek4ZV6EZgQ.cache +0 -0
  43. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AZvyaoCJYXrzlPHaUn5jiXhx5FffjtGdmDbdcFUAFdw.cache +1 -0
  44. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GXYGtb-l25NlDO_NLupPGzBPs5369e_JOjFRGwV-6ms.cache +0 -0
  45. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/L2e4ZPZnUR8GRnWaRnRIjp0H3Z8vxo4zo_P0_2KSS1E.cache +1 -0
  46. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache +2 -0
  47. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/W89qjVs-Q9sY5rtUb3SkjwhL30IIXe4E2Hw9Lj-puHc.cache +1 -0
  48. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WraqXvk499CKXtzl5ErboSwG3N_vtSYjJCMgNcHneXk.cache +1 -0
  49. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/X_vJiIKpNLyakGDEt551QhTBBdYNFyORGG_f2652cEU.cache +0 -0
  50. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YOu-C7kJyArl6rYCUw1yoXsHhxltJRRlOMQYTpbIHL4.cache +1 -0
  51. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZW7dk38nraFCasDj58ONkcokbYpXq6uRpOLoKYf2O8E.cache +0 -0
  52. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_wrWO3hy4ErxhAexiVHwGyHbESdk_BGYnhWAzRVQHYk.cache +0 -0
  53. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache +3 -0
  54. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/m3sLmK8aXu9kOyNiyDudVIxKOhWTTxdqP6Ygb9hqSWM.cache +0 -0
  55. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache +2 -0
  56. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache +3 -0
  57. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vmGe_dVH5Bk-GStqPTTa0erZk50i87Lm6HwOd5BtzRg.cache +1 -0
  58. data/test/dummy/tmp/pids/server.pid +1 -0
  59. data/test/helpers/two_factor_auth/authentication_helper_test.rb +1 -1
  60. data/test/helpers/two_factor_auth/registrations_helper_test.rb +1 -1
  61. data/test/integration/navigation_test.rb +1 -1
  62. data/test/lib/two_factor_auth_test.rb +45 -24
  63. data/test/models/two_factor_auth/authentication_request_test.rb +1 -1
  64. data/test/models/two_factor_auth/authentication_response_test.rb +1 -1
  65. data/test/models/two_factor_auth/authentication_verifier_test.rb +1 -1
  66. data/test/models/two_factor_auth/client_data_test.rb +1 -1
  67. data/test/models/two_factor_auth/registration_request_test.rb +1 -1
  68. data/test/models/two_factor_auth/registration_response_test.rb +1 -1
  69. data/test/models/two_factor_auth/registration_verifier_test.rb +1 -1
  70. data/test/test_helper.rb +4 -0
  71. metadata +126 -52
  72. data/app/helpers/two_factor_auth/application_helper.rb +0 -21
  73. data/lib/two_factor_auth/authentication_hook.rb +0 -18
  74. data/lib/two_factor_auth/registration_hook.rb +0 -17
@@ -0,0 +1 @@
1
+ I"}app/assets/stylesheets/application.css?type=text/css&id=24cd2d5bf07827b9723cdabfa2cf73d8e019feb25adcd4c67e3177a9e046b8a3:ET
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=ed3ed3df74fa32587f9643a433f912b59a567f2791920b5d4d474bf6c03dc4d7:ET
@@ -0,0 +1 @@
1
+ "%]!�K��X�K�֓�ޖ���';�����4x��
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"0processors:type=text/css&file_type=text/css;TTI"9file-digest://app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI")file-digest://app/assets/stylesheets;TT
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/application.js?type=application/javascript&id=6b1b2ab53ed9d790c2b34a82b30354594eeef0d086e2b14b5dafab54ff0862ba:ET
@@ -0,0 +1 @@
1
+ "%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=9290f894815da593d76dbfacdaeab89dc4327c8336017ee5bd1437b19617e67b:ET
@@ -0,0 +1,3 @@
1
+ [o:Set:
2
+ @hash{
3
+ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"8file-digest://app/assets/javascripts/application.js;TTI")file-digest://app/assets/javascripts;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"8file-digest://app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI")file-digest://app/assets/javascripts;TT
@@ -0,0 +1,3 @@
1
+ [o:Set:
2
+ @hash{
3
+ I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"9file-digest://app/assets/stylesheets/application.css;TTI")file-digest://app/assets/stylesheets;TT
@@ -0,0 +1 @@
1
+ "%]!�K��X�K�֓�ޖ���';�����4x��
@@ -0,0 +1 @@
1
+ I"}app/assets/stylesheets/application.css?type=text/css&id=5d9fda2cf6d33252e2aceb4a49db87b70102137373aa01a74d93aa09effa3cc4:ET
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"0processors:type=text/css&file_type=text/css;TTI"9file-digest://app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI")file-digest://app/assets/stylesheets;TT
@@ -0,0 +1 @@
1
+ "%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=dd7666be4b582e50a0c22b11210fc492a4b1fe09641db93377294d0318d247a3:ET
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/application.js?type=application/javascript&id=d8e8c88bb09cbd08dfe32f100cecc0a5be4da3e9c58819b0378a9e51d58ed9ce:ET
@@ -0,0 +1,3 @@
1
+ [o:Set:
2
+ @hash{
3
+ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"8file-digest://app/assets/javascripts/application.js;TTI")file-digest://app/assets/javascripts;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"8file-digest://app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI")file-digest://app/assets/javascripts;TT
@@ -0,0 +1,3 @@
1
+ [o:Set:
2
+ @hash{
3
+ I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"9file-digest://app/assets/stylesheets/application.css;TTI")file-digest://app/assets/stylesheets;TT
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=173e6a8bc26b4b277951bff473e7e7ccd08e51cfacb2f991ebf21221a6ed3583:ET
@@ -0,0 +1 @@
1
+ 12941
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module TwoFactorAuth
4
4
  describe AuthenticationsHelper do
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module TwoFactorAuth
4
4
  describe RegistrationsHelper do
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative '../test_helper'
2
2
 
3
3
  class NavigationTest < ActionDispatch::IntegrationTest
4
4
  fixtures :all
@@ -1,8 +1,15 @@
1
- require 'test_helper'
1
+ require_relative '../test_helper'
2
2
 
3
3
  describe TwoFactorAuth do
4
4
  let(:pubkey) { "\x049\xC6GC\xE6\xD3un;a\xD2\x04\e\x9B,vk\xEB\xDC\xB51\b\x14\x16\a\x92\x8D\xA1\xA92\xD7Z\x17\xB3D\xDF}P\xDA\x9Cg\xEB\xFD7h)N\xC4\xF2\xF1\x10\e\x8A\xC7\x88\x9AM\x17V\xEA\xBEX\x14\xAB" }
5
5
 
6
+ def teardown
7
+ # clear all the settings between runs
8
+ TwoFactorAuth.instance_variable_set(:@facet_domain, nil)
9
+ TwoFactorAuth.instance_variable_set(:@trusted_facet_list_url, nil)
10
+ TwoFactorAuth.instance_variable_set(:@facets, nil)
11
+ end
12
+
6
13
  describe "U2F_VERSION" do
7
14
  it "is the only version" do
8
15
  TwoFactorAuth::U2F_VERSION.must_equal 'U2F_V2'
@@ -27,18 +34,6 @@ describe TwoFactorAuth do
27
34
  TwoFactorAuth.facet_domain.must_equal "http://www.example.net"
28
35
  end
29
36
 
30
- it "raises if you try to use localhost" do
31
- Proc.new {
32
- TwoFactorAuth.facet_domain = "http://localhost:3000"
33
- }.must_raise(TwoFactorAuth::InvalidFacetDomain)
34
- Proc.new {
35
- TwoFactorAuth.facet_domain = "http://localhost:3000/"
36
- }.must_raise(TwoFactorAuth::InvalidFacetDomain)
37
- Proc.new {
38
- TwoFactorAuth.facet_domain = "http://localhost/"
39
- }.must_raise(TwoFactorAuth::InvalidFacetDomain)
40
- end
41
-
42
37
  it "raises if you try to use something.dev" do
43
38
  Proc.new {
44
39
  TwoFactorAuth.facet_domain = "http://local.dev:3000"
@@ -65,31 +60,57 @@ describe TwoFactorAuth do
65
60
  end
66
61
 
67
62
  it "is based on facet_domain otherwise" do
68
- # this value is persisted across tests...
69
- TwoFactorAuth.trusted_facet_list_url = nil
70
63
  TwoFactorAuth.facet_domain = "https://www.example.net"
71
- TwoFactorAuth.trusted_facet_list_url.must_equal "https://www.example.net/two_factor_auth/trusted_facets"
64
+ TwoFactorAuth.trusted_facet_list_url.must_match /\Ahttps:\/\/www.example.net/
65
+ end
66
+
67
+ it "prohibits HTTP URLs" do
68
+ Proc.new {
69
+ TwoFactorAuth.trusted_facet_list_url = "http://www.example.net/list"
70
+ }.must_raise(TwoFactorAuth::InvalidTrustedFacetListUrl)
71
+ end
72
+ end
73
+
74
+ describe "#app_id_or_facet_list" do
75
+ it "is the domain if there are no facets" do
76
+ TwoFactorAuth.facet_domain = "https://www.example.net"
77
+ TwoFactorAuth.facets = []
78
+ TwoFactorAuth.app_id_or_facet_list.must_equal "https://www.example.net"
79
+ end
80
+
81
+ it "is the trusted facet list if there are facets" do
82
+ TwoFactorAuth.facet_domain = "https://www.example.net"
83
+ TwoFactorAuth.facets = ["https://www.example.com", "https://www.example.net"]
84
+ TwoFactorAuth.app_id_or_facet_list.must_equal "https://www.example.net/two_factor_auth/trusted_facets"
72
85
  end
73
86
  end
74
87
 
75
88
  describe "setting facets" do
76
89
  it "can be set explicitly" do
90
+ TwoFactorAuth.facet_domain = "https://www.example.net"
77
91
  TwoFactorAuth.facets = ["https://www.example.net", "https://staging.example.net"]
78
92
  TwoFactorAuth.facets.must_equal ["https://www.example.net", "https://staging.example.net"]
79
93
  end
80
94
 
81
- it "is just the facet_domain by default" do
82
- # this value is persisted across tests...
83
- TwoFactorAuth.facets = nil
84
- TwoFactorAuth.facet_domain = "https://www.example.net"
85
- TwoFactorAuth.facets.must_equal ["https://www.example.net"]
95
+ it "prohibits using a facet list with an http app id" do
96
+ TwoFactorAuth.facet_domain = "http://www.example.net/"
97
+ Proc.new {
98
+ TwoFactorAuth.facets = ["https://www.example.com"]
99
+ }.must_raise(TwoFactorAuth::InvalidFacetDomain)
100
+ end
101
+
102
+ it "prohibits setting an HTTP URL in the facet list" do
103
+ TwoFactorAuth.facet_domain = "https://www.example.net/"
104
+ Proc.new {
105
+ TwoFactorAuth.facets = ["http://www.example.net"]
106
+ }.must_raise(TwoFactorAuth::InvalidFacetListDomain)
86
107
  end
87
108
 
88
- it "is just the facet_domain if empty list" do
109
+ it "is empty by default" do
89
110
  # this value is persisted across tests...
90
- TwoFactorAuth.facets = []
111
+ TwoFactorAuth.facets = nil
91
112
  TwoFactorAuth.facet_domain = "https://www.example.net"
92
- TwoFactorAuth.facets.must_equal ["https://www.example.net"]
113
+ TwoFactorAuth.facets.must_equal []
93
114
  end
94
115
  end
95
116
 
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module TwoFactorAuth
4
4
  describe AuthenticationRequest do
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module TwoFactorAuth
4
4
  describe AuthenticationResponse do
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module TwoFactorAuth
4
4
  describe AuthenticationVerifier do
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module TwoFactorAuth
4
4
  describe ClientData do
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module TwoFactorAuth
4
4
  describe RegistrationRequest do
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module TwoFactorAuth
4
4
  describe RegistrationResponse do
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative "../../test_helper"
2
2
 
3
3
  module TwoFactorAuth
4
4
  describe RegistrationVerifier do
@@ -26,6 +26,10 @@ class ActionController::TestCase
26
26
 
27
27
  def teardown
28
28
  Warden.test_reset!
29
+ # clear all the settings
30
+ TwoFactorAuth.instance_variable_set(:@facet_domain, nil)
31
+ TwoFactorAuth.instance_variable_set(:@trusted_facet_list_url, nil)
32
+ TwoFactorAuth.instance_variable_set(:@facets, nil)
29
33
  end
30
34
 
31
35
  def register_as user, registration
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: two_factor_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Harkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-26 00:00:00.000000000 Z
11
+ date: 2015-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -67,7 +67,7 @@ dependencies:
67
67
  version: '4.0'
68
68
  - - "<="
69
69
  - !ruby/object:Gem::Version
70
- version: '4.2'
70
+ version: 4.2.4
71
71
  type: :development
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: '4.0'
78
78
  - - "<="
79
79
  - !ruby/object:Gem::Version
80
- version: '4.2'
80
+ version: 4.2.4
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: devise
83
83
  requirement: !ruby/object:Gem::Requirement
@@ -162,7 +162,6 @@ files:
162
162
  - app/controllers/two_factor_auth/registrations_controller.rb
163
163
  - app/controllers/two_factor_auth/trusted_facets_controller.rb
164
164
  - app/controllers/two_factor_auth/two_factor_auth_controller.rb
165
- - app/helpers/two_factor_auth/application_helper.rb
166
165
  - app/helpers/two_factor_auth/authentications_helper.rb
167
166
  - app/helpers/two_factor_auth/registrations_helper.rb
168
167
  - app/models/two_factor_auth/authentication_client_data.rb
@@ -184,9 +183,7 @@ files:
184
183
  - lib/generators/two_factor_auth/install_generator.rb
185
184
  - lib/tasks/two_factor_auth_tasks.rake
186
185
  - lib/two_factor_auth.rb
187
- - lib/two_factor_auth/authentication_hook.rb
188
186
  - lib/two_factor_auth/engine.rb
189
- - lib/two_factor_auth/registration_hook.rb
190
187
  - lib/two_factor_auth/version.rb
191
188
  - test/controllers/two_factor_auth/authentications_controller_test.rb
192
189
  - test/controllers/two_factor_auth/registrations_controller_test.rb
@@ -237,12 +234,51 @@ files:
237
234
  - test/dummy/public/422.html
238
235
  - test/dummy/public/500.html
239
236
  - test/dummy/public/favicon.ico
237
+ - test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705
238
+ - test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af
239
+ - test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953
240
+ - test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994
241
+ - test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6
242
+ - test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655
243
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/23gMR8_-IjXg7R6VFJYTeYfI5Bk1pWz9cGq8bYcuJVk.cache
244
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/2VRoJl4_ryRqfqbshRZyyukLNeBRe43LWj0jAxWygT8.cache
245
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/3xxZOw1d_F3SQEOfqWbJDK7GkQZG6RFL_rML9GivIog.cache
246
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/6hrL0PP7EpTrDf7TE6Jy_bGZTX0YP6vt1Ek4ZV6EZgQ.cache
247
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/AZvyaoCJYXrzlPHaUn5jiXhx5FffjtGdmDbdcFUAFdw.cache
248
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache
249
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/PsO6qD3Gkku7kiCNSCLjl27Qq5KhCd_CA-N_70WNYzA.cache
250
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/RRPGdlAzXvxv9xR3OTJeAZ51DrgTuoR-H0hSr7tw7gI.cache
251
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/W89qjVs-Q9sY5rtUb3SkjwhL30IIXe4E2Hw9Lj-puHc.cache
252
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/XX56qn6mvgUCTqB1EZEwn5jwrN5nZg7QgMZoWarZirw.cache
253
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/X_vJiIKpNLyakGDEt551QhTBBdYNFyORGG_f2652cEU.cache
254
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache
255
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/jhJyHm46ZT4ALVcHC9sT70lqgwGavwHZ0tNh4A87x18.cache
256
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache
257
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache
258
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/tTO9Y99i7uTczFALqpXjw1qu3SnPz3p3IY2y3u8Vn4w.cache
240
259
  - test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
241
260
  - test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
242
261
  - test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
243
262
  - test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
244
263
  - test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
245
264
  - test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
265
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/6hrL0PP7EpTrDf7TE6Jy_bGZTX0YP6vt1Ek4ZV6EZgQ.cache
266
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/AZvyaoCJYXrzlPHaUn5jiXhx5FffjtGdmDbdcFUAFdw.cache
267
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/GXYGtb-l25NlDO_NLupPGzBPs5369e_JOjFRGwV-6ms.cache
268
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/L2e4ZPZnUR8GRnWaRnRIjp0H3Z8vxo4zo_P0_2KSS1E.cache
269
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache
270
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/W89qjVs-Q9sY5rtUb3SkjwhL30IIXe4E2Hw9Lj-puHc.cache
271
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/WraqXvk499CKXtzl5ErboSwG3N_vtSYjJCMgNcHneXk.cache
272
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/X_vJiIKpNLyakGDEt551QhTBBdYNFyORGG_f2652cEU.cache
273
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/YOu-C7kJyArl6rYCUw1yoXsHhxltJRRlOMQYTpbIHL4.cache
274
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZW7dk38nraFCasDj58ONkcokbYpXq6uRpOLoKYf2O8E.cache
275
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/_wrWO3hy4ErxhAexiVHwGyHbESdk_BGYnhWAzRVQHYk.cache
276
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache
277
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/m3sLmK8aXu9kOyNiyDudVIxKOhWTTxdqP6Ygb9hqSWM.cache
278
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache
279
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache
280
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/vmGe_dVH5Bk-GStqPTTa0erZk50i87Lm6HwOd5BtzRg.cache
281
+ - test/dummy/tmp/pids/server.pid
246
282
  - test/helpers/two_factor_auth/authentication_helper_test.rb
247
283
  - test/helpers/two_factor_auth/registrations_helper_test.rb
248
284
  - test/integration/navigation_test.rb
@@ -276,76 +312,114 @@ required_rubygems_version: !ruby/object:Gem::Requirement
276
312
  version: '0'
277
313
  requirements: []
278
314
  rubyforge_project:
279
- rubygems_version: 2.2.2
315
+ rubygems_version: 2.4.8
280
316
  signing_key:
281
317
  specification_version: 4
282
- summary: Support FIDO alliance universal two-factor authentication
318
+ summary: Support FIDO Alliance universal two-factor authentication (U2F)
283
319
  test_files:
284
- - test/lib/two_factor_auth_test.rb
285
- - test/models/two_factor_auth/authentication_response_test.rb
286
- - test/models/two_factor_auth/authentication_request_test.rb
287
- - test/models/two_factor_auth/registration_verifier_test.rb
288
- - test/models/two_factor_auth/registration_response_test.rb
289
- - test/models/two_factor_auth/registration_request_test.rb
290
- - test/models/two_factor_auth/client_data_test.rb
291
- - test/models/two_factor_auth/authentication_verifier_test.rb
292
- - test/integration/navigation_test.rb
320
+ - test/controllers/two_factor_auth/registrations_controller_test.rb
293
321
  - test/controllers/two_factor_auth/trusted_facets_controller_test.rb
294
322
  - test/controllers/two_factor_auth/authentications_controller_test.rb
295
- - test/controllers/two_factor_auth/registrations_controller_test.rb
296
- - test/helpers/two_factor_auth/authentication_helper_test.rb
297
- - test/helpers/two_factor_auth/registrations_helper_test.rb
298
- - test/dummy/config.ru
299
- - test/dummy/config/secrets.yml
323
+ - test/dummy/config/locales/en.yml
324
+ - test/dummy/config/locales/devise.en.yml
325
+ - test/dummy/config/database.yml
326
+ - test/dummy/config/environment.rb
327
+ - test/dummy/config/routes.rb
328
+ - test/dummy/config/initializers/wrap_parameters.rb
329
+ - test/dummy/config/initializers/mime_types.rb
300
330
  - test/dummy/config/initializers/session_store.rb
301
331
  - test/dummy/config/initializers/devise.rb
302
- - test/dummy/config/initializers/cookies_serializer.rb
303
- - test/dummy/config/initializers/inflections.rb
304
- - test/dummy/config/initializers/filter_parameter_logging.rb
305
332
  - test/dummy/config/initializers/two_factor_auth.rb
306
- - test/dummy/config/initializers/mime_types.rb
307
333
  - test/dummy/config/initializers/backtrace_silencers.rb
334
+ - test/dummy/config/initializers/cookies_serializer.rb
335
+ - test/dummy/config/initializers/inflections.rb
308
336
  - test/dummy/config/initializers/assets.rb
309
- - test/dummy/config/initializers/wrap_parameters.rb
310
- - test/dummy/config/routes.rb
311
- - test/dummy/config/boot.rb
312
- - test/dummy/config/environments/production.rb
337
+ - test/dummy/config/initializers/filter_parameter_logging.rb
338
+ - test/dummy/config/secrets.yml
313
339
  - test/dummy/config/environments/development.rb
340
+ - test/dummy/config/environments/production.rb
314
341
  - test/dummy/config/environments/test.rb
315
- - test/dummy/config/database.yml
316
- - test/dummy/config/environment.rb
317
- - test/dummy/config/locales/en.yml
318
- - test/dummy/config/locales/devise.en.yml
342
+ - test/dummy/config/boot.rb
319
343
  - test/dummy/config/application.rb
320
- - test/dummy/db/development.sqlite3
321
- - test/dummy/db/test.sqlite3
322
- - test/dummy/db/schema.rb
323
- - test/dummy/db/migrate/20141026231953_devise_create_users.rb
324
- - test/dummy/db/migrate/20141224135949_create_two_factor_auth_registrations.rb
344
+ - test/dummy/app/controllers/application_controller.rb
345
+ - test/dummy/app/controllers/secrets_controller.rb
325
346
  - test/dummy/app/assets/javascripts/application.js
326
347
  - test/dummy/app/assets/stylesheets/application.css
327
348
  - test/dummy/app/models/user.rb
328
- - test/dummy/app/controllers/application_controller.rb
329
- - test/dummy/app/controllers/secrets_controller.rb
330
- - test/dummy/app/helpers/application_helper.rb
331
349
  - test/dummy/app/views/layouts/application.html.erb
332
350
  - test/dummy/app/views/secrets/index.html.erb
333
- - test/dummy/Rakefile
351
+ - test/dummy/app/helpers/application_helper.rb
352
+ - test/dummy/bin/rails
334
353
  - test/dummy/bin/bundle
335
354
  - test/dummy/bin/rake
336
- - test/dummy/bin/rails
337
- - test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
338
- - test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
339
- - test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
355
+ - test/dummy/README.rdoc
356
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/W89qjVs-Q9sY5rtUb3SkjwhL30IIXe4E2Hw9Lj-puHc.cache
357
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZW7dk38nraFCasDj58ONkcokbYpXq6uRpOLoKYf2O8E.cache
358
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache
359
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/X_vJiIKpNLyakGDEt551QhTBBdYNFyORGG_f2652cEU.cache
360
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/6hrL0PP7EpTrDf7TE6Jy_bGZTX0YP6vt1Ek4ZV6EZgQ.cache
361
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/m3sLmK8aXu9kOyNiyDudVIxKOhWTTxdqP6Ygb9hqSWM.cache
362
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/_wrWO3hy4ErxhAexiVHwGyHbESdk_BGYnhWAzRVQHYk.cache
363
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/vmGe_dVH5Bk-GStqPTTa0erZk50i87Lm6HwOd5BtzRg.cache
364
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/L2e4ZPZnUR8GRnWaRnRIjp0H3Z8vxo4zo_P0_2KSS1E.cache
365
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache
366
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache
367
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/YOu-C7kJyArl6rYCUw1yoXsHhxltJRRlOMQYTpbIHL4.cache
368
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/GXYGtb-l25NlDO_NLupPGzBPs5369e_JOjFRGwV-6ms.cache
369
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/WraqXvk499CKXtzl5ErboSwG3N_vtSYjJCMgNcHneXk.cache
370
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/AZvyaoCJYXrzlPHaUn5jiXhx5FffjtGdmDbdcFUAFdw.cache
371
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache
340
372
  - test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
341
373
  - test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
342
374
  - test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
343
- - test/dummy/README.rdoc
375
+ - test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
376
+ - test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
377
+ - test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
378
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/W89qjVs-Q9sY5rtUb3SkjwhL30IIXe4E2Hw9Lj-puHc.cache
379
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/tTO9Y99i7uTczFALqpXjw1qu3SnPz3p3IY2y3u8Vn4w.cache
380
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/tPF6H9NRpGO3whu2y5_e_R_1EACKdCwu5437D83qJT0.cache
381
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/X_vJiIKpNLyakGDEt551QhTBBdYNFyORGG_f2652cEU.cache
382
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/6hrL0PP7EpTrDf7TE6Jy_bGZTX0YP6vt1Ek4ZV6EZgQ.cache
383
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/2VRoJl4_ryRqfqbshRZyyukLNeBRe43LWj0jAxWygT8.cache
384
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/XX56qn6mvgUCTqB1EZEwn5jwrN5nZg7QgMZoWarZirw.cache
385
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/jhJyHm46ZT4ALVcHC9sT70lqgwGavwHZ0tNh4A87x18.cache
386
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/oCsZTGZyV4kH8Y4OeSDUdrwfkJFPzTODZjuBKZB8oGQ.cache
387
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/hj8Ir9wcVSy1KYrnWu9bpD24vDhCG3tvt-nKbNxb1Wg.cache
388
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/RRPGdlAzXvxv9xR3OTJeAZ51DrgTuoR-H0hSr7tw7gI.cache
389
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/23gMR8_-IjXg7R6VFJYTeYfI5Bk1pWz9cGq8bYcuJVk.cache
390
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/PsO6qD3Gkku7kiCNSCLjl27Qq5KhCd_CA-N_70WNYzA.cache
391
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/AZvyaoCJYXrzlPHaUn5jiXhx5FffjtGdmDbdcFUAFdw.cache
392
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/3xxZOw1d_F3SQEOfqWbJDK7GkQZG6RFL_rML9GivIog.cache
393
+ - test/dummy/tmp/cache/assets/development/sprockets/v3.0/O8akbUwAbmIKY-AhITimq-JDQ6IgsO3Hvq2v5etufFw.cache
394
+ - test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af
395
+ - test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994
396
+ - test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655
397
+ - test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953
398
+ - test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6
399
+ - test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705
400
+ - test/dummy/tmp/pids/server.pid
401
+ - test/dummy/db/schema.rb
402
+ - test/dummy/db/migrate/20141026231953_devise_create_users.rb
403
+ - test/dummy/db/migrate/20141224135949_create_two_factor_auth_registrations.rb
404
+ - test/dummy/db/test.sqlite3
405
+ - test/dummy/db/development.sqlite3
344
406
  - test/dummy/log/development.log
345
407
  - test/dummy/log/test.log
346
- - test/dummy/public/422.html
347
- - test/dummy/public/favicon.ico
348
408
  - test/dummy/public/404.html
349
409
  - test/dummy/public/500.html
410
+ - test/dummy/public/favicon.ico
411
+ - test/dummy/public/422.html
412
+ - test/dummy/Rakefile
413
+ - test/dummy/config.ru
414
+ - test/integration/navigation_test.rb
415
+ - test/models/two_factor_auth/authentication_request_test.rb
416
+ - test/models/two_factor_auth/client_data_test.rb
417
+ - test/models/two_factor_auth/registration_verifier_test.rb
418
+ - test/models/two_factor_auth/authentication_response_test.rb
419
+ - test/models/two_factor_auth/authentication_verifier_test.rb
420
+ - test/models/two_factor_auth/registration_response_test.rb
421
+ - test/models/two_factor_auth/registration_request_test.rb
422
+ - test/lib/two_factor_auth_test.rb
350
423
  - test/test_helper.rb
351
- has_rdoc:
424
+ - test/helpers/two_factor_auth/authentication_helper_test.rb
425
+ - test/helpers/two_factor_auth/registrations_helper_test.rb