Fix valid_totp to support upper bound on check_candidate #20
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #18. The logic of
pot: valid_totp/2,3
incorrectly fails to evaluate the highest candidate when thewindow
is set to a value greater than0
. This is because the logic ofpot:check_candidate/5
short-circuits onCurrent == Last
rather thanCurrent > Last
, which is what would be needed for it to work as expected.This change alters
pot:check_candidate/5
to break onCurrent > Last
, and updates the unit tests accordingly. Note that, becausepot:valid_hotp/2,3
also usepot:check_candidate/5
, this change extends by 1 the number of candidate trials that it will check when evaluating a hotp Token. This appears to also be a bug fix, because if you settrials
to1
, previously the next valid hotp Token would be rejected.Unit tests have been added to cover the cases described above.