---
name: "oath_totp_validate"
section: "3"
platform: "linux"
package: "oath-toolkit"
version: "2.6.15-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/oath_totp_validate"
---

# oath\_totp\_validate(3)

API function

## NAME

oath\_totp\_validate - API function

## SYNOPSIS

**#include \<oath.h\>**

**int oath\_totp\_validate(const char \*** *secret***, size\_t** *secret\_length***, time\_t** *now***, unsigned** *time\_step\_size***, time\_t** *start\_offset***, size\_t** *window***, const char \*** *otp***);**

## ARGUMENTS

- const char \* secret

  the shared secret string

- size\_t secret\_length

  length of *secret*

- time\_t now

  Unix time value to validate TOTP for

- unsigned time\_step\_size

  time step system parameter (typically 30)

- time\_t start\_offset

  Unix time of when to start counting time steps (typically 0)

- size\_t window

  how many OTPs after/before start OTP to test

- const char \* otp

  the OTP to validate.

## DESCRIPTION

Validate an OTP according to OATH TOTP algorithm per RFC 6238.

Currently only OTP lengths of 6, 7 or 8 digits are supported.  This restrictions may be lifted in future versions, although some limitations are inherent in the protocol.

## RETURNS

Returns absolute value of position in OTP window (zero is first position), or **OATH\_INVALID\_OTP** if no OTP was found in OTP window, or an error code.

## SINCE

1\.6.0

## REPORTING BUGS

Report bugs to \<oath-toolkit-help@nongnu.org\>. liboath home page: https://oath-toolkit.codeberg.page/ General help using GNU software: http://www.gnu.org/gethelp/

## COPYRIGHT

Copyright © 2009-2026 Simon Josefsson.\
 Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.
