Class: ROTP::HOTP
Constant Summary
Constants inherited from OTP
Instance Attribute Summary
Attributes inherited from OTP
Instance Method Summary collapse
-
#at(count, padding = true) ⇒ Object
Generates the OTP for the given count.
-
#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.
-
#verify(otp, counter) ⇒ Object
Verifies the OTP passed in against the current time OTP.
-
#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.
Methods inherited from OTP
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 43 44 45 46 47 |
# File 'lib/rotp/hotp.rb', line 40 def provisioning_uri(name, initial_count=0) params = { secret: secret, counter: initial_count, digits: digits == DEFAULT_DIGITS ? nil : digits } encode_params("otpauth://hotp/#{URI.encode(name)}", params) 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 |