protocol

otp_protocol

Protocol for HOTP and TOTP generation and verification as specified in RFC 4226 and RFC 6238.

Availability:
logtalk_load(otp(loader))
Author: Paulo Moura
Version: 1:0:0
Date: 2026-07-14
Compilation flags:
static
Dependencies:
(none)
Remarks:
(none)
Inherited public predicates:
(none)

Public predicates

hotp/5

Computes an HOTP value for the given hash object, secret, moving counter, and number of digits. The secret can be either a raw byte list or a Base32 wrapper term of the form base32(atom(Atom)), base32(chars(Chars)), or base32(codes(Codes)).

Compilation flags:
static
Template:
hotp(Hash,Secret,Counter,Digits,OTP)
Mode and number of proofs:
hotp(+object_identifier,+term,+integer,+integer,--atom) - one

totp/5

Computes a TOTP value using the standard 30-second time step and Unix epoch T0 = 0 for the given hash object, secret, Unix time, and number of digits.

Compilation flags:
static
Template:
totp(Hash,Secret,UnixTime,Digits,OTP)
Mode and number of proofs:
totp(+object_identifier,+term,+integer,+integer,--atom) - one

hotp_verify/7

Verifies an HOTP value by searching from the given counter through the bounded forward counter window. Returns the matched counter on success.

Compilation flags:
static
Template:
hotp_verify(Hash,Secret,Counter,Window,Digits,OTP,MatchedCounter)
Mode and number of proofs:
hotp_verify(+object_identifier,+term,+integer,+integer,+integer,+atom,--integer) - zero_or_one_or_error

totp_verify/7

Verifies a TOTP value by searching within the bounded symmetric time-step window around the current time step. Returns the matched time step on success.

Compilation flags:
static
Template:
totp_verify(Hash,Secret,UnixTime,Window,Digits,OTP,MatchedTimeStep)
Mode and number of proofs:
totp_verify(+object_identifier,+term,+integer,+integer,+integer,+atom,--integer) - zero_or_one_or_error

Protected predicates

(none)

Private predicates

(none)

Operators

(none)

See also

hmac_protocol