FIDO_DEV_SET_PIN(3) | Library Functions Manual | FIDO_DEV_SET_PIN(3)

# NAME

`fido_dev_set_pin`, `fido_dev_get_retry_count`, `fido_dev_get_uv_retry_count`, `fido_dev_reset` — FIDO2 device management functions

# SYNOPSIS

library “libfido2” libcbor libcrypto libz
`#include <fido.h>`

int
`fido_dev_set_pin`(fido_dev_t *dev, const char *pin, const char *oldpin);

int
`fido_dev_get_retry_count`(fido_dev_t *dev, int *retries);

int
`fido_dev_get_uv_retry_count`(fido_dev_t *dev, int *retries);

int
`fido_dev_reset`(fido_dev_t *dev);

# DESCRIPTION

The `fido_dev_set_pin`() function sets the PIN of device dev to pin, where pin is a NUL-terminated UTF-8 string. If oldpin is not NULL, the device's PIN is changed from oldpin to pin, where pin and oldpin are NUL-terminated UTF-8 strings.

The `fido_dev_get_retry_count`() function fills retries with the number of PIN retries left in dev before lock-out, where retries is an addressable pointer.

The `fido_dev_get_uv_retry_count`() function fills retries with the number of built-in UV retries left in dev before built-in UV is disabled, where retries is an addressable pointer.

The `fido_dev_reset`() function performs a reset on dev, resetting the device's PIN and erasing credentials stored on the device.

Please note that `fido_dev_set_pin`(), `fido_dev_get_retry_count`(), `fido_dev_get_uv_retry_count`(), and `fido_dev_reset`() are synchronous and will block if necessary.

# RETURN VALUES

The error codes returned by `fido_dev_set_pin`(), `fido_dev_get_retry_count`(), `fido_dev_get_uv_retry_count`(), and `fido_dev_reset`() are defined in `<fido/err.h>`. On success, `FIDO_OK` is returned.

# CAVEATS

Regarding `fido_dev_reset`(), the actual user-flow to perform a reset is outside the scope of the FIDO2 specification, and may therefore vary depending on the authenticator. Yubico authenticators will return `FIDO_ERR_NOT_ALLOWED` if a reset is issued later than 5 seconds after power-up, and `FIDO_ERR_ACTION_TIMEOUT` if the user fails to confirm the reset by touching the key within 30 seconds.

July 9, 2025 | Debian