class ROTP::TOTP
def verify(otp, drift_ahead: 0, drift_behind: 0, after: nil, at: Time.now)
-
(Integer, nil)
- the last successful timestamp
Parameters:
-
at
(Time
) -- time at which to generate and verify a particular -
after
(Integer
) -- prevent token reuse, last login timestamp -
drift_ahead
(Integer
) -- how many seconds to look ahead -
drift_behind
(Integer
) -- how many seconds to look back -
otp
(String
) -- the one time password to verify
def verify(otp, drift_ahead: 0, drift_behind: 0, after: nil, at: Time.now) timecodes = get_timecodes(at, drift_behind, drift_ahead) timecodes = timecodes.select { |t| t > timecode(after) } if after result = nil timecodes.each do |t| result = t * interval if super(otp, generate_otp(t)) end result end