Commit Graph

34 Commits

Author SHA1 Message Date
dbf01399ad device: Throw an error if we failed to delete a device storage print
Although this error is not fatal as the local print reference has been
properly removed.
2021-01-22 15:19:21 +01:00
e0a643f3b9 device: Return more specific error if we failed cleaning up the storage 2021-01-22 15:19:21 +01:00
7d87f5e664 device: Set an error if trying to delete a print that is not enrolled 2021-01-22 15:17:57 +01:00
fd72c0b81b device: Support deleting a single fingerprint for user
Add a method to delete only a Fingerprint for a device, this is required
by they g-c-c UI design and at the same time it reflects the libfprint
API, where so far only a fingerprint at time can be deleted.
2021-01-22 15:17:57 +01:00
1835d99265 device: Expose finger status as DBus properties
libfprint v1.90.4 introduced a new finger status API to expose to the UI
the finger status on sensor.

Add two new properties to the Device interface that represent the
possible values.

Add new tests.
2021-01-22 14:10:04 +00:00
93bad82540 fprintd: Use GDBus codegen based implementation
Fprintd is dependent on the deprecated dbus-glib, also this doesn't provide
various features we can take advantage of, like the ones for async
authentication mechanism.

So, remove all the dbus-glib dependencies and simplify the code, but without
any further refactor, and keeping everything as it used to work, while this
will give room for further improvements in subsequent commits.

Internally, we just use dbus-codegen to generate the skeletons, and we
use the generated FprintdDBusManager with composition, while we
implement the device skeleton interface in FprintDevice, so that we
don't have to use it as a proxy, and keep being closer to what it used
to be with dbus-glib.

Fixes: #61
2020-11-10 14:45:59 +01:00
cd3ed2e450 device: Fix documentation for ERROR_INVALID_FINGERNAME 2020-01-17 14:41:22 +01:00
c929d39df1 device: Fix "enrollemnt" typo 2020-01-17 14:40:36 +01:00
b2ff316e20 device: Add new API and fallback to delete prints from device
Some devices require storing the print on the device, to support this,
try deleting prints from the device before deleting them from local
storage.

To handle these devices, add a new API that requires the device to be
claimed rather than allowing deletion without claiming the device first.
Also add appropriate fallbacks so that the old API will continue to
work, but warn about its use.
2019-12-03 17:08:03 +01:00
9c8d062669 device: Handle full device storage including garbage collection
The new libfprint version has support for devices that store data on the
sensor. In that case, the on-sensor storage might fill up when the user
tries to enroll a new print.

The strategy introduced here to handle this is to try and delete prints
from the device that we do not know about (assuming, it is e.g. from an
old installation and unusable).

It can also happen that we are not able to garbage collect old prints.
If that happens, a new error code "enroll-data-full" will be returned
signalling the situation to the enrolling application.
2019-12-03 17:08:03 +01:00
4ea1c48f9f Detect when a device is disconnected
Pretty hacky way to detect whether the device we're handling has
been disconnected during a verify or enrollment. This should allow
us to avoid users having to wait when somebody pulls the plug.
2009-01-27 16:45:47 -03:00
7b06c4b7f3 Review possible errors and document them
Review all the possible errors and document them for each function.
2008-11-24 17:20:46 +00:00
c9fdeb47aa Use D-Bus properties instead of GetProperties
- Use D-Bus native properties instead of a GetProperties call.
- Fix a number of front-ends by registering the right signals and
marshallers following the "done" signal argument addition
- Fix VerifyStart call in the pam module
2008-11-22 13:00:48 +00:00
dfa539a1f8 Add documentation
Documentation FTW!
2008-11-21 18:15:51 +00:00
26aab5dc28 Add a done argument to result signals
For verify and enroll, add a done argument so that front-end
know easily when they should be closing the device.
2008-11-21 18:15:51 +00:00
874d8164b4 Add ScanType and NumberEnrollStages properties
Export the type of scan the device performs, and, when the device
is claimed, the number of enrollment stages.
2008-11-21 18:15:50 +00:00
f7186c7ff0 Remove all uses of enums in the API
The clients aren't supposed to know the magic numbers for enums,
so use strings instead.
2008-11-21 18:15:50 +00:00
1e43720c15 Remove use of finger number in the API
Use well-defined strings instead of numbers to pass around
specific fingers in the public API.
2008-11-21 18:15:21 +00:00
ea4114b976 Make GetProperties async
as the rest of our functions.
2008-11-21 18:15:21 +00:00
924e08d2e8 Add device name property
Add GetProperties method, with a single "Name" properties into
the hashtable.
Use the device name property in the PAM module, and in the list test.
2008-11-21 18:15:21 +00:00
15fbacd738 More identification work
- Add a finger selected signal, so that when an "automatic" finger
  is selected for verification, we know which one to scan
- Fix the finger print numbers list to use GPOINTER_TO_INT /
  GINT_TO_POINTER
- Make sure the gallery is NULL when there's no prints available
- Don't use identification when a finger number is provided
- Add support for selecting the finger number in verify
- Add support for fatal warnings there as well
2008-11-02 11:16:13 +00:00
e8c36e9592 Rework the "SetUsername" functionality
- Remove SetUsername itself, and add a username parameter to DeviceClaim,
  ListEnrolledFingers and DeleteEnrolledFingers.
- For each of those calls, check that the incoming connection is allowed
  to operate on that particular username
- Don't require a claimed device to list or remove fingerprints
- Clean up username and sender when releasing the device
- Modify the storage backend to not require an opened device to list
  or delete fingerprints
- Add a simple test program to list registered fingerprints for the
  usernames passed as argument
2008-11-02 11:16:13 +00:00
bd2debc01e Update storage code to allow plugins
Add naive plugin support to the storage code, it will
load plugins from $(libdir)/fprintd/modules, given the configuration
from /etc/fprintd.conf.
2008-11-02 11:16:13 +00:00
af42db88bf Add DeleteEnrolledFingers
To delete all the enrolled finger prints for a particular user.
We can already overwrite existing enrolled fingerprints, and there's
not really any point in dismissing just one fingerprint.
2008-11-02 11:16:13 +00:00
bb1210981b Kill LoadPrintData and UnloadPrintData
They were just doing nothing interesting for us, and might
cause problems if data changes under us (say, remote storage).
2008-11-02 11:16:13 +00:00
46a9783be6 Add PolicyKit checking
Add PolicyKit checks to all the public functions, grouped
in 2 main groups: Verify and Enroll
By default, only the user is able to enroll new fingers,
or verify themselves.
You need to be allowed at least one of those 2 actions
to be allowed to claim or release the device.

We also add a new SetUsername function, for administration
functions. Users will need to be authenticate as admins to
be allowed to change the username on which the actions will
be taken. Any prints loaded before the change of username will
be unloaded.
2008-05-22 17:56:25 +01:00
b1b5e2b495 Kill ListEnrolledFingersFromStorage
Last FromStorage variant killed, we need to make sure all
the functions now use the storage functions internally,
otherwise we won't be able to load from the place we save.
2008-05-22 17:55:16 +01:00
5d4e23ab32 Kill LoadPrintDataFromStorage
First FromStorage variant to go
2008-05-22 17:55:15 +01:00
7f592dd2e4 Fix return values for async methods
Async methods should return "out" variables using dbus_g_method_return(),
not through function parameters. Fixes crashing using those functions.
2008-05-22 17:55:15 +01:00
1748e5f484 Add user tracking when claiming a device
Mark all the methods on the device as async, so we
can get access to the associated DBusGMethodInvocation.

When claiming the device, remember the sender, and for every
API entry point, check that the sender is the same as the one
that made the original claim.

Trying to enroll a user whilst the device is already claimed
from another program will fail with:
** ERROR **: failed to claim device: Device was already claimed

This is the first step towards PolicyKit and multi-user support
2008-05-18 12:41:05 +01:00
1f54a0c363 Initial storage implementation
[dsd: changed from /etc/fprint to /var/lib/fprint]
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
2008-04-06 23:49:28 +01:00
fc6b0c194c Add enrollment functionality 2008-03-06 16:37:19 +00:00
3e68c40e4e Present verify results with a signal 2008-03-06 13:12:34 +00:00
080e427651 Move to object oriented model
There is now a single Manager class shared between all apps.
Apps then share a collection of Device objects.
2008-03-05 23:52:33 +00:00