Class: ROTP::HOTP

Inherits:
OTP
  • Object
show all
Defined in:
lib/rotp/hotp.rb

Instance Attribute Summary

Attributes inherited from OTP

#digest, #digits, #secret

Instance Method Summary collapse

Methods inherited from OTP

#generate_otp, #initialize

Constructor Details

This class inherits a constructor from ROTP::OTP

Instance Method Details

#at(count, padding = true) ⇒ Object

Generates the OTP for the given count



7
8
9
# File 'lib/rotp/hotp.rb', line 7

def at(count, padding=true)
  generate_otp(count, padding)
end

#provisioning_uri(name, initial_count = 0) ⇒ String

Returns the provisioning URI for the OTP This can then be encoded in a QR Code and used to provision the Google Authenticator app



40
41
42
# File 'lib/rotp/hotp.rb', line 40

def provisioning_uri(name, initial_count=0)
  encode_params("otpauth://hotp/#{URI.encode(name)}", :secret=>secret, :counter=>initial_count)
end

#verify(otp, counter) ⇒ Object

Verifies the OTP passed in against the current time OTP



14
15
16
# File 'lib/rotp/hotp.rb', line 14

def verify(otp, counter)
  super(otp, self.at(counter))
end

#verify_with_retries(otp, initial_count, retries = 1) ⇒ Object

Verifies the OTP passed in against the current time OTP, with a given number of retries. Returns the counter that was verified successfully



23
24
25
26
27
28
29
30
31
32
# File 'lib/rotp/hotp.rb', line 23

def verify_with_retries(otp, initial_count, retries = 1)
  return false if retries <= 0

  1.upto(retries) do |counter|
    current_counter = initial_count + counter
    return current_counter if verify(otp, current_counter)
  end

  false
end