Remove ~400KB of compiled-in .inc blob files and replace with a runtime data loader that reads HMAC-SHA256 verified .bin files from disk at device open time. New components: - validity_data.h/c: Runtime data file loader with HMAC-SHA256 integrity verification. Searches /usr/share/libfprint/validity/ and /usr/local/share/libfprint/validity/ for per-device and common data files. Skipped entirely in emulation mode. Changes to existing code: - validity.c: New OPEN_LOAD_DATA SSM state loads device and common data files between firmware info reception and init sequence. Populates TLS key pointers from loaded data. Frees data stores on close. - validity_hal.h/c: Simplified device_table to vid/pid/flash_layout only (all blob pointers and partition_sig removed from structs). - validity_pair.c/h: Updated make_cert, build_partition_flash_cmd, build_tls_flash to take data parameters instead of using compiled-in arrays. Reset/DBE blob accessors use data store. - validity_tls.c/h: Removed 4 static key arrays, added pointer fields to ValidityTlsState populated from loaded data. - validity_db.c/h, validity_fwext.c/h: Updated get_write_enable_blob to take FpiDeviceValidity* and access data store. - validity_enroll.c: Updated all 5 callers for new signatures. Deleted files: - validity_blobs_0090.inc, validity_blobs_0097.inc, validity_blobs_009a.inc, validity_blobs_009d.inc (~400KB) - validity_pair_constants.inc (~6KB) Tests (171 total, all passing): - 15 data loader tests covering: empty store, double-free safety, valid/corrupt/too-small/nonexistent file loading, tag enum, load_device with missing dir/missing mandatory file/valid files/ corrupt HMAC, load_common with missing/valid files, enroll db_write_enable accessor with empty and populated stores. - All existing unit and integration tests updated and passing. The data files are distributed separately via the libfprint-validity-data package. |
||
|---|---|---|
| .ci | ||
| .gitlab-ci | ||
| data | ||
| demo | ||
| doc | ||
| examples | ||
| libfprint | ||
| scripts | ||
| tests | ||
| .git-blame-ignore-revs | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| AUTHORS | ||
| code-of-conduct.md | ||
| COPYING | ||
| gcovr.cfg | ||
| HACKING.md | ||
| INSTALL | ||
| MAINTAINERS | ||
| meson.build | ||
| meson_options.txt | ||
| NEWS | ||
| README.md | ||
| THANKS | ||
History
LibFPrint was originally developed as part of an academic project at the University Of Manchester.
It aimed to hide the differences between consumer fingerprint scanners and provide a single uniform API to application developers.
Goal
The ultimate goal of the FPrint project is to make fingerprint scanners widely and easily usable under common Linux environments.
License
Section 6 of the license states that for compiled works that use
this library, such works must include LibFPrint copyright notices
alongside the copyright notices for the other parts of the work.
LibFPrint includes code from NIST's NBIS software distribution.
We include Bozorth3 from the US Export Controlled distribution, which we have determined to be fine being shipped in an open source project.
Get in touch
- IRC -
#fprint@irc.oftc.net - Matrix -
#fprint:matrix.orgbridged to the IRC channel - MailingList - low traffic, not much used these days