oath_hotp_generate(3)

oath_hotp_generate3

Api function

Usage

#include <oath.h>

int oath_hotp_generate(const char * secret, size_t secret_length, uint64_t moving_factor, unsigned digits, bool add_checksum, size_t truncation_offset, char * output_otp);

Arguments

const char * secret

the shared secret string

size_t secret_length

length of secret

uint64_t moving_factor

a counter indicating the current OTP to generate

unsigned digits

number of requested digits in the OTP, excluding checksum

bool add_checksum

whether to add a checksum digit or not

size_t truncation_offset

use a specific truncation offset

char * output_otp

output buffer, must have room for the output OTP plus zero

Overview

Generate a one-time-password using the HOTP algorithm as described in RFC 4226.

Use a value of OATH_HOTP_DYNAMIC_TRUNCATION for truncation_offset unless you really need a specific truncation offset.

To find out the size of the OTP you may use the OATH_HOTP_LENGTH() macro. The output_otp buffer must be have room for that length plus one for the terminating NUL.

Currently only values 6, 7 and 8 for digits are supported, and the add_checksum value is ignored. These restrictions may be lifted in future versions, although some limitations are inherent in the protocol.

Returns

On success, OATH_OK (zero) is returned, otherwise an error code is returned.

Releases

4 releases since Debian 11 (Bullseye); the text changed 3 times.

  1. 11
  2. 12
  3. 13
  4. Arch

Reporting bugs

Report bugs to <[email protected]>. liboath home page: https://oath-toolkit.codeberg.page/ General help using GNU software: http://www.gnu.org/gethelp/

From oath-toolkit 2.6.15-1 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.