devise-two-factor 4.1.1 → 6.1.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.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +6 -0
- data/.github/workflows/ci.yml +5 -17
- data/.github/workflows/push.yml +28 -0
- data/.markdownlint.json +6 -0
- data/Appraisals +12 -32
- data/CHANGELOG.md +21 -0
- data/README.md +109 -63
- data/Rakefile +2 -0
- data/SECURITY.md +5 -0
- data/UPGRADING.md +218 -2
- data/devise-two-factor.gemspec +7 -14
- data/gemfiles/rails_7.0.gemfile +2 -2
- data/gemfiles/{rails_4.1.gemfile → rails_7.1.gemfile} +2 -2
- data/gemfiles/{rails_4.2.gemfile → rails_7.2.gemfile} +2 -2
- data/gemfiles/{rails_5.0.gemfile → rails_8.0.gemfile} +2 -2
- data/lib/devise-two-factor.rb +11 -5
- data/lib/devise_two_factor/models/two_factor_authenticatable.rb +32 -17
- data/lib/devise_two_factor/models/two_factor_backupable.rb +3 -2
- data/lib/devise_two_factor/spec_helpers/two_factor_authenticatable_shared_examples.rb +6 -18
- data/lib/devise_two_factor/spec_helpers/two_factor_backupable_shared_examples.rb +2 -2
- data/lib/devise_two_factor/strategies/two_factor_authenticatable.rb +1 -1
- data/lib/devise_two_factor/strategies/two_factor_backupable.rb +0 -3
- data/lib/devise_two_factor/version.rb +1 -1
- data/lib/generators/devise_two_factor/devise_two_factor_generator.rb +2 -7
- data/spec/devise/models/two_factor_authenticatable_spec.rb +11 -69
- data/spec/devise/models/two_factor_backupable_spec.rb +11 -2
- data/spec/spec_helper.rb +0 -1
- metadata +33 -126
- checksums.yaml.gz.sig +0 -0
- data/certs/tinfoil-cacert.pem +0 -41
- data/certs/tinfoilsecurity-gems-cert.pem +0 -35
- data/gemfiles/rails_5.1.gemfile +0 -8
- data/gemfiles/rails_5.2.gemfile +0 -8
- data/gemfiles/rails_6.0.gemfile +0 -8
- data/gemfiles/rails_6.1.gemfile +0 -8
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
|
@@ -6,91 +6,33 @@ class TwoFactorAuthenticatableDouble
|
|
|
6
6
|
include ::ActiveModel::Validations::Callbacks
|
|
7
7
|
extend ::Devise::Models
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
attr_accessor :consumed_timestep
|
|
14
|
-
|
|
15
|
-
def save(validate)
|
|
16
|
-
# noop for testing
|
|
17
|
-
true
|
|
9
|
+
# stub out the ::ActiveRecord::Encryption::EncryptableRecord API
|
|
10
|
+
attr_accessor :otp_secret
|
|
11
|
+
def self.encrypts(*attrs)
|
|
12
|
+
nil
|
|
18
13
|
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
class TwoFactorAuthenticatableWithCustomizeAttrEncryptedDouble
|
|
22
|
-
extend ::ActiveModel::Callbacks
|
|
23
|
-
include ::ActiveModel::Validations::Callbacks
|
|
24
|
-
|
|
25
|
-
# like https://github.com/tinfoil/devise-two-factor/blob/cf73e52043fbe45b74d68d02bc859522ad22fe73/UPGRADING.md#guide-to-upgrading-from-2x-to-3x
|
|
26
|
-
extend ::AttrEncrypted
|
|
27
|
-
attr_encrypted :otp_secret,
|
|
28
|
-
:key => 'test-key'*8,
|
|
29
|
-
:mode => :per_attribute_iv_and_salt,
|
|
30
|
-
:algorithm => 'aes-256-cbc'
|
|
31
|
-
|
|
32
|
-
extend ::Devise::Models
|
|
33
14
|
|
|
34
15
|
define_model_callbacks :update
|
|
35
16
|
|
|
36
|
-
devise :two_factor_authenticatable
|
|
17
|
+
devise :two_factor_authenticatable
|
|
37
18
|
|
|
38
19
|
attr_accessor :consumed_timestep
|
|
39
20
|
|
|
40
|
-
def save(
|
|
21
|
+
def save!(_)
|
|
41
22
|
# noop for testing
|
|
42
23
|
true
|
|
43
24
|
end
|
|
44
25
|
end
|
|
45
26
|
|
|
46
27
|
describe ::Devise::Models::TwoFactorAuthenticatable do
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
it_behaves_like 'two_factor_authenticatable'
|
|
28
|
+
it 'should be inserted prior to other devise modules' do
|
|
29
|
+
expect(Devise::ALL.first).to eq(:two_factor_authenticatable)
|
|
51
30
|
end
|
|
52
|
-
end
|
|
53
31
|
|
|
54
|
-
describe ::Devise::Models::TwoFactorAuthenticatable do
|
|
55
32
|
context 'When included in a class' do
|
|
56
|
-
subject {
|
|
33
|
+
subject { TwoFactorAuthenticatableDouble.new }
|
|
57
34
|
|
|
58
35
|
it_behaves_like 'two_factor_authenticatable'
|
|
59
|
-
|
|
60
|
-
before :each do
|
|
61
|
-
subject.otp_secret = subject.class.generate_otp_secret
|
|
62
|
-
subject.consumed_timestep = nil
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
describe 'otp_secret options' do
|
|
66
|
-
it 'should be of the key' do
|
|
67
|
-
if attr_encrypted_is_rails_seven_compatible?
|
|
68
|
-
expect(subject.attr_encrypted_encrypted_attributes[:otp_secret][:key]).to eq('test-key'*8)
|
|
69
|
-
else
|
|
70
|
-
expect(subject.encrypted_attributes[:otp_secret][:key]).to eq('test-key'*8)
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it 'should be of the mode' do
|
|
75
|
-
if attr_encrypted_is_rails_seven_compatible?
|
|
76
|
-
expect(subject.attr_encrypted_encrypted_attributes[:otp_secret][:mode]).to eq(:per_attribute_iv_and_salt)
|
|
77
|
-
else
|
|
78
|
-
expect(subject.encrypted_attributes[:otp_secret][:mode]).to eq(:per_attribute_iv_and_salt)
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
it 'should be of the mode' do
|
|
83
|
-
if attr_encrypted_is_rails_seven_compatible?
|
|
84
|
-
expect(subject.attr_encrypted_encrypted_attributes[:otp_secret][:algorithm]).to eq('aes-256-cbc')
|
|
85
|
-
else
|
|
86
|
-
expect(subject.encrypted_attributes[:otp_secret][:algorithm]).to eq('aes-256-cbc')
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def attr_encrypted_is_rails_seven_compatible?
|
|
91
|
-
Gem::Version.new(AttrEncrypted::Version.string) >= Gem::Version.new('4.0.0')
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
36
|
end
|
|
95
37
|
end
|
|
96
38
|
|
|
@@ -101,11 +43,11 @@ describe ::Devise::Models::TwoFactorAuthenticatable do
|
|
|
101
43
|
subject.otp_attempt = 'foo'
|
|
102
44
|
subject.password_confirmation = 'foo'
|
|
103
45
|
end
|
|
104
|
-
it 'otp_attempt should be nill' do
|
|
46
|
+
it 'otp_attempt should be nill' do
|
|
105
47
|
subject.clean_up_passwords
|
|
106
48
|
expect(subject.otp_attempt).to be_nil
|
|
107
49
|
end
|
|
108
|
-
it 'password_confirmation should be nill' do
|
|
50
|
+
it 'password_confirmation should be nill' do
|
|
109
51
|
subject.clean_up_passwords
|
|
110
52
|
expect(subject.password_confirmation).to be_nil
|
|
111
53
|
end
|
|
@@ -6,12 +6,21 @@ class TwoFactorBackupableDouble
|
|
|
6
6
|
include ::ActiveModel::Validations::Callbacks
|
|
7
7
|
extend ::Devise::Models
|
|
8
8
|
|
|
9
|
+
# stub out the ::ActiveRecord::Encryption::EncryptableRecord API
|
|
10
|
+
attr_accessor :otp_secret
|
|
11
|
+
def self.encrypts(*attrs)
|
|
12
|
+
nil
|
|
13
|
+
end
|
|
14
|
+
|
|
9
15
|
define_model_callbacks :update
|
|
10
16
|
|
|
11
|
-
devise :two_factor_authenticatable, :two_factor_backupable
|
|
12
|
-
:otp_secret_encryption_key => 'test-key'*4
|
|
17
|
+
devise :two_factor_authenticatable, :two_factor_backupable
|
|
13
18
|
|
|
14
19
|
attr_accessor :otp_backup_codes
|
|
20
|
+
|
|
21
|
+
def save!(_)
|
|
22
|
+
true
|
|
23
|
+
end
|
|
15
24
|
end
|
|
16
25
|
|
|
17
26
|
describe ::Devise::Models::TwoFactorBackupable do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,147 +1,55 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: devise-two-factor
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 6.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
7
|
+
- Quinn Wilton
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
|
-
cert_chain:
|
|
11
|
-
-
|
|
12
|
-
-----BEGIN CERTIFICATE-----
|
|
13
|
-
MIIHSjCCBTKgAwIBAgIJAK2u0LojMCNgMA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
|
|
14
|
-
VQQGEwJVUzELMAkGA1UECBMCQ0ExEjAQBgNVBAcTCVBhbG8gQWx0bzEfMB0GA1UE
|
|
15
|
-
ChMWVGluZm9pbCBTZWN1cml0eSwgSW5jLjEfMB0GA1UEAxMWVGluZm9pbCBTZWN1
|
|
16
|
-
cml0eSwgSW5jLjEqMCgGCSqGSIb3DQEJARYbc3VwcG9ydEB0aW5mb2lsc2VjdXJp
|
|
17
|
-
dHkuY29tMB4XDTIxMDkwOTE4MjIwMFoXDTI1MDkwOTE4MjIwMFowgZwxCzAJBgNV
|
|
18
|
-
BAYTAlVTMQswCQYDVQQIEwJDQTESMBAGA1UEBxMJUGFsbyBBbHRvMR8wHQYDVQQK
|
|
19
|
-
ExZUaW5mb2lsIFNlY3VyaXR5LCBJbmMuMR8wHQYDVQQDExZUaW5mb2lsIFNlY3Vy
|
|
20
|
-
aXR5LCBJbmMuMSowKAYJKoZIhvcNAQkBFhtzdXBwb3J0QHRpbmZvaWxzZWN1cml0
|
|
21
|
-
eS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqbHvsSj0H0FB1
|
|
22
|
-
0gLYoDK1BKugkSB2DZeZZHP6B1UdWRahJXJP9oT1lhfQxx8iX4cgEi7JU3NqA6NR
|
|
23
|
-
cIRFQ50eH/qlmgs7909gaf8pDaeC0vR3wd0GeRg6qr1eDEnkzIyr/D1AMiX6H1eP
|
|
24
|
-
Y7J3SfrdaL3gft2iPRKGkgqsXR7oBNLA3n/ShiNgPXqRDl1CCj6aMY0cn5ROFScz
|
|
25
|
-
vT2FUB4DEwPD2l18m1p99OnXqsOLL2J65qA2+cI8FtgFmlwIi5oSf+URvIdNx+cH
|
|
26
|
-
lInlAtVHCvAKYLY0dlQ7czMQBcRpYjp2rwPt9f2ksq9b/voMTBABYHFV+IVn8svv
|
|
27
|
-
GZ5e1+icjtr/R7dCGmCdEdFLXVxafmZhukymG9USv9DKuv1qh7r4q8KaPIE8n7nQ
|
|
28
|
-
m97jENFfsgnwv+nUmIJ3tzuW5ZxO7A0tIIYdwzt0UjrO3ya4R5bTFXr4bnzZ/g/s
|
|
29
|
-
CLknWqg1BCRlPd6LnpVGPT0gNDV1pEO25wE3A3Yy0Ujxudcgay/CgUhnlU11qOAc
|
|
30
|
-
xmar2fhNZsviUhndd/220Ad5QMV2XzcAiopJIeu0juIVGRQM7x2h19Hsp0m6sOEF
|
|
31
|
-
jfhvbdUa4nvmIFeYFY+hr/YkTmG9ZjyBa8YaZXhwjhSmKCQ374J7mn5e0Cryuvi5
|
|
32
|
-
tYhwJn8rdwYZF/h2qqfEu8vaLoD09QIDAQABo4IBizCCAYcwHQYDVR0OBBYEFMmT
|
|
33
|
-
/x412UH+5OHqgleeTjLOv6iHMIHRBgNVHSMEgckwgcaAFMmT/x412UH+5OHqglee
|
|
34
|
-
TjLOv6iHoYGipIGfMIGcMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEjAQBgNV
|
|
35
|
-
BAcTCVBhbG8gQWx0bzEfMB0GA1UEChMWVGluZm9pbCBTZWN1cml0eSwgSW5jLjEf
|
|
36
|
-
MB0GA1UEAxMWVGluZm9pbCBTZWN1cml0eSwgSW5jLjEqMCgGCSqGSIb3DQEJARYb
|
|
37
|
-
c3VwcG9ydEB0aW5mb2lsc2VjdXJpdHkuY29tggkAra7QuiMwI2AwDwYDVR0TAQH/
|
|
38
|
-
BAUwAwEB/zARBglghkgBhvhCAQEEBAMCAQYwCQYDVR0SBAIwADArBglghkgBhvhC
|
|
39
|
-
AQ0EHhYcVGlueUNBIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAmBgNVHREEHzAdgRtz
|
|
40
|
-
dXBwb3J0QHRpbmZvaWxzZWN1cml0eS5jb20wDgYDVR0PAQH/BAQDAgEGMA0GCSqG
|
|
41
|
-
SIb3DQEBBQUAA4ICAQBZy4JJSmwLuO0nZbdr4tJeVS2P8bcGi6PzAcdzVfwzjp6n
|
|
42
|
-
5qf8m4O8my4lnJieom0GrWSHQoPY1Yur4hEoZbugKO9DWZL3dTiGcrgw0TbQ6Gtq
|
|
43
|
-
TTPatW3LA21qFJwvohSvLqPdmZuM+H9g49sdl2kNTDVI6iUyMYuNpL14aPKPGBFo
|
|
44
|
-
o7UjciT1h7JtJl9b/fXrbPeRHBwpZXWeipiPGv/OZW5KnOsNlUkTquS7Zj4ETkIC
|
|
45
|
-
6mVtmsLvq+YwFthFyMU37pXwYxcmqRmH6lX+XC6AVW5oO4GBmG+Zr/Z+h5Cih5ca
|
|
46
|
-
/mX88RkO+dGTjw1IdxKmxOqKL62OBATKrTDJ/scsmRptynA4TunYW+7ikOpDbPfL
|
|
47
|
-
l18aleLISlcgWJg/Czf2nmBqAClPLnhV8qxWsvt58MQQ/Jpoggvpl8EG1PylWiBS
|
|
48
|
-
Kc/4Ad/FKQFpTzXUgDg2kV07npVjYbBzA5p4ZSWSlflFu93jb9gg2+qtnRSImVCZ
|
|
49
|
-
nQjZdsv8hebElPAIbtJjSnoH1Kz2ucYLakdF1UMKnpp1PVREtuKPz/foU9KUHs0z
|
|
50
|
-
dWRALx8cWG4uKK9AIEUlVdGKfX0Wj0qFK0KGxl3f3jObud5Agwue2EPKWwUzEGUh
|
|
51
|
-
Iqp60gNw3vBdKHw4dh1bfcbXWnRDL+OQPuOFZeMWgu1QmeHeuggYtYtRg7V5Kg==
|
|
52
|
-
-----END CERTIFICATE-----
|
|
53
|
-
- |
|
|
54
|
-
-----BEGIN CERTIFICATE-----
|
|
55
|
-
MIIGADCCA+igAwIBAgIIHIF9ta6cW3YwDQYJKoZIhvcNAQENBQAwgZwxCzAJBgNV
|
|
56
|
-
BAYTAlVTMQswCQYDVQQIEwJDQTESMBAGA1UEBxMJUGFsbyBBbHRvMR8wHQYDVQQK
|
|
57
|
-
ExZUaW5mb2lsIFNlY3VyaXR5LCBJbmMuMR8wHQYDVQQDExZUaW5mb2lsIFNlY3Vy
|
|
58
|
-
aXR5LCBJbmMuMSowKAYJKoZIhvcNAQkBFhtzdXBwb3J0QHRpbmZvaWxzZWN1cml0
|
|
59
|
-
eS5jb20wHhcNMjIwMzIyMjI1MzAwWhcNMjUwOTA5MTgyMjAwWjCBiDELMAkGA1UE
|
|
60
|
-
BhMCVVMxCzAJBgNVBAgTAkNBMR8wHQYDVQQKExZUaW5mb2lsIFNlY3VyaXR5LCBJ
|
|
61
|
-
bmMuMR0wGwYDVQQDExR0aW5mb2lsc2VjdXJpdHktZ2VtczEsMCoGCSqGSIb3DQEJ
|
|
62
|
-
ARYdZW5naW5lZXJzQHRpbmZvaWxzZWN1cml0eS5jb20wggIiMA0GCSqGSIb3DQEB
|
|
63
|
-
AQUAA4ICDwAwggIKAoICAQDNJYNH8D+8lACLt3KzjEIPs3XVBCPaMm2eD/Xk9OOT
|
|
64
|
-
uDV/NqgMK0icD9MRxMUtS3SCrC9QcPocXT76f2LQ3yVJuK+rBUasymEES47PIx2c
|
|
65
|
-
zC4n4Hga0xPPuBpioO26oaRFsobyzh9RPOIbnYfpjyqtdrbm+YyM3sPR4XzFirv9
|
|
66
|
-
xomT4E9T4RCLgOQHTcLKL9K9m+EN7PeVdVUXV0Pa7cVs2vJUKedsd7vnr6Lzbn8T
|
|
67
|
-
oPk/7J/4W931PbaeI5yg9ZuaRa9K2IaY1TkPI67NW4qKitBVepRlXw6Sb7TYcUnc
|
|
68
|
-
WEQ/eC5CpnOmqUrG5tfGD8cc5aGZOkitW/VXZgVj81xgCv1hk4HjErrqq4FBNAaC
|
|
69
|
-
SNyBfwR0TUYqg1lN1nbNjOKwfb6YRn06R2ovcFJG0tmGhsQULCr6fW8u2TfSM+U9
|
|
70
|
-
WFSIJx2griureY7EZPwg/MgsUiWUWMFemz3GVYXWJR3dN2pW9Uqr3rkjKZbA0bst
|
|
71
|
-
GWahJO9HuFdDakQxoaTPYPtTQDC+kskkO6lKG1KLIoZ1iLZzB1Ks1vEeyE7lp1im
|
|
72
|
-
WgpUq+q23PFkt1gIBi/4tGvzsLZye25QU2Y+XLzldCNm+DyRFXZ+Q+bK33IveUeU
|
|
73
|
-
WEOv4T1qTXHAOypyzmgodVRG/PrlsSMOBfE515kG1mDMGjRcCpEtlskgxUbf7qM7
|
|
74
|
-
hQIDAQABo1gwVjAJBgNVHRMEAjAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHBzOi8v
|
|
75
|
-
d3d3LnRpbmZvaWxzZWN1cml0eS5jb20vc2VjdXJpdHkvcmV2b2NhdGlvbl9saXN0
|
|
76
|
-
MA0GCSqGSIb3DQEBDQUAA4ICAQAiYF/m2ny/mxFvBVxHfdYuzybhCvsEUd+TSnoe
|
|
77
|
-
mqOWntY3sxCOaY0aGOMB4vyg9G+oP/kT4m63sD4uQxeuU7WOjaG2smCSS5q+PSWS
|
|
78
|
-
v63gILqPamjSyP/Om864EA6YlvVQ7nPXhVDEaiBt3iliefJGmb0wWSbbDCmq3aMb
|
|
79
|
-
WTLuax/IeY6MjJi20LutIcuz+VX8OxlA1hSpgAToMz3xrhA8fPt5UkKhkDkPFYBF
|
|
80
|
-
5htKVipyijChWsXyt33YM2qGaavTEXzxza1I99PGNRKxUMvbSMas4YaLqkBpQSc+
|
|
81
|
-
mcrLWYPiXWsePGu+j08AypE2Ubp4AOSZJN9rBBGotC3gofipo+K/sBiOM9xXI76Q
|
|
82
|
-
0HYOxXPa7D7UQQG1R9i0rcxmf9qepIVYCldmqVkKKDizcDo5UI9lRiLFjDyQhn6l
|
|
83
|
-
YFY9bPQ4lKTK5Jr3M6+dV7fHxLhqXyMGs1905IUb7qvB7Bq/f0qJfC0JZuY/qdn2
|
|
84
|
-
lL0SeFKOVsjErtobh3u8p8j2USkc8uJgIANHpXEMEExdp899CV/eVjh3TpAR7E6T
|
|
85
|
-
mg7Q9Hi6Hh8z+Le9iR4I49vPEWDQEvj35IT6VfwU79UfIOlX+DkW8fFkPbaut3Se
|
|
86
|
-
vqIDv6JBG9I16h/HhchntKfM58MI1bNZFBSdZqYOJiL8JIjP8HNIk76Y366ppG29
|
|
87
|
-
EhBYYg==
|
|
88
|
-
-----END CERTIFICATE-----
|
|
89
|
-
date: 2023-10-12 00:00:00.000000000 Z
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2024-11-11 00:00:00.000000000 Z
|
|
90
12
|
dependencies:
|
|
91
13
|
- !ruby/object:Gem::Dependency
|
|
92
14
|
name: railties
|
|
93
15
|
requirement: !ruby/object:Gem::Requirement
|
|
94
16
|
requirements:
|
|
95
|
-
- - "
|
|
96
|
-
- !ruby/object:Gem::Version
|
|
97
|
-
version: '7.0'
|
|
98
|
-
type: :runtime
|
|
99
|
-
prerelease: false
|
|
100
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
101
|
-
requirements:
|
|
102
|
-
- - "~>"
|
|
17
|
+
- - ">="
|
|
103
18
|
- !ruby/object:Gem::Version
|
|
104
19
|
version: '7.0'
|
|
105
|
-
-
|
|
106
|
-
name: activesupport
|
|
107
|
-
requirement: !ruby/object:Gem::Requirement
|
|
108
|
-
requirements:
|
|
109
|
-
- - "~>"
|
|
20
|
+
- - "<"
|
|
110
21
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: '
|
|
22
|
+
version: '8.1'
|
|
112
23
|
type: :runtime
|
|
113
24
|
prerelease: false
|
|
114
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
115
26
|
requirements:
|
|
116
|
-
- - "
|
|
27
|
+
- - ">="
|
|
117
28
|
- !ruby/object:Gem::Version
|
|
118
29
|
version: '7.0'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '8.1'
|
|
119
33
|
- !ruby/object:Gem::Dependency
|
|
120
|
-
name:
|
|
34
|
+
name: activesupport
|
|
121
35
|
requirement: !ruby/object:Gem::Requirement
|
|
122
36
|
requirements:
|
|
123
37
|
- - ">="
|
|
124
38
|
- !ruby/object:Gem::Version
|
|
125
|
-
version: '
|
|
126
|
-
- - "!="
|
|
127
|
-
- !ruby/object:Gem::Version
|
|
128
|
-
version: '2'
|
|
39
|
+
version: '7.0'
|
|
129
40
|
- - "<"
|
|
130
41
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: '
|
|
42
|
+
version: '8.1'
|
|
132
43
|
type: :runtime
|
|
133
44
|
prerelease: false
|
|
134
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
46
|
requirements:
|
|
136
47
|
- - ">="
|
|
137
48
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: '
|
|
139
|
-
- - "!="
|
|
140
|
-
- !ruby/object:Gem::Version
|
|
141
|
-
version: '2'
|
|
49
|
+
version: '7.0'
|
|
142
50
|
- - "<"
|
|
143
51
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: '
|
|
52
|
+
version: '8.1'
|
|
145
53
|
- !ruby/object:Gem::Dependency
|
|
146
54
|
name: devise
|
|
147
55
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -241,27 +149,31 @@ dependencies:
|
|
|
241
149
|
- !ruby/object:Gem::Version
|
|
242
150
|
version: '0'
|
|
243
151
|
- !ruby/object:Gem::Dependency
|
|
244
|
-
name:
|
|
152
|
+
name: rake
|
|
245
153
|
requirement: !ruby/object:Gem::Requirement
|
|
246
154
|
requirements:
|
|
247
|
-
- - "
|
|
155
|
+
- - "~>"
|
|
248
156
|
- !ruby/object:Gem::Version
|
|
249
|
-
version: '
|
|
157
|
+
version: '13'
|
|
250
158
|
type: :development
|
|
251
159
|
prerelease: false
|
|
252
160
|
version_requirements: !ruby/object:Gem::Requirement
|
|
253
161
|
requirements:
|
|
254
|
-
- - "
|
|
162
|
+
- - "~>"
|
|
255
163
|
- !ruby/object:Gem::Version
|
|
256
|
-
version: '
|
|
257
|
-
description:
|
|
258
|
-
|
|
164
|
+
version: '13'
|
|
165
|
+
description: Devise-Two-Factor is a minimalist extension to Devise which offers support
|
|
166
|
+
for two-factor authentication through the TOTP scheme.
|
|
167
|
+
email:
|
|
259
168
|
executables: []
|
|
260
169
|
extensions: []
|
|
261
170
|
extra_rdoc_files: []
|
|
262
171
|
files:
|
|
172
|
+
- ".github/dependabot.yml"
|
|
263
173
|
- ".github/workflows/ci.yml"
|
|
174
|
+
- ".github/workflows/push.yml"
|
|
264
175
|
- ".gitignore"
|
|
176
|
+
- ".markdownlint.json"
|
|
265
177
|
- ".rspec"
|
|
266
178
|
- Appraisals
|
|
267
179
|
- CHANGELOG.md
|
|
@@ -270,18 +182,13 @@ files:
|
|
|
270
182
|
- LICENSE
|
|
271
183
|
- README.md
|
|
272
184
|
- Rakefile
|
|
185
|
+
- SECURITY.md
|
|
273
186
|
- UPGRADING.md
|
|
274
|
-
- certs/tinfoil-cacert.pem
|
|
275
|
-
- certs/tinfoilsecurity-gems-cert.pem
|
|
276
187
|
- devise-two-factor.gemspec
|
|
277
|
-
- gemfiles/rails_4.1.gemfile
|
|
278
|
-
- gemfiles/rails_4.2.gemfile
|
|
279
|
-
- gemfiles/rails_5.0.gemfile
|
|
280
|
-
- gemfiles/rails_5.1.gemfile
|
|
281
|
-
- gemfiles/rails_5.2.gemfile
|
|
282
|
-
- gemfiles/rails_6.0.gemfile
|
|
283
|
-
- gemfiles/rails_6.1.gemfile
|
|
284
188
|
- gemfiles/rails_7.0.gemfile
|
|
189
|
+
- gemfiles/rails_7.1.gemfile
|
|
190
|
+
- gemfiles/rails_7.2.gemfile
|
|
191
|
+
- gemfiles/rails_8.0.gemfile
|
|
285
192
|
- lib/devise-two-factor.rb
|
|
286
193
|
- lib/devise_two_factor/models.rb
|
|
287
194
|
- lib/devise_two_factor/models/two_factor_authenticatable.rb
|
|
@@ -297,7 +204,7 @@ files:
|
|
|
297
204
|
- spec/devise/models/two_factor_authenticatable_spec.rb
|
|
298
205
|
- spec/devise/models/two_factor_backupable_spec.rb
|
|
299
206
|
- spec/spec_helper.rb
|
|
300
|
-
homepage: https://github.com/
|
|
207
|
+
homepage: https://github.com/devise-two-factor/devise-two-factor
|
|
301
208
|
licenses:
|
|
302
209
|
- MIT
|
|
303
210
|
metadata: {}
|
|
@@ -316,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
316
223
|
- !ruby/object:Gem::Version
|
|
317
224
|
version: '0'
|
|
318
225
|
requirements: []
|
|
319
|
-
rubygems_version: 3.
|
|
226
|
+
rubygems_version: 3.5.22
|
|
320
227
|
signing_key:
|
|
321
228
|
specification_version: 4
|
|
322
229
|
summary: Barebones two-factor authentication with Devise
|
checksums.yaml.gz.sig
DELETED
|
Binary file
|
data/certs/tinfoil-cacert.pem
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIHSjCCBTKgAwIBAgIJAK2u0LojMCNgMA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
|
|
3
|
-
VQQGEwJVUzELMAkGA1UECBMCQ0ExEjAQBgNVBAcTCVBhbG8gQWx0bzEfMB0GA1UE
|
|
4
|
-
ChMWVGluZm9pbCBTZWN1cml0eSwgSW5jLjEfMB0GA1UEAxMWVGluZm9pbCBTZWN1
|
|
5
|
-
cml0eSwgSW5jLjEqMCgGCSqGSIb3DQEJARYbc3VwcG9ydEB0aW5mb2lsc2VjdXJp
|
|
6
|
-
dHkuY29tMB4XDTIxMDkwOTE4MjIwMFoXDTI1MDkwOTE4MjIwMFowgZwxCzAJBgNV
|
|
7
|
-
BAYTAlVTMQswCQYDVQQIEwJDQTESMBAGA1UEBxMJUGFsbyBBbHRvMR8wHQYDVQQK
|
|
8
|
-
ExZUaW5mb2lsIFNlY3VyaXR5LCBJbmMuMR8wHQYDVQQDExZUaW5mb2lsIFNlY3Vy
|
|
9
|
-
aXR5LCBJbmMuMSowKAYJKoZIhvcNAQkBFhtzdXBwb3J0QHRpbmZvaWxzZWN1cml0
|
|
10
|
-
eS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqbHvsSj0H0FB1
|
|
11
|
-
0gLYoDK1BKugkSB2DZeZZHP6B1UdWRahJXJP9oT1lhfQxx8iX4cgEi7JU3NqA6NR
|
|
12
|
-
cIRFQ50eH/qlmgs7909gaf8pDaeC0vR3wd0GeRg6qr1eDEnkzIyr/D1AMiX6H1eP
|
|
13
|
-
Y7J3SfrdaL3gft2iPRKGkgqsXR7oBNLA3n/ShiNgPXqRDl1CCj6aMY0cn5ROFScz
|
|
14
|
-
vT2FUB4DEwPD2l18m1p99OnXqsOLL2J65qA2+cI8FtgFmlwIi5oSf+URvIdNx+cH
|
|
15
|
-
lInlAtVHCvAKYLY0dlQ7czMQBcRpYjp2rwPt9f2ksq9b/voMTBABYHFV+IVn8svv
|
|
16
|
-
GZ5e1+icjtr/R7dCGmCdEdFLXVxafmZhukymG9USv9DKuv1qh7r4q8KaPIE8n7nQ
|
|
17
|
-
m97jENFfsgnwv+nUmIJ3tzuW5ZxO7A0tIIYdwzt0UjrO3ya4R5bTFXr4bnzZ/g/s
|
|
18
|
-
CLknWqg1BCRlPd6LnpVGPT0gNDV1pEO25wE3A3Yy0Ujxudcgay/CgUhnlU11qOAc
|
|
19
|
-
xmar2fhNZsviUhndd/220Ad5QMV2XzcAiopJIeu0juIVGRQM7x2h19Hsp0m6sOEF
|
|
20
|
-
jfhvbdUa4nvmIFeYFY+hr/YkTmG9ZjyBa8YaZXhwjhSmKCQ374J7mn5e0Cryuvi5
|
|
21
|
-
tYhwJn8rdwYZF/h2qqfEu8vaLoD09QIDAQABo4IBizCCAYcwHQYDVR0OBBYEFMmT
|
|
22
|
-
/x412UH+5OHqgleeTjLOv6iHMIHRBgNVHSMEgckwgcaAFMmT/x412UH+5OHqglee
|
|
23
|
-
TjLOv6iHoYGipIGfMIGcMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEjAQBgNV
|
|
24
|
-
BAcTCVBhbG8gQWx0bzEfMB0GA1UEChMWVGluZm9pbCBTZWN1cml0eSwgSW5jLjEf
|
|
25
|
-
MB0GA1UEAxMWVGluZm9pbCBTZWN1cml0eSwgSW5jLjEqMCgGCSqGSIb3DQEJARYb
|
|
26
|
-
c3VwcG9ydEB0aW5mb2lsc2VjdXJpdHkuY29tggkAra7QuiMwI2AwDwYDVR0TAQH/
|
|
27
|
-
BAUwAwEB/zARBglghkgBhvhCAQEEBAMCAQYwCQYDVR0SBAIwADArBglghkgBhvhC
|
|
28
|
-
AQ0EHhYcVGlueUNBIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAmBgNVHREEHzAdgRtz
|
|
29
|
-
dXBwb3J0QHRpbmZvaWxzZWN1cml0eS5jb20wDgYDVR0PAQH/BAQDAgEGMA0GCSqG
|
|
30
|
-
SIb3DQEBBQUAA4ICAQBZy4JJSmwLuO0nZbdr4tJeVS2P8bcGi6PzAcdzVfwzjp6n
|
|
31
|
-
5qf8m4O8my4lnJieom0GrWSHQoPY1Yur4hEoZbugKO9DWZL3dTiGcrgw0TbQ6Gtq
|
|
32
|
-
TTPatW3LA21qFJwvohSvLqPdmZuM+H9g49sdl2kNTDVI6iUyMYuNpL14aPKPGBFo
|
|
33
|
-
o7UjciT1h7JtJl9b/fXrbPeRHBwpZXWeipiPGv/OZW5KnOsNlUkTquS7Zj4ETkIC
|
|
34
|
-
6mVtmsLvq+YwFthFyMU37pXwYxcmqRmH6lX+XC6AVW5oO4GBmG+Zr/Z+h5Cih5ca
|
|
35
|
-
/mX88RkO+dGTjw1IdxKmxOqKL62OBATKrTDJ/scsmRptynA4TunYW+7ikOpDbPfL
|
|
36
|
-
l18aleLISlcgWJg/Czf2nmBqAClPLnhV8qxWsvt58MQQ/Jpoggvpl8EG1PylWiBS
|
|
37
|
-
Kc/4Ad/FKQFpTzXUgDg2kV07npVjYbBzA5p4ZSWSlflFu93jb9gg2+qtnRSImVCZ
|
|
38
|
-
nQjZdsv8hebElPAIbtJjSnoH1Kz2ucYLakdF1UMKnpp1PVREtuKPz/foU9KUHs0z
|
|
39
|
-
dWRALx8cWG4uKK9AIEUlVdGKfX0Wj0qFK0KGxl3f3jObud5Agwue2EPKWwUzEGUh
|
|
40
|
-
Iqp60gNw3vBdKHw4dh1bfcbXWnRDL+OQPuOFZeMWgu1QmeHeuggYtYtRg7V5Kg==
|
|
41
|
-
-----END CERTIFICATE-----
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIGADCCA+igAwIBAgIIHIF9ta6cW3YwDQYJKoZIhvcNAQENBQAwgZwxCzAJBgNV
|
|
3
|
-
BAYTAlVTMQswCQYDVQQIEwJDQTESMBAGA1UEBxMJUGFsbyBBbHRvMR8wHQYDVQQK
|
|
4
|
-
ExZUaW5mb2lsIFNlY3VyaXR5LCBJbmMuMR8wHQYDVQQDExZUaW5mb2lsIFNlY3Vy
|
|
5
|
-
aXR5LCBJbmMuMSowKAYJKoZIhvcNAQkBFhtzdXBwb3J0QHRpbmZvaWxzZWN1cml0
|
|
6
|
-
eS5jb20wHhcNMjIwMzIyMjI1MzAwWhcNMjUwOTA5MTgyMjAwWjCBiDELMAkGA1UE
|
|
7
|
-
BhMCVVMxCzAJBgNVBAgTAkNBMR8wHQYDVQQKExZUaW5mb2lsIFNlY3VyaXR5LCBJ
|
|
8
|
-
bmMuMR0wGwYDVQQDExR0aW5mb2lsc2VjdXJpdHktZ2VtczEsMCoGCSqGSIb3DQEJ
|
|
9
|
-
ARYdZW5naW5lZXJzQHRpbmZvaWxzZWN1cml0eS5jb20wggIiMA0GCSqGSIb3DQEB
|
|
10
|
-
AQUAA4ICDwAwggIKAoICAQDNJYNH8D+8lACLt3KzjEIPs3XVBCPaMm2eD/Xk9OOT
|
|
11
|
-
uDV/NqgMK0icD9MRxMUtS3SCrC9QcPocXT76f2LQ3yVJuK+rBUasymEES47PIx2c
|
|
12
|
-
zC4n4Hga0xPPuBpioO26oaRFsobyzh9RPOIbnYfpjyqtdrbm+YyM3sPR4XzFirv9
|
|
13
|
-
xomT4E9T4RCLgOQHTcLKL9K9m+EN7PeVdVUXV0Pa7cVs2vJUKedsd7vnr6Lzbn8T
|
|
14
|
-
oPk/7J/4W931PbaeI5yg9ZuaRa9K2IaY1TkPI67NW4qKitBVepRlXw6Sb7TYcUnc
|
|
15
|
-
WEQ/eC5CpnOmqUrG5tfGD8cc5aGZOkitW/VXZgVj81xgCv1hk4HjErrqq4FBNAaC
|
|
16
|
-
SNyBfwR0TUYqg1lN1nbNjOKwfb6YRn06R2ovcFJG0tmGhsQULCr6fW8u2TfSM+U9
|
|
17
|
-
WFSIJx2griureY7EZPwg/MgsUiWUWMFemz3GVYXWJR3dN2pW9Uqr3rkjKZbA0bst
|
|
18
|
-
GWahJO9HuFdDakQxoaTPYPtTQDC+kskkO6lKG1KLIoZ1iLZzB1Ks1vEeyE7lp1im
|
|
19
|
-
WgpUq+q23PFkt1gIBi/4tGvzsLZye25QU2Y+XLzldCNm+DyRFXZ+Q+bK33IveUeU
|
|
20
|
-
WEOv4T1qTXHAOypyzmgodVRG/PrlsSMOBfE515kG1mDMGjRcCpEtlskgxUbf7qM7
|
|
21
|
-
hQIDAQABo1gwVjAJBgNVHRMEAjAAMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHBzOi8v
|
|
22
|
-
d3d3LnRpbmZvaWxzZWN1cml0eS5jb20vc2VjdXJpdHkvcmV2b2NhdGlvbl9saXN0
|
|
23
|
-
MA0GCSqGSIb3DQEBDQUAA4ICAQAiYF/m2ny/mxFvBVxHfdYuzybhCvsEUd+TSnoe
|
|
24
|
-
mqOWntY3sxCOaY0aGOMB4vyg9G+oP/kT4m63sD4uQxeuU7WOjaG2smCSS5q+PSWS
|
|
25
|
-
v63gILqPamjSyP/Om864EA6YlvVQ7nPXhVDEaiBt3iliefJGmb0wWSbbDCmq3aMb
|
|
26
|
-
WTLuax/IeY6MjJi20LutIcuz+VX8OxlA1hSpgAToMz3xrhA8fPt5UkKhkDkPFYBF
|
|
27
|
-
5htKVipyijChWsXyt33YM2qGaavTEXzxza1I99PGNRKxUMvbSMas4YaLqkBpQSc+
|
|
28
|
-
mcrLWYPiXWsePGu+j08AypE2Ubp4AOSZJN9rBBGotC3gofipo+K/sBiOM9xXI76Q
|
|
29
|
-
0HYOxXPa7D7UQQG1R9i0rcxmf9qepIVYCldmqVkKKDizcDo5UI9lRiLFjDyQhn6l
|
|
30
|
-
YFY9bPQ4lKTK5Jr3M6+dV7fHxLhqXyMGs1905IUb7qvB7Bq/f0qJfC0JZuY/qdn2
|
|
31
|
-
lL0SeFKOVsjErtobh3u8p8j2USkc8uJgIANHpXEMEExdp899CV/eVjh3TpAR7E6T
|
|
32
|
-
mg7Q9Hi6Hh8z+Le9iR4I49vPEWDQEvj35IT6VfwU79UfIOlX+DkW8fFkPbaut3Se
|
|
33
|
-
vqIDv6JBG9I16h/HhchntKfM58MI1bNZFBSdZqYOJiL8JIjP8HNIk76Y366ppG29
|
|
34
|
-
EhBYYg==
|
|
35
|
-
-----END CERTIFICATE-----
|
data/gemfiles/rails_5.1.gemfile
DELETED
data/gemfiles/rails_5.2.gemfile
DELETED
data/gemfiles/rails_6.0.gemfile
DELETED
data/gemfiles/rails_6.1.gemfile
DELETED
data.tar.gz.sig
DELETED
|
Binary file
|
metadata.gz.sig
DELETED
|
Binary file
|