libfprint issueshttps://gitlab.freedesktop.org/groups/libfprint/-/issues2021-04-19T15:59:35Zhttps://gitlab.freedesktop.org/libfprint/fprintd/-/issues/95fprintd allows enrolling a print even if one already exist2021-04-19T15:59:35ZBenjamin Bergfprintd allows enrolling a print even if one already existWhich will then discard the old print without deleting it from the on-device storage.Which will then discard the old print without deleting it from the on-device storage.2.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/346Devices should expose a flag if they support stay awake indefinitely (for ver...2021-08-09T14:59:53ZMarco TrevisanDevices should expose a flag if they support stay awake indefinitely (for verification)Ideally we want to be able to show a login prompt and for the whole time the greeter is shown a device will be able to unlock the system without any further user interaction (at least while the screen device is turned on, but that's an u...Ideally we want to be able to show a login prompt and for the whole time the greeter is shown a device will be able to unlock the system without any further user interaction (at least while the screen device is turned on, but that's an upper-level design decision, so ideally for the whole time).
While this is something we can give for granted for all the modern devices, there have been cases of old ones which were not able to stay in verification state for long times, and needed to be reset. Thus currently PAM module is using a timeout, stopping a device verification after that.
Given this, we need:
- [ ] libfprint device API to expose if a driver is able to stay awake (I'd default to TRUE if not set)
- Maybe should set a `maximum-active` time property, defining its timeout.
- [ ] fprintd should handle this internally (so the PAM module option will only set the higher bound) stopping a device action if it's running for more time the device supports. Emitting the relevant signal to clients.
Related to: https://gitlab.gnome.org/Teams/Design/os-mockups/-/issues/56, https://gitlab.freedesktop.org/libfprint/fprintd/-/merge_requests/89, fprintd#92.0https://gitlab.freedesktop.org/libfprint/fprintd/-/issues/85New D-Bus APIs (or API additions)2021-02-05T18:00:26ZMarco TrevisanNew D-Bus APIs (or API additions)We had some preliminary discussions with @benzea about various dbus API additions we would need, so trying to get an incomplete and to-be-updated list here (feel free to edit this comment to add whatever you think is needed).
In the dev...We had some preliminary discussions with @benzea about various dbus API additions we would need, so trying to get an incomplete and to-be-updated list here (feel free to edit this comment to add whatever you think is needed).
In the device scope:
- [ ] Add `supports-identification` property and `IdentifyFingerStart/IdentifyFingerStop` methods
- It will be used by the enroll / prints manager dialog to identify the finger so that
the user can test the enrolled fingers
- Will be used by the login screen so that can be "swipe any finger"
- [ ] ~~Add `SetPreferredFinger` for devices with no identification support~~
- ~~So that the user can select the preferred finger to be used at verification phase when there's no user interaction (i.e. at login screen)~~
- This could be just done by making the UI not accepting more than one print, and the cmd-line tools to warn
- [ ] Add `DeleteEnrolledFinger` method
- Manage prints UI [dialog design](https://gitlab.gnome.org/Teams/Design/settings-mockups/-/issues/18) should allow to remove a single print
- [ ] Add `finger-on-sensor` property:
- Enroll dialog should highlight the finger when the sensor is touched during enrollment
- [GNOME shell unlock dialog](https://gitlab.gnome.org/Teams/Design/os-mockups/-/issues/56) should highlight the fingerprint icon when user has a finger on it
- [ ] Make fingerprints to have a customized label (this was a design request, not sure fprintd should handle it)
- [x] Device `added`/`removed` signalling on hotplugging (this is somewhat already handled as we're going to use an object manager)
- [ ] Device `available` property to provide dummy devices for print listing/deletion if devices are currently unplugged.
- [ ] A generic Manager's `Identify` method that will identify any user on any device (to allow login without having to select an user name).
TODO:
* Do we need new API for libfprint#256 (device initiated resume with immediate verify)
Most of the required things here can be just added, and in case clients can handle the `DBus.Error.UnknownMethod` in case (even without bothering adding a different interface IMHO), however...
Given that now we're almost past the gdbus port, we were also considering the idea that maybe we could just refactor the whole DBus API (maybe putting it into the FDO namespace, at this point).
I'd imagine a such iface would imply that when we start a device action, we return an object that can be used to stop the operation and get notified about the results of it.
Maybe something like this (was quickly drafted, so I might have forgot things):
```xml
<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" >
<node xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
<interface name="org.freedesktop.Fprintd1.Manager">
<!-- No need to implement get devices, as it will be handled by the object manager -->
<method name="GetDefaultDevice">
<arg type="o" name="device" direction="out" />
</method>
</interface>
<interface name="org.freedesktop.Fprintd1.Device">
<method name="Claim">
<arg type="s" name="username" direction="in" />
<arg type="o" name="claimed_device" direction="out" />
</method>
</interface>
<interface name="org.freedesktop.Fprintd1.ClaimedDevice">
<method name="Enroll">
<arg type="s" name="finger_name" direction="in" />
<arg type="o" name="enroll_action" direction="out" />
</method>
<method name="Verify">
<arg type="s" name="finger_name" direction="in" />
<arg type="o" name="verify_action" direction="out" />
</method>
<method name="Release" />
</interface>
<interface name="org.freedesktop.Fprintd1.EnrollAction">
<!-- Maybe move this to a more generic DeviceAction interface -->
<method name="Stop" />
<property name="enroll-status" type="s" access="read" />
<signal name="done">
<arg type="b" name="done" />
</signal>
</interface>
<interface name="org.freedesktop.Fprintd1.VerifyAction">
<!-- Maybe move this to a more generic DeviceAction interface -->
<method name="Stop" />
<property name="selected-finger" type="s" access="read" />
<property name="verify-status" type="s" access="read" />
</interface>
</node>
```2.0https://gitlab.freedesktop.org/libfprint/fprintd/-/issues/50X1 Carbon 7th Gen could not enroll fingerprint properly except applying a pat...2020-04-06T02:22:57ZYing Kanyang (Harry Ying)X1 Carbon 7th Gen could not enroll fingerprint properly except applying a patch that lowers the security.On my ThinkPad X1 Carbon 7th Gen (06cb:00bd), I have to use a patch which lowers the security to enroll my fingerprint successfully.
I am on `fprintd` and `libfprint` 1.90.1.
The patch is at [here](https://aur.archlinux.org/cgit/aur....On my ThinkPad X1 Carbon 7th Gen (06cb:00bd), I have to use a patch which lowers the security to enroll my fingerprint successfully.
I am on `fprintd` and `libfprint` 1.90.1.
The patch is at [here](https://aur.archlinux.org/cgit/aur.git/tree/disable-systemd-protection.patch?h=fprintd-libfprint2).
I hope we can fix it so users can use their readers without compromise.
Also T495 and some other models reported that with the same reader (06cb:00bd), they don't need the patch to work.2.0https://gitlab.freedesktop.org/libfprint/fprintd/-/issues/37Device not released when caller goes away2020-03-17T16:14:50ZBastien NoceraDevice not released when caller goes awayWe don't release the device when the caller goes away.
```sh
$ fprintd-verify
Using device /net/reactivated/Fprint/Device/0
Listing enrolled fingers:
- #0: right-index-finger
^C
$ fprintd-enroll
Using device /net/reactivated/Fprint/D...We don't release the device when the caller goes away.
```sh
$ fprintd-verify
Using device /net/reactivated/Fprint/Device/0
Listing enrolled fingers:
- #0: right-index-finger
^C
$ fprintd-enroll
Using device /net/reactivated/Fprint/Device/0
failed to claim device: Device was already claimed
```2.0https://gitlab.freedesktop.org/libfprint/fprintd/-/issues/36PAM module small fixes2020-01-24T16:10:04ZBastien NoceraPAM module small fixes- Print a better debug message when timeout was changing to < 10 (and make that a constant)
- Support `debug=...` for the debug setting- Print a better debug message when timeout was changing to < 10 (and make that a constant)
- Support `debug=...` for the debug setting2.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/171Use bool instead of 0/1 return values2019-11-20T19:50:26ZBastien NoceraUse bool instead of 0/1 return values```
fp_dscv_dev_supports_print_data
fp_dscv_dev_supports_dscv_print
fp_dev_supports_print_data
fp_dev_supports_dscv_print
fp_driver_supports_imaging
fp_dev_supports_imaging
fp_dev_supports_identification
``````
fp_dscv_dev_supports_print_data
fp_dscv_dev_supports_dscv_print
fp_dev_supports_print_data
fp_dev_supports_dscv_print
fp_driver_supports_imaging
fp_dev_supports_imaging
fp_dev_supports_identification
```2.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/132Remove num_stripes from do_movement_estimation2019-11-20T19:46:29ZBastien NoceraRemove num_stripes from do_movement_estimationAnd from its caller. This would only be useful if we wanted to manipulate less frames than what's in the list.
See also fpi_assemble_frames(), and fpi_do_movement_estimation().
Note: elan_submit_image() looks like it wants to ignore so...And from its caller. This would only be useful if we wanted to manipulate less frames than what's in the list.
See also fpi_assemble_frames(), and fpi_do_movement_estimation().
Note: elan_submit_image() looks like it wants to ignore some items in the list.2.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/129Document image manipulation functions2018-12-03T15:10:42ZBastien NoceraDocument image manipulation functionsFrom libfprint-undocumented.txt:
```
fpi_assemble_frames (<parameters>)
fpi_assemble_lines (<parameters>)
fpi_do_movement_estimation (<parameters>)
fpi_frame (<items>)
fpi_frame_asmbl_ctx (<items>)
fpi_line_asmbl_ctx (<items>)
fpi_mean_s...From libfprint-undocumented.txt:
```
fpi_assemble_frames (<parameters>)
fpi_assemble_lines (<parameters>)
fpi_do_movement_estimation (<parameters>)
fpi_frame (<items>)
fpi_frame_asmbl_ctx (<items>)
fpi_line_asmbl_ctx (<items>)
fpi_mean_sq_diff_norm (<parameters>)
fpi_std_sq_dev (<parameters>)
```
@anarsoul any chance you could document those? They are the last functions for driver development in libfprint that aren't documented.
I'd like this to be documented before mid-December, so I can release a pre-1.0 version for testing, finishing up the first round of modernisation in libfprint.1.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/128Remove fpi_imgdev_get_action_state?2019-11-20T19:50:11ZBastien NoceraRemove fpi_imgdev_get_action_state?It's only used in the etes603 driver:
```
drivers/etes603.c: if (fpi_imgdev_get_action_state(idev) != IMG_ACQUIRE_STATE_DEACTIVATING) {
drivers/etes603.c: if (fpi_imgdev_get_action_state(idev) != IMG_ACQUIRE_STA...It's only used in the etes603 driver:
```
drivers/etes603.c: if (fpi_imgdev_get_action_state(idev) != IMG_ACQUIRE_STATE_DEACTIVATING) {
drivers/etes603.c: if (fpi_imgdev_get_action_state(idev) != IMG_ACQUIRE_STATE_DEACTIVATING) {
```2.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/127Split primitive driver symbols2019-11-20T19:47:36ZBastien NoceraSplit primitive driver symbolsThere are a number of functions and structures that are only ever used either by primitive drivers, or by the funky upekts driver, including things that should be internal only. We might want to split the headers, and the docs for those.There are a number of functions and structures that are only ever used either by primitive drivers, or by the funky upekts driver, including things that should be internal only. We might want to split the headers, and the docs for those.2.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/120Add GLib loop to libfprint directly2019-11-20T19:50:54ZBastien NoceraAdd GLib loop to libfprint directlyRight now we have numerous versions of this in the GTK+ example, fprintd, fprint_demo... We should have a single header for this. This might require a new pkg-config file, depending on whether we want to break API/ABI.Right now we have numerous versions of this in the GTK+ example, fprintd, fprint_demo... We should have a single header for this. This might require a new pkg-config file, depending on whether we want to break API/ABI.2.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/119Rework public async API2019-11-20T19:50:58ZBastien NoceraRework public async APIRight now, (nearly all) the async `_start()` calls require using a callback, and calling the appropriate `_finish()` function. Ideally, those would be called automatically when the operation has finished, and the `_finish()` call would o...Right now, (nearly all) the async `_start()` calls require using a callback, and calling the appropriate `_finish()` function. Ideally, those would be called automatically when the operation has finished, and the `_finish()` call would only be needed to capture the result, not to set the fingerprint driver's state machine back in the right state.
This would make the async functions similar to GIO's "GTask" handling.
Benefits:
- Generic callbacks for finished operations (but new callbacks for enrollment progress)
- Less confusion for front-end developers
- Clearer match between sync/async, and when to call `_finish()`2.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/103Possible integer overflow in gen_quality_map()2018-12-13T14:55:57ZBastien NoceraPossible integer overflow in gen_quality_map()From https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - gen_quality_map() integer overflows in malloc(), array indexFrom https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - gen_quality_map() integer overflows in malloc(), array index1.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/101Possible integer overflow in gen_high_curve_map()2018-12-13T14:56:12ZBastien NoceraPossible integer overflow in gen_high_curve_map()From https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - gen_high_curve_map() integer overflows in malloc(), memset() callsFrom https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - gen_high_curve_map() integer overflows in malloc(), memset() calls1.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/100Possible integer overflow in interpolate_direction_map()2018-12-13T14:56:21ZBastien NoceraPossible integer overflow in interpolate_direction_map()From https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - interpolate_direction_map() integer overflows in malloc(), memcpy() callsFrom https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - interpolate_direction_map() integer overflows in malloc(), memcpy() calls1.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/99Possible integer overflow in gen_initial_maps()2018-12-13T14:56:30ZBastien NoceraPossible integer overflow in gen_initial_maps()From https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - gen_initial_maps() integer overflows in malloc(), memset() callsFrom https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - gen_initial_maps() integer overflows in malloc(), memset() calls1.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/98Possible integer overflow in ./examples/img_capture_continuous.c2020-05-04T11:20:30ZBastien NoceraPossible integer overflow in ./examples/img_capture_continuous.cFrom https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - main() in ./examples/img_capture_continuous.c integer overflows in
> malloc()From https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - main() in ./examples/img_capture_continuous.c integer overflows in
> malloc()1.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/97Possible integer overflow in allocate_contour()2018-12-13T14:56:39ZBastien NoceraPossible integer overflow in allocate_contour()From https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - allocate_contour() integer overflows in malloc()From https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - allocate_contour() integer overflows in malloc()1.0https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/96Possible integer overflow in pixelize_map()2018-12-13T14:56:46ZBastien NoceraPossible integer overflow in pixelize_map()From https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - pixelize_map() integer overflows in malloc(), loop boundsFrom https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/1745454/comments/2
> - pixelize_map() integer overflows in malloc(), loop bounds1.0