Module: TwoStep::BackupCodes

Extended by:
BackupCodes
Included in:
BackupCodes
Defined in:
lib/two_step/backup_codes.rb

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

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_oneObject



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