FIDO\_BIO\_TEMPLATE(3) Library Functions Manual FIDO\_BIO\_TEMPLATE(3)

# [NAME](#NAME)

`fido_bio_template`, `fido_bio_template_array_count`, `fido_bio_template_array_free`, `fido_bio_template_array_new`, `fido_bio_template_free`, `fido_bio_template_id_len`, `fido_bio_template_id_ptr`, `fido_bio_template_name`, `fido_bio_template_new`, `fido_bio_template_set_id`, `fido_bio_template_set_name` — FIDO2 biometric template API

# [SYNOPSIS](#SYNOPSIS)

`#include <fido.h>`  
`#include <fido/bio.h>`

`fido_bio_template_t *`  
`fido_bio_template_new`(`void`);

`void`  
`fido_bio_template_free`(`fido_bio_template_t **template_p`);

`const char *`  
`fido_bio_template_name`(`const fido_bio_template_t *template`);

`const unsigned char *`  
`fido_bio_template_id_ptr`(`const fido_bio_template_t *template`);

`size_t`  
`fido_bio_template_id_len`(`const fido_bio_template_t *template`);

`int`  
`fido_bio_template_set_id`(`fido_bio_template_t *template`, `const unsigned char *ptr`, `size_t len`);

`int`  
`fido_bio_template_set_name`(`fido_bio_template_t *template`, `const char *name`);

`fido_bio_template_array_t *`  
`fido_bio_template_array_new`(`void`);

`void`  
`fido_bio_template_array_free`(`fido_bio_template_array_t **array_p`);

`size_t`  
`fido_bio_template_array_count`(`const fido_bio_template_array_t *array`);

`const fido_bio_template_t *`  
`fido_bio_template`(`const fido_bio_template_array_t *array`, `size_t idx`);

# [DESCRIPTION](#DESCRIPTION)

Existing FIDO2 biometric enrollments are abstracted in [*libfido2*](#libfido2) by the `fido_bio_template_t` and `fido_bio_template_array_t` types.

The functions described in this page allow a `fido_bio_template_t` type to be allocated, deallocated, changed, and inspected, and a `fido_bio_template_array_t` type to be allocated, deallocated, and inspected. For device operations on `fido_bio_template_t` and `fido_bio_template_array_t`, please refer to [fido\_bio\_dev\_get\_info(3)](/man/os/libfido2/fido_bio_dev_get_info.3).

The [`fido_bio_template_new`](#fido_bio_template_new)() function returns a pointer to a newly allocated, empty `fido_bio_template_t` type. If memory cannot be allocated, NULL is returned.

The [`fido_bio_template_free`](#fido_bio_template_free)() function releases the memory backing `*template_p`, where `*template_p` must have been previously allocated by `fido_bio_template_new`(). On return, `*template_p` is set to NULL. Either `template_p` or `*template_p` may be NULL, in which case `fido_bio_template_free`() is a NOP.

The [`fido_bio_template_name`](#fido_bio_template_name)() function returns a pointer to a NUL-terminated string containing the friendly name of `template`, or NULL if `template` does not have a friendly name set.

The [`fido_bio_template_id_ptr`](#fido_bio_template_id_ptr)() function returns a pointer to the template id of `template`, or NULL if `template` does not have an id. The corresponding length can be obtained by [`fido_bio_template_id_len`](#fido_bio_template_id_len)().

The [`fido_bio_template_set_name`](#fido_bio_template_set_name)() function sets the friendly name of `template` to `name`. If `name` is NULL, the friendly name of `template` is unset.

The [`fido_bio_template_array_new`](#fido_bio_template_array_new)() function returns a pointer to a newly allocated, empty `fido_bio_template_array_t` type. If memory cannot be allocated, NULL is returned.

The [`fido_bio_template_array_free`](#fido_bio_template_array_free)() function releases the memory backing `*array_p`, where `*array_p` must have been previously allocated by `fido_bio_template_array_new`(). On return, `*array_p` is set to NULL. Either `array_p` or `*array_p` may be NULL, in which case `fido_bio_template_array_free`() is a NOP.

The [`fido_bio_template_array_count`](#fido_bio_template_array_count)() function returns the number of templates in `array`.

The [`fido_bio_template`](#fido_bio_template)() function returns a pointer to the template at index `idx` in `array`. Please note that the first template in `array` has an `idx` (index) value of 0.

# [RETURN VALUES](#RETURN_VALUES)

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

# [SEE ALSO](#SEE_ALSO)

[fido\_bio\_dev\_get\_info(3)](/man/os/libfido2/fido_bio_dev_get_info.3), [fido\_bio\_enroll\_new(3)](/man/os/libfido2/fido_bio_enroll_new.3)

September 13, 2019 Linux 4.19.0-gvisor

---

Document: fido_bio_template_new(3) from libfido2 1.17.0-r5 (Chainguard OS)
Source: https://github.com/Yubico/libfido2
