src/eric7/WebBrowser/WebAuth/Fido2Management.py

Mon, 22 Jul 2024 16:54:49 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 22 Jul 2024 16:54:49 +0200
branch
eric7
changeset 10858
8a03d5f6146c
parent 10857
abcb288e7e17
child 10859
399d19fc7eb5
permissions
-rw-r--r--

Updated translations.

10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 #
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 Module implementing a manager for FIDO2 security keys.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
9 import time
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
10
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from fido2.ctap import CtapError
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
12 from fido2.ctap2 import ClientPin, Config, CredentialManagement, Ctap2
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from fido2.hid import CtapHidDevice
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from fido2.webauthn import PublicKeyCredentialUserEntity
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
15 from PyQt6.QtCore import QCoreApplication, QObject, QThread, pyqtSignal
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 class Fido2PinError(Exception):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 Class signaling an issue with the PIN.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 pass
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 class Fido2DeviceError(Exception):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Class signaling an issue with the device.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 pass
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 class Fido2Management(QObject):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 Class implementing a manager for FIDO2 security keys.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @signal deviceConnected() emitted to indicate a connect to the security key
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @signal deviceDisconnected() emitted to indicate a disconnect from the security key
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 deviceConnected = pyqtSignal()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 deviceDisconnected = pyqtSignal()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
45 FidoVersion2Str = {
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
46 "FIDO_2_1": "CTAP 2.1 / FIDO2",
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
47 "FIDO_2_0": "CTAP 2.0 / FIDO2",
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
48 "FIDO_2_1_PRE": QCoreApplication.translate(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
49 "Fido2Management", "CTAP2.1 Preview Features"
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
50 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
51 "U2F_V2": "CTAP 1 / U2F",
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
52 }
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
53
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
54 FidoExtension2Str = {
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
55 "credBlob": QCoreApplication.translate("Fido2Management", "Credential BLOB"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
56 "credProtect": QCoreApplication.translate(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
57 "Fido2Management", "Credential Protection"
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
58 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
59 "hmac-secret": QCoreApplication.translate("Fido2Management", "HMAC Secret"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
60 "largeBlobKey": QCoreApplication.translate("Fido2Management", "Large Blob Key"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
61 "minPinLength": QCoreApplication.translate(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
62 "Fido2Management", "Minimum PIN Length"
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
63 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
64 }
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
65
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
66 FidoInfoCategories2Str = {
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
67 "pin": QCoreApplication.translate("Fido2Management", "PIN"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
68 "security_key": QCoreApplication.translate("Fido2Management", "Security Key"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
69 "options": QCoreApplication.translate("Fido2Management", "Options"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
70 "extensions": QCoreApplication.translate("Fido2Management", "Extensions"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
71 }
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
72
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 def __init__(self, parent=None):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 Constructor
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 @param parent reference to the parent object (defaults to None)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @type QObject (optional)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 super().__init__(parent)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.disconnectFromDevice()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 def connectToDevice(self, device):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 Public method to connect to a given security key.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @param device reference to the security key device class
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @type CtapHidDevice
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 if self.__ctap2 is not None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.disconnectFromDevice()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.__ctap2 = Ctap2(device)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 self.__clientPin = ClientPin(self.__ctap2)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.__pin = None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.deviceConnected.emit()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 def disconnectFromDevice(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 Public method to disconnect from the current device.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.__ctap2 = None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.__clientPin = None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.__pin = None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self.deviceDisconnected.emit()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
110 def reconnectToDevice(self):
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
111 """
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
112 Public method to reconnect the current security key.
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
113 """
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
114 if self.__ctap2 is not None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
115 self.connectToDevice(self.__ctap2.device)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
116
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 def unlockDevice(self, pin):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 Public method to unlock the device (i.e. store the PIN for later use).
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 @param pin PIN to be stored
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 self.__pin = pin
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 def lockDevice(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 Public method to lock the device (i.e. delete the stored PIN).
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 self.__pin = None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 def isDeviceLocked(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 Public method to check, if the device is in locked state (i.e. the stored PIN
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 is None).
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 @return flag indicating the locked state
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 @rtype bool
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 return self.__pin is None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 def getDevices(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 Public method to get a list of connected security keys.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 @return list of connected security keys
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 @rtype list of CtapHidDevice
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 return list(CtapHidDevice.list_devices())
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
151 def getSecurityKeyInfo(self):
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 Public method to get information about the connected security key.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 @return dictionary containing the info data
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
156 @rtype dict[str, list[tuple[str, str]]]
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 """
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
158 if self.__ctap2 is None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
159 return {}
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
160
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
161 # each entry is a list of tuples containing the display name and the value
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
162 data = {
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
163 "pin": [],
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
164 "security_key": [],
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
165 "options": [],
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
166 "extensions": [],
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
167 }
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
168
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
169 # PIN related data
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
170 if self.__ctap2.info.options["clientPin"]:
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
171 msg1 = (
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
172 self.tr(
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
173 "PIN is disabled and must be changed before it can be used!"
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
174 )
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
175 if self.__ctap2.info.force_pin_change
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
176 else ""
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
177 )
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
178 pinRetries, powerCycle = self.getPinRetries()
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
179 if pinRetries:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
180 if powerCycle:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
181 msg = self.tr(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
182 "PIN is temporarily blocked. Remove and re-insert the"
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
183 " security keyto unblock it."
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
184 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
185 else:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
186 msg = self.tr("%n attempts remaining", "", pinRetries)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
187 else:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
188 msg = self.tr("PIN is blocked. The security key needs to be reset.")
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
189 if msg1:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
190 msg += "\n" + msg1
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
191 else:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
192 msg = self.tr("A PIN has not been set.")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
193 data["pin"].append((self.tr("PIN"), msg))
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
194
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
195 data["pin"].append(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
196 (self.tr("Minimum PIN length"), str(self.__ctap2.info.min_pin_length))
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
197 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
198
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
199 alwaysUv = self.__ctap2.info.options.get("alwaysUv")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
200 msg = (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
201 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
202 if alwaysUv is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
203 else self.tr("switched on") if alwaysUv else self.tr("switched off")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
204 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
205 data["pin"].append((self.tr("Always require User Verification"), msg))
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
206
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
207 remainingPasskeys = self.__ctap2.info.remaining_disc_creds
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
208 if remainingPasskeys is not None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
209 data["pin"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
210 (self.tr("Passkeys storage remaining"), str(remainingPasskeys))
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
211 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
212
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
213 enterprise = self.__ctap2.info.options.get("ep")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
214 if enterprise is not None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
215 data["pin"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
216 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
217 self.tr("Enterprise Attestation"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
218 self.tr("enabled") if enterprise else self.tr("disabled"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
219 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
220 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
221
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
222 # security key related data
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
223 data["security_key"].extend(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
224 [
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
225 (self.tr("Name"), self.__ctap2.device.product_name),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
226 (self.tr("Path"), self.__ctap2.device.descriptor.path),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
227 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
228 self.tr("Version"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
229 ".".join(str(p) for p in self.__ctap2.device.device_version),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
230 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
231 (self.tr("Vendor ID"), f"0x{self.__ctap2.device.descriptor.vid:04x}"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
232 (self.tr("Product ID"), f"0x{self.__ctap2.device.descriptor.pid:04x}"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
233 ]
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
234 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
235 serial = self.__ctap2.device.serial_number
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
236 if serial is not None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
237 data["security_key"].append((self.tr("Serial Number"), serial))
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
238 data["security_key"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
239 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
240 self.tr("Supported Versions"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
241 "\n".join(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
242 self.FidoVersion2Str.get(v, v) for v in self.__ctap2.info.versions
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
243 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
244 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
245 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
246 data["security_key"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
247 (self.tr("Supported Transports"), "\n".join(self.__ctap2.info.transports))
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
248 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
249
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
250 # extensions data
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
251 if self.__ctap2.info.extensions:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
252 for ext in self.FidoExtension2Str:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
253 data["extensions"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
254 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
255 self.FidoExtension2Str[ext],
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
256 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
257 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
258 if ext in self.__ctap2.info.extensions
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
259 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
260 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
261 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
262 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
263
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
264 # options data
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
265 options = self.__ctap2.info.options
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
266 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
267 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
268 self.tr("Is Platform Device"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
269 self.tr("yes") if options.get("plat", False) else self.tr("no"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
270 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
271 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
272 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
273 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
274 self.tr("Resident Passkeys"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
275 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
276 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
277 if options.get("rk", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
278 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
279 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
280 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
281 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
282 cp = options.get("clientPin")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
283 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
284 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
285 self.tr("Client PIN"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
286 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
287 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
288 if cp is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
289 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
290 self.tr("supported, PIN set")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
291 if cp is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
292 else self.tr("supported, PIN not set")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
293 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
294 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
295 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
296 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
297 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
298 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
299 self.tr("Detect User Presence"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
300 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
301 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
302 if options.get("up", True)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
303 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
304 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
305 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
306 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
307 uv = options.get("uv")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
308 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
309 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
310 self.tr("User Verification"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
311 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
312 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
313 if uv is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
314 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
315 self.tr("supported, configured")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
316 if uv is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
317 else self.tr("supported, not configured")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
318 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
319 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
320 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
321 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
322 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
323 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
324 self.tr("Verify User with Client PIN"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
325 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
326 self.tr("available")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
327 if options.get("pinUvAuthToken", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
328 else self.tr("not available")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
329 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
330 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
331 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
332 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
333 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
334 self.tr("Make Credential / Get Assertion"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
335 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
336 self.tr("available")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
337 if options.get("noMcGaPermissionsWithClientPin", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
338 else self.tr("not available")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
339 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
340 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
341 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
342 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
343 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
344 self.tr("Large BLOBs"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
345 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
346 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
347 if options.get("largeBlobs", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
348 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
349 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
350 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
351 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
352 ep = options.get("ep")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
353 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
354 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
355 self.tr("Enterprise Attestation"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
356 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
357 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
358 if ep is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
359 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
360 self.tr("supported, enabled")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
361 if ep is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
362 else self.tr("supported, disabled")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
363 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
364 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
365 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
366 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
367 be = options.get("bioEnroll")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
368 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
369 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
370 self.tr("Fingerprint"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
371 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
372 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
373 if be is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
374 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
375 self.tr("supported, registered")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
376 if be is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
377 else self.tr("supported, not registered")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
378 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
379 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
380 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
381 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
382 uvmp = options.get("userVerificationMgmtPreview")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
383 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
384 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
385 self.tr("CTAP2.1 Preview Fingerprint"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
386 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
387 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
388 if uvmp is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
389 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
390 self.tr("supported, registered")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
391 if uvmp is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
392 else self.tr("supported, not registered")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
393 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
394 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
395 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
396 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
397 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
398 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
399 self.tr("Verify User for Fingerprint Registration"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
400 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
401 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
402 if options.get("uvBioEnroll", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
403 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
404 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
405 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
406 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
407 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
408 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
409 self.tr("Security Key Configuration"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
410 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
411 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
412 if options.get("authnrCfg", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
413 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
414 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
415 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
416 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
417 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
418 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
419 self.tr("Verify User for Security Key Configuration"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
420 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
421 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
422 if options.get("uvAcfg", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
423 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
424 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
425 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
426 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
427 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
428 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
429 self.tr("Credential Management"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
430 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
431 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
432 if options.get("credMgmt", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
433 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
434 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
435 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
436 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
437 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
438 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
439 self.tr("CTAP2.1 Preview Credential Management"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
440 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
441 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
442 if options.get("credentialMgmtPreview", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
443 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
444 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
445 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
446 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
447 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
448 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
449 self.tr("Set Minimum PIN Length"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
450 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
451 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
452 if options.get("setMinPINLength", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
453 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
454 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
455 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
456 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
457 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
458 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
459 self.tr("Make Non-Resident Passkey without User Verification"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
460 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
461 self.tr("allowed")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
462 if options.get("makeCredUvNotRqd", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
463 else self.tr("not allowed")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
464 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
465 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
466 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
467 auv = options.get("alwaysUv")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
468 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
469 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
470 self.tr("Always Require User Verification"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
471 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
472 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
473 if auv is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
474 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
475 self.tr("supported, enabled")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
476 if auv is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
477 else self.tr("supported, disabled")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
478 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
479 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
480 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
481 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
482
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
483 return data
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 def resetDevice(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 Public method to reset the connected security key.
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
488
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
489 @return flag indicating success and a message
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
490 @rtype tuple of (bool, str)
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 """
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
492 if self.__ctap2 is None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
493 return False, self.tr("No security key connected.")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
494
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
495 removed = False
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
496 startTime = time.monotonic()
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
497 while True:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
498 QThread.msleep(500)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
499 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
500 securityKeys = self.getDevices()
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
501 except OSError:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
502 securityKeys = []
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
503 if not securityKeys:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
504 removed = True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
505 if removed and len(securityKeys) == 1:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
506 ctap2 = Ctap2(securityKeys[0])
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
507 break
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
508 if time.monotonic() - startTime >= 30:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
509 return False, self.tr(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
510 "Reset failed. The security key was not removed and re-inserted"
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
511 " within 30 seconds."
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
512 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
513
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
514 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
515 ctap2.reset()
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
516 return True, "The security key has been reset."
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
517 except CtapError as err:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
518 if err.code == CtapError.ERR.ACTION_TIMEOUT:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
519 msg = self.tr(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
520 "You need to touch your security key to confirm the reset."
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
521 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
522 elif err.code in (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
523 CtapError.ERR.NOT_ALLOWED,
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
524 CtapError.ERR.PIN_AUTH_BLOCKED,
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
525 ):
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
526 msg = self.tr(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
527 "Reset must be triggered within 5 seconds after the security"
10858
8a03d5f6146c Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10857
diff changeset
528 " key is inserted."
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
529 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
530 else:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
531 msg = str(err)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
532
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
533 return False, self.tr("Reset failed. {0}").format(msg)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
534 except Exception:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
535 return False, self.tr("Reset failed.")
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 ############################################################################
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 ## methods related to PIN handling
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 ############################################################################
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 def getMinimumPinLength(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 Public method to get the minimum PIN length defined by the security key.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 @return minimum length for the PIN
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 @rtype int
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 if self.__ctap2 is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 return None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 return self.__ctap2.info.min_pin_length
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 def hasPin(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 Public method to check, if the connected security key has a PIN set.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 @return flag indicating that a PIN has been set or None in case no device
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 was connected yet or it does not support PIN
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 @rtype bool or None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 if self.__ctap2 is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 return None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 return self.__ctap2.info.options.get("clientPin")
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
566 def pinChangeRequired(self):
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 Public method to check for a forced PIN change.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 @return flag indicating a forced PIN change is required
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 @rtype bool
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573 if self.__ctap2 is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 return False
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 return self.__ctap2.info.force_pin_change
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 def getPinRetries(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 Public method to get the number of PIN retries left and an indication for the
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 need of a power cycle.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 @return tuple containing the number of retries left and a flag indicating a
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
584 power cycle is required. A retry value of -1 indicates, that no PIN was
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
585 set yet.
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 @rtype tuple of (int, bool)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 if self.__ctap2 is None or self.__clientPin is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 return (None, None)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
591 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
592 return self.__clientPin.get_pin_retries()
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
593 except CtapError as err:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
594 if err.code == CtapError.ERR.PIN_NOT_SET:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
595 # return -1 retries to indicate a missing PIN
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
596 return (-1, False)
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
598 def changePin(self, oldPin, newPin):
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 Public method to change the PIN of the connected security key.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
602 @param oldPin current PIN
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 @param newPin new PIN
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 @type str
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
606 @return flag indicating success and a message
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
607 @rtype tuple of (bool, str)
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 """
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
609 if self.__ctap2 is None or self.__clientPin is None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
610 return False, self.tr("No security key connected.")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
611
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
612 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
613 self.__clientPin.change_pin(old_pin=oldPin, new_pin=newPin)
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
614 self.reconnectToDevice()
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
615 return True, self.tr("PIN was changed successfully.")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
616 except CtapError as err:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
617 return (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
618 False,
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
619 self.tr("<p>Failed to change the PIN.</p><p>Reason: {0}</p>").format(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
620 self.__pinErrorMessage(err)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
621 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
622 )
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 def setPin(self, pin):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 Public method to set a PIN for the connected security key.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 @param pin PIN to be set
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 @type str
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
630 @return flag indicating success and a message
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
631 @rtype tuple of (bool, str)
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 """
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
633 if self.__ctap2 is None or self.__clientPin is None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
634 return False, self.tr("No security key connected.")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
635
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
636 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
637 self.__clientPin.set_pin(pin=pin)
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
638 self.reconnectToDevice()
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
639 return True, self.tr("PIN was set successfully.")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
640 except CtapError as err:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
641 return (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
642 False,
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
643 self.tr("<p>Failed to set the PIN.</p><p>Reason: {0}</p>").format(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
644 self.__pinErrorMessage(err)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
645 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
646 )
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
647
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 def verifyPin(self, pin):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 Public method to verify a given PIN.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
652 A successful verification of the PIN will reset the "retries" counter.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 @param pin PIN to be verified
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 @return flag indicating successful verification and a verification message
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 @rtype tuple of (bool, str)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 if self.__ctap2 is None or self.__clientPin is None:
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
660 return False, self.tr("No security key connected.")
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 try:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 self.__clientPin.get_pin_token(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664 pin, ClientPin.PERMISSION.GET_ASSERTION, "eric-ide.python-projects.org"
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 )
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
666 return True, self.tr("PIN was verified.")
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 except CtapError as err:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
668 return (
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
669 False,
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
670 self.tr("<p>PIN verification failed.</p><p>Reason: {0}</p>").format(
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
671 self.__pinErrorMessage(err)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 ),
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 def __pinErrorMessage(self, err):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 Private method to get a message for a PIN error.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 @param err reference to the exception object
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680 @type CtapError
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681 @return message for the given PIN error
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682 @rtype str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684 errorCode = err.code
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 if errorCode == CtapError.ERR.PIN_INVALID:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
686 msg = self.tr("Invalid PIN")
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 elif errorCode == CtapError.ERR.PIN_BLOCKED:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 msg = self.tr("PIN is blocked.")
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689 elif errorCode == CtapError.ERR.PIN_NOT_SET:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 msg = self.tr("No PIN set.")
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
691 elif errorCode == CtapError.ERR.PIN_POLICY_VIOLATION:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
692 msg = self.tr("New PIN doesn't meet complexity requirements.")
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 msg = str(err)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 return msg
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697 ############################################################################
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698 ## methods related to passkey (credential) handling
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
699 ############################################################################
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
700
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
701 def getPasskeys(self, pin):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 Public method to get all stored passkeys.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
704
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
705 @param pin PIN to unlock the connected security key
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
707 @return tuple containing a dictionary containing the stored passkeys grouped
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708 by Relying Party ID, the count of used credential slots and the count
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
709 of available credential slots
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 @rtype tuple of [dict[str, list[dict[str, Any]]], int, int]
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712 credentials = {}
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
714 credentialManager = self.__initializeCredentialManager(pin)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715 data = credentialManager.get_metadata()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 if data.get(CredentialManagement.RESULT.EXISTING_CRED_COUNT) > 0:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717 for relyingParty in credentialManager.enumerate_rps():
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718 relyingPartyId = relyingParty[CredentialManagement.RESULT.RP]["id"]
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
719 credentials[relyingPartyId] = []
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
720 for credential in credentialManager.enumerate_creds(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
721 relyingParty[CredentialManagement.RESULT.RP_ID_HASH]
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
722 ):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
723 credentials[relyingPartyId].append(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
724 {
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725 "credentialId": credential[
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
726 CredentialManagement.RESULT.CREDENTIAL_ID
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
727 ],
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
728 "userId": credential[CredentialManagement.RESULT.USER][
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
729 "id"
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
730 ],
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
731 "userName": credential[
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
732 CredentialManagement.RESULT.USER
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
733 ].get("name", ""),
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
734 "displayName": credential[
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
735 CredentialManagement.RESULT.USER
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
736 ].get("displayName", ""),
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
737 }
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
738 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
740 return (
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
741 credentials,
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
742 data.get(CredentialManagement.RESULT.EXISTING_CRED_COUNT),
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 data.get(CredentialManagement.RESULT.MAX_REMAINING_COUNT),
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
744 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
745
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
746 def deletePasskey(self, pin, credentialId):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
747 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
748 Public method to delete the passkey of the given ID.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 @param pin PIN to unlock the connected security key
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
752 @param credentialId ID of the passkey to be deleted
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
753 @type fido2.webauthn.PublicKeyCredentialDescriptor
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
754 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
755 credentialManager = self.__initializeCredentialManager(pin)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
756 credentialManager.delete_cred(cred_id=credentialId)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
757
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
758 def changePasskeyUserInfo(self, pin, credentialId, userId, userName, displayName):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 Public method to change the user info of a stored passkey.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
762 @param pin PIN to unlock the connected security key
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 @param credentialId ID of the passkey to change
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 @type fido2.webauthn.PublicKeyCredentialDescriptor
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766 @param userId ID of the user
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
767 @type bytes
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
768 @param userName user name to set
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
769 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
770 @param displayName display name to set
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
771 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
772 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
773 userInfo = PublicKeyCredentialUserEntity(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774 name=userName, id=userId, display_name=displayName
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
775 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
776 credentialManager = self.__initializeCredentialManager(pin)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
777 credentialManager.update_user_info(cred_id=credentialId, user_info=userInfo)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
778
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
779 def __initializeCredentialManager(self, pin):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
780 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781 Private method to initialize a credential manager object.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783 @param pin PIN to unlock the connected security key
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
784 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 @return reference to the credential manager object
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
786 @rtype CredentialManagement
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
787 @exception Fido2DeviceError raised to indicate an issue with the selected
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
788 security key
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
789 @exception Fido2PinError raised to indicate an issue with the PIN
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
790 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
791 if self.__clientPin is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
792 self.__clientPin = ClientPin(self.__ctap2)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
794 if pin == "":
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
795 pin = self.__pin
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
796 if pin is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
797 # Error
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
798 raise Fido2PinError(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
799 self.tr(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
800 "The selected security key is not unlocked or no PIN was entered."
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
801 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
802 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
803
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
804 try:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
805 pinToken = self.__clientPin.get_pin_token(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
806 pin, ClientPin.PERMISSION.CREDENTIAL_MGMT
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
807 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
808 except CtapError as err:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
809 raise Fido2PinError(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
810 self.tr("PIN error: {0}").format(self.__pinErrorMessage(err))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
811 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
812 except OSError:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
813 raise Fido2DeviceError(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
814 self.tr("Connected security key unplugged. Reinsert and try again.")
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
815 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
816
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
817 return CredentialManagement(self.__ctap2, self.__clientPin.protocol, pinToken)
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
818
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
819 ############################################################################
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
820 ## methods related to configuration handling
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
821 ############################################################################
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
822
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
823 def __initConfig(self, pin):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
824 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
825 Private method to initialize a configuration object.
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
826
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
827 @param pin PIN to unlock the connected security key
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
828 @type str
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
829 @return reference to the configuration object
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
830 @rtype Config
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
831 @exception Fido2DeviceError raised to indicate an issue with the selected
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
832 security key
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
833 @exception Fido2PinError raised to indicate an issue with the PIN
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
834 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
835 if self.__clientPin is None:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
836 self.__clientPin = ClientPin(self.__ctap2)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
837
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
838 if pin == "":
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
839 pin = self.__pin
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
840 if pin is None:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
841 # Error
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
842 raise Fido2PinError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
843 self.tr(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
844 "The selected security key is not unlocked or no PIN was entered."
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
845 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
846 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
847
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
848 if not Config.is_supported(self.__ctap2.info):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
849 raise Fido2DeviceError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
850 self.tr("The selected security key does not support configuration.")
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
851 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
852
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
853 try:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
854 pinToken = self.__clientPin.get_pin_token(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
855 pin, ClientPin.PERMISSION.AUTHENTICATOR_CFG
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
856 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
857 except CtapError as err:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
858 raise Fido2PinError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
859 self.tr("PIN error: {0}").format(self.__pinErrorMessage(err))
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
860 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
861 except OSError:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
862 raise Fido2DeviceError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
863 self.tr("Connected security key unplugged. Reinsert and try again.")
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
864 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
865
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
866 return Config(self.__ctap2, self.__clientPin.protocol, pinToken)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
867
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
868 def forcePinChangeSupported(self):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
869 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
870 Public method to check, if the 'forcePinChange' function is supported by the
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
871 selected security key.
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
872
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
873 @return flag indicating support
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
874 @rtype bool
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
875 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
876 if (
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
877 self.__ctap2 is None
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
878 or self.__ctap2.info is None
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
879 or not self.__ctap2.info.options.get("setMinPINLength")
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
880 ):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
881 return False
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
882 else:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
883 return True
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
884
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
885 def forcePinChange(self, pin):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
886 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
887 Public method to force the PIN to be changed to a new value before use.
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
888
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
889 @param pin PIN to unlock the connected security key
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
890 @type str
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
891 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
892 config = self.__initConfig(pin)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
893 config.set_min_pin_length(force_change_pin=True)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
894 self.reconnectToDevice()
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
895
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
896 def canSetMinimumPinLength(self):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
897 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
898 Public method to check, if the 'setMinPINLength' function is available.
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
899
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
900 @return flag indicating availability
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
901 @rtype bool
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
902 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
903 if (
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
904 self.__ctap2 is None
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
905 or self.__ctap2.info is None
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
906 or not self.__ctap2.info.options.get("setMinPINLength")
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
907 or (
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
908 self.__ctap2.info.options.get("alwaysUv")
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
909 and not self.__ctap2.info.options.get("clientPin")
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
910 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
911 ):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
912 return False
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
913 else:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
914 return True
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
915
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
916 def setMinimumPinLength(self, pin, minLength):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
917 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
918 Public method to set the minimum PIN length.
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
919
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
920 @param pin PIN to unlock the connected security key
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
921 @type str
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
922 @param minLength minimum PIN length
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
923 @type int
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
924 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
925 if minLength < 4 or minLength > 63:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
926 raise Fido2PinError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
927 self.tr("The minimum PIN length must be between 4 and 63.")
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
928 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
929 if minLength < self.__ctap2.info.min_pin_length:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
930 raise Fido2PinError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
931 self.tr("The minimum PIN length must be at least {0}.").format(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
932 self.__ctap2.info.min_pin_length
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
933 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
934 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
935
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
936 config = self.__initConfig(pin)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
937 config.set_min_pin_length(min_pin_length=minLength)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
938 self.reconnectToDevice()
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
939
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
940 def canToggleAlwaysUv(self):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
941 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
942 Public method to check, if the 'toggleAlwaysUv' function is available.
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
943
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
944 @return flag indicating availability
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
945 @rtype bool
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
946 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
947 if (
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
948 self.__ctap2 is None
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
949 or self.__ctap2.info is None
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
950 or "alwaysUv" not in self.__ctap2.info.options
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
951 ):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
952 return False
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
953 else:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
954 return True
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
955
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
956 def getAlwaysUv(self):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
957 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
958 Public method to get the value of the 'alwaysUv' flag of the current security
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
959 key.
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
960 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
961 if self.__ctap2 is None:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
962 return False
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
963
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
964 info = self.__ctap2.get_info()
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
965 return info is not None and info.options.get("alwaysUv", False)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
966
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
967 def toggleAlwaysUv(self, pin):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
968 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
969 Public method to toggle the 'alwaysUv' flag of the selected security key.
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
970
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
971 @param pin PIN to unlock the connected security key
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
972 @type str
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
973 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
974 config = self.__initConfig(pin)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
975 config.toggle_always_uv()
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
976 self.reconnectToDevice()

eric ide

mercurial