github phucvinh57/biopass 1.5.0

3 hours ago

Highlights

  • Keyring unlock after biometric login. Save your login password once in the app; it is checked against /etc/shadow, sealed with the TPM, and used to unlock GNOME Keyring / KWallet after a face or fingerprint login on the login screen. Opt-in via the PAM authtok option. See docs/Keyring.md. (#241, refs #87)
  • Camera profiles with stable paths. Cameras are saved as /dev/v4l/by-id / by-path links instead of /dev/videoN, and you can define an ordered list of {camera, IR camera} profiles — the first one present is used, so docking/undocking no longer breaks face unlock. Cameras are labelled by USB interface, maker and port. (#240, closes #177)
  • More cameras supported.
    • Direct V4L2 fallback for devices libcamera does not list (custom DKMS drivers like gc2607, v4l2loopback). (#237, closes #142)
    • NV12 / NV21 / YUV420 decoding, and the IR sensor can be used as the main camera. (#236, closes #109)
    • SoftISP cameras (IPU6/MIPI) via packed RGB and the simple pipeline. (#185, #169)
  • PAM prompts: scanner-active prompt and a covered-camera message. (#184, #82)

Security & reliability

  • PAM: the helper runs under a fixed deadline below the PAM timeout and is killed through a pidfd if stuck; fails closed on argument or auth errors; exits PAM_IGNORE when no method could run. (#202, #203, #207)
  • The helper reads config, models and enrolled faces, and writes logs and debug images, as the user, not root. (#196, #200)
  • Config is parsed atomically and validated; out-of-range retry, delay, timeout and threshold values are clamped or rejected. (#204, #205)
  • Fingerprint: bounded fprintd calls, VerifyStatus pinned to fprintd's unique name, no C++ exceptions across FFI. (#201, #211)
  • Face/camera: bounds-checked image and MJPEG sizes, safer libcamera buffer handling, fail closed on invalid anti-spoof output. (#198, #206, #208)
  • App: strict CSP, webview permission requests denied, HTTPS-only and hash-pinned model downloads, private data directory. (#209, #212, #213)
  • ONNX Runtime telemetry disabled.

Improvements

  • Camera prefers MJPEG, caps RGB size, picks the brightest of N IR frames. (#183, #168, #116)
  • MiniFASv2 gets the context crop it was trained on; AI anti-spoofing is off by default. (#186, #182)
  • The colour camera and anti-spoofing model are opened once per auth session. (#225)
  • Face preview runs off the main thread and starts/stops once per state. (#210, #214)
  • Bundled libcamera no longer links libcrypto/gnutls. (#181, #176)

Packaging

  • Bundled libraries are found through RUNPATH instead of ld.so.conf.d. (#226)
  • The PAM profile is refreshed on deb upgrade and removed from common-auth on uninstall. (#226, #228)
  • Dropped curl from deb depends.

Internal

  • Config types and Tauri bindings generated from Rust with specta. (#227)
  • Large refactors of face auth, camera capture and app settings; new C++ (ctest), Rust and TS (bun test) unit tests. (#195, #215–#219, #223, #224, #229)
  • Dependency updates. (#234)

Full Changelog: 1.4.2...1.5.0

Don't miss a new biopass release

NewReleases is sending notifications on new releases.