---
name: "fido_bio_enroll_remaining_samples"
section: "3"
platform: "linux"
package: "libfido2"
version: "1.17.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/fido_bio_enroll_new"
---

# fido\_bio\_enroll\_remaining\_samples(3)

FIDO2 biometric enrollment API

Part of [fido\_bio\_enroll\_new(3)](/fido_bio_enroll_new/3.md).

## NAME

**fido\_bio\_enroll\_new**, **fido\_bio\_enroll\_free**, **fido\_bio\_enroll\_last\_status**, **fido\_bio\_enroll\_remaining\_samples** – FIDO2 biometric enrollment API

## SYNOPSIS

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

**#include \<fido/bio.h\>**

```
#define FIDO_BIO_ENROLL_FP_GOOD				0x00
#define FIDO_BIO_ENROLL_FP_TOO_HIGH			0x01
#define FIDO_BIO_ENROLL_FP_TOO_LOW			0x02
#define FIDO_BIO_ENROLL_FP_TOO_LEFT			0x03
#define FIDO_BIO_ENROLL_FP_TOO_RIGHT			0x04
#define FIDO_BIO_ENROLL_FP_TOO_FAST			0x05
#define FIDO_BIO_ENROLL_FP_TOO_SLOW			0x06
#define FIDO_BIO_ENROLL_FP_POOR_QUALITY			0x07
#define FIDO_BIO_ENROLL_FP_TOO_SKEWED			0x08
#define FIDO_BIO_ENROLL_FP_TOO_SHORT			0x09
#define FIDO_BIO_ENROLL_FP_MERGE_FAILURE		0x0a
#define FIDO_BIO_ENROLL_FP_EXISTS			0x0b
#define FIDO_BIO_ENROLL_FP_DATABASE_FULL		0x0c
#define FIDO_BIO_ENROLL_NO_USER_ACTIVITY		0x0d
#define FIDO_BIO_ENROLL_NO_USER_PRESENCE_TRANSITION	0x0e
```

*fido\_bio\_enroll\_t* *\**\

**fido\_bio\_enroll\_new**(*void*);

*void*\

**fido\_bio\_enroll\_free**(*fido\_bio\_enroll\_t \*\*enroll\_p*);

*uint8\_t*\

**fido\_bio\_enroll\_last\_status**(*const fido\_bio\_enroll\_t \*enroll*);

*uint8\_t*\

**fido\_bio\_enroll\_remaining\_samples**(*const fido\_bio\_enroll\_t \*enroll*);

## DESCRIPTION

Ongoing FIDO2 biometric enrollments are abstracted in *libfido2* by the *fido\_bio\_enroll\_t* type.

The functions described in this page allow a *fido\_bio\_enroll\_t* type to be allocated, deallocated, and inspected. For device operations on *fido\_bio\_enroll\_t*, please refer to [fido\_bio\_dev\_get\_info(3)](/fido_bio_dev_get_info/3.md).

The **fido\_bio\_enroll\_new**() function returns a pointer to a newly allocated, empty *fido\_bio\_enroll\_t* type. If memory cannot be allocated, NULL is returned.

The **fido\_bio\_enroll\_free**() function releases the memory backing *\*enroll\_p*, where *\*enroll\_p* must have been previously allocated by **fido\_bio\_enroll\_new**(). On return, *\*enroll\_p* is set to NULL. Either *enroll\_p* or *\*enroll\_p* may be NULL, in which case **fido\_bio\_enroll\_free**() is a NOP.

The **fido\_bio\_enroll\_last\_status**() function returns the enrollment status of *enroll*.

The **fido\_bio\_enroll\_remaining\_samples**() function returns the number of samples left for *enroll* to complete.

## SEE ALSO

[fido\_bio\_dev\_get\_info(3)](/fido_bio_dev_get_info/3.md), [fido\_bio\_template(3)](/fido_bio_template/3.md)
