Skip to content

Add Kensington VeriMark (06cb:0088) driver - #63

Open
visorcraft wants to merge 1 commit into
3v1n0:vfs0090from
visorcraft:add-validity-0088
Open

Add Kensington VeriMark (06cb:0088) driver#63
visorcraft wants to merge 1 commit into
3v1n0:vfs0090from
visorcraft:add-validity-0088

Conversation

@visorcraft

Copy link
Copy Markdown

Summary

  • Bundles a working libfprint driver for the Kensington VeriMark (06cb:0088) — a pre-Prometheus Synaptics/Validity chip — alongside this fork's existing vfs0090 driver.
  • New source at libfprint/drivers/validity-0088/ (12 files, ~12k lines).
  • Meson wiring: driver branch added to libfprint/meson.build, openssl dep + driver entry added to root meson.build.
  • README updated to advertise the additional driver.

Why this fork

This driver, like vfs0090, isn't (yet) in mainline libfprint. Users who already build from this fork to get vfs0090 can now also get VeriMark support from one tree.

What the driver does

  • Modified TLS 1.2 over USB bulk transfers (Synaptics protocol variant for the pre-Prometheus chip — different from 06cb:009a).
  • Auto-pairs with the device on first plug-in — no Windows extraction or external tooling required. Generates a fresh EC P-256 host keypair, signs a CSR with the family-wide hs_key, sends it via the device's pre-TLS opcode 0x4f, persists the device-signed cert + keypair + device ECDH pubkey to ~/.local/share/libfprint/verimark-06cb-0088/ (or $STATE_DIRECTORY/validity-0088-pairing/ under fprintd).
  • Covers enroll, verify, and PAM / login integration end-to-end on Linux.

Driver source is maintained at Kensington_VeriMark_06cb-0088; this PR mirrors it into the fork.

API compatibility

The driver is written against libfprint ≥ 1.92 (fpi_device_report_finger_status, fpi_device_class_auto_initialize_features, FPI_IMAGE_NONE, FP_FINGER_STATUS_*). This fork is on 1.90.x, so a small compat shim block at the top of validity.c (gated on -DVALIDITY_BACKPORT_LIBFPRINT, set automatically from libfprint/meson.build when this driver is built) stubs those out as no-ops. The driver still functions on 1.90.x; only the rich "place finger" / "lift finger" UI hints are silenced. When this fork rebases onto 1.92+, the compat flag can simply be dropped from the meson entry.

Build

meson setup builddir -Ddrivers=validity_0088
meson compile -C builddir

(Or -Ddrivers=vfs0090,validity_0088 for both.) The meson key MUST be validity_0088 (underscore) — libfprint's meson pastes the key directly into a generated C identifier and a hyphen produces invalid C. File paths use validity-0088.

Test plan

  • Configure + compile clean against this fork's vfs0090 branch with -Ddrivers=validity_0088
  • nm libfprint-2.so.2.0.0 | grep fpi_device_validity_0088_get_type returns the driver entrypoint
  • End-to-end live-tested against a real Kensington VeriMark (fprintd-enrollsudo with fingerprint → root) on the upstream driver repo's identical source against libfprint 1.94.x; only the compat shims are new in this PR.

Closes #21.

Bundles the FLOSS libfprint driver for the Kensington VeriMark
(06cb:0088) - a pre-Prometheus Synaptics/Validity chip - alongside
this fork's existing vfs0090 driver. Covers enroll, verify, and
PAM/login integration. Auto-pairs with the device on first plug-in
(no Windows extraction required).

Driver source mirrored from
https://github.com/visorcraft/Kensington_VeriMark_06cb-0088 at
libfprint/drivers/validity-0088/.

The driver is maintained against libfprint >= 1.92; this fork is on
1.90.x, so a small compat shim block at the top of validity.c
(gated on -DVALIDITY_BACKPORT_LIBFPRINT) stubs out the modern
finger-status reporting and auto-initialize-features APIs that
1.90.x lacks. The driver still functions; only the rich
'place finger' / 'lift finger' UI hints become no-ops.

Build:
    meson setup builddir -Ddrivers=validity_0088
    meson compile -C builddir

The meson key MUST be 'validity_0088' (underscore) - libfprint's
meson pastes the key directly into a generated C identifier and a
hyphen produces invalid C. File paths remain 'validity-0088'.

Closes 3v1n0#21.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Does this work with 0088? Match on Host device?

1 participant