Module: TwoStep::BackupCodes
Constant Summary collapse
- CHARSET =
(("A".."Z").to_a + ("2".."9").to_a - %w[I L O]).freeze
- SEGMENT_COUNT =
5 segments (15 chars total) to provide ~74 bits of entropy.
5- SEGMENT_LENGTH =
3
Instance Method Summary collapse
- #generate(count: TwoStep.configuration.backup_code_count) ⇒ Object
- #generate_one ⇒ Object
- #normalize(code) ⇒ Object
Instance Method Details
#generate(count: TwoStep.configuration.backup_code_count) ⇒ Object
19 20 21 |
# File 'lib/two_step/backup_codes.rb', line 19 def generate(count: TwoStep.configuration.backup_code_count) Array.new(count) { generate_one } end |
#generate_one ⇒ Object
15 16 17 |
# File 'lib/two_step/backup_codes.rb', line 15 def generate_one SEGMENT_COUNT.times.map { random_segment }.join("-") end |
#normalize(code) ⇒ Object
23 24 25 |
# File 'lib/two_step/backup_codes.rb', line 23 def normalize(code) code.to_s.strip.upcase.gsub(/[^A-Z2-9]/, "") end |