libfprint is an open source library to provide access to fingerprint scanning devices. For more info, see the libfprint project homepage.

This documentation is aimed at application developers who wish to integrate fingerprint-related functionality into their software. libfprint has been designed so that you only have to do this once – by integrating your software with libfprint, you'll be supporting all the fingerprint readers that we have got our hands on. As such, the API is rather general (and therefore hopefully easy to comprehend!), and does its best to hide the technical details that required to operate the hardware.

This documentation is not aimed at developers wishing to develop and contribute fingerprint device drivers to libfprint.

Feedback on this API and its associated documentation is appreciated. Was anything unclear? Does anything seem unreasonably complicated? Is anything missing? Let us know on the mailing list.


Before you dive into the API, it's worth introducing a couple of concepts.

The process of enrolling a finger is where you effectively scan your finger for the purposes of teaching the system what your finger looks like. This means that you scan your fingerprint, then the system processes it and stores some data about your fingerprint to refer to later.


Verification is what most people think of when they think about fingerprint scanning. The process of verification is effectively performing a fresh fingerprint scan, and then comparing that scan to a finger that was previously enrolled.

As an example scenario, verification can be used to implement what people would picture as fingerprint login (i.e. fingerprint replaces password). For example:

  • I enroll my fingerprint through some software that trusts I am who I say I am. This is a prerequisite before I can perform fingerprint-based login for my account.
  • Some time later, I want to login to my computer. I enter my username, but instead of prompting me for a password, it asks me to scan my finger. I scan my finger.
  • The system compares the finger I just scanned to the one that was enrolled earlier. If the system decides that the fingerprints match, I am successfully logged in. Otherwise, the system informs me that I am not authorised to login as that user.


Identification is the process of comparing a freshly scanned fingerprint to a collection of previously enrolled fingerprints. For example, imagine there are 100 people in an organisation, and they all have enrolled their fingerprints. One user walks up to a fingerprint scanner and scans their finger. With no other knowledge of who that user might be, the system examines their fingerprint, looks in the database, and determines that the user is user number #61.

In other words, verification might be seen as a one-to-one fingerprint comparison where you know the identity of the user that you wish to authenticate, whereas identification is a one-to-many comparison where you do not know the identity of the user that you wish to authenticate.