dbusmock/fprintd: Make possible to retrieve the finger selected for verification

So that we can ensure that the client requested the one we expect
This commit is contained in:
Marco Trevisan (Treviño)
2020-04-03 02:07:32 +02:00
parent 629f7fcc11
commit ac98b881be

View File

@ -141,6 +141,7 @@ def AddDevice(self, device_name, num_enroll_stages, scan_type):
device.fingers = {}
device.claimed_user = None
device.action = None
device.selected_finger = None
device.verify_script = []
return path
@ -187,6 +188,7 @@ def Release(device):
name='net.reactivated.Fprint.Error.ClaimDevice')
device.claimed_user = None
device.action = None
device.selected_finger = None
def can_verify_finger(device, finger_name):
# We should already have checked that there are enrolled fingers
@ -231,6 +233,7 @@ def VerifyStart(device, finger_name):
if finger_name == 'any':
finger_name = device.fingers[device.claimed_user][0]
device.selected_finger = finger_name
device.EmitSignal(DEVICE_IFACE, 'VerifyFingerSelected', 's', [
finger_name
])
@ -263,6 +266,7 @@ def VerifyStop(device):
'No verification to stop',
name='net.reactivated.Fprint.Error.NoActionInProgress')
device.action = None
device.selected_finger = None
@dbus.service.method(DEVICE_IFACE,
in_signature='s', out_signature='')
@ -331,6 +335,20 @@ def SetEnrolledFingers(device, user, fingers):
device.fingers[user] = fingers
@dbus.service.method(DEVICE_MOCK_IFACE,
in_signature='', out_signature='s')
def GetSelectedFinger(device):
'''Convenience method to get the finger under verification
Returns the finger name that the user has selected for verifying
'''
if not device.selected_finger:
raise dbus.exceptions.DBusException(
'Device is not verifying',
name='net.reactivated.Fprint.Error.NoActionInProgress')
return device.selected_finger
@dbus.service.method(DEVICE_MOCK_IFACE,
in_signature='a(sbi)', out_signature='')
def SetVerifyScript(device, script):