src/eric7/WebBrowser/WebAuth/Fido2Management.py

Sat, 26 Apr 2025 12:34:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Apr 2025 12:34:32 +0200
branch
eric7
changeset 11240
c48c615c04a3
parent 11090
f5f5f5803935
permissions
-rw-r--r--

MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.

10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10863
diff changeset
2 # Copyright (c) 2024 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
10854
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 = (
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
172 self.tr("PIN is disabled and must be changed before it can be used!")
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
173 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
174 else ""
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
175 )
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
176 pinRetries, powerCycle = self.getPinRetries()
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
177 if pinRetries:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
178 if powerCycle:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
179 msg = self.tr(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
180 "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
181 " security keyto unblock it."
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
182 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
183 else:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
184 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
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("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
187 if msg1:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
188 msg += "\n" + msg1
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
189 else:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
190 msg = self.tr("A PIN has not been set.")
10863
88c6e062aa76 Refined a display string in the FIDO2 security key management tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10859
diff changeset
191 data["pin"].append((self.tr("PIN Status"), msg))
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
192
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
193 data["pin"].append(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
194 (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
195 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
196
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
197 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
198 msg = (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
199 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
200 if alwaysUv is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
201 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
202 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
203 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
204
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
205 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
206 if remainingPasskeys is not None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
207 data["pin"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
208 (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
209 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
210
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
211 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
212 if enterprise is not None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
213 data["pin"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
214 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
215 self.tr("Enterprise Attestation"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
216 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
217 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
218 )
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 # security key related data
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
221 data["security_key"].extend(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
222 [
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
223 (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
224 (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
225 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
226 self.tr("Version"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
227 ".".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
228 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
229 (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
230 (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
231 ]
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
232 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
233 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
234 if serial is not None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
235 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
236 data["security_key"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
237 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
238 self.tr("Supported Versions"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
239 "\n".join(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
240 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
241 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
242 )
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 data["security_key"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
245 (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
246 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
247
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
248 # extensions data
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
249 if self.__ctap2.info.extensions:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
250 for ext in self.FidoExtension2Str:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
251 data["extensions"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
252 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
253 self.FidoExtension2Str[ext],
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.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
256 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
257 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
258 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
259 )
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 # options data
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
263 options = self.__ctap2.info.options
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
264 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
265 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
266 self.tr("Is Platform Device"),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
267 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
268 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
269 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
270 data["options"].append(
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 self.tr("Resident Passkeys"),
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("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
275 if options.get("rk", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
276 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
277 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
278 )
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 cp = options.get("clientPin")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
281 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
282 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
283 self.tr("Client PIN"),
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("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
286 if cp is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
287 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
288 self.tr("supported, PIN set")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
289 if cp is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
290 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
291 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
292 ),
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 data["options"].append(
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 self.tr("Detect User Presence"),
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("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
300 if options.get("up", True)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
301 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
302 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
303 )
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 uv = options.get("uv")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
306 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
307 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
308 self.tr("User Verification"),
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("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
311 if uv is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
312 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
313 self.tr("supported, configured")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
314 if uv is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
315 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
316 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
317 ),
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 data["options"].append(
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 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
323 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
324 self.tr("available")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
325 if options.get("pinUvAuthToken", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
326 else self.tr("not available")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
327 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
328 )
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 data["options"].append(
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 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
333 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
334 self.tr("available")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
335 if options.get("noMcGaPermissionsWithClientPin", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
336 else self.tr("not available")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
337 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
338 )
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 data["options"].append(
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 self.tr("Large BLOBs"),
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("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
345 if options.get("largeBlobs", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
346 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
347 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
348 )
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 ep = options.get("ep")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
351 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
352 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
353 self.tr("Enterprise Attestation"),
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("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
356 if ep is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
357 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
358 self.tr("supported, enabled")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
359 if ep is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
360 else self.tr("supported, disabled")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
361 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
362 ),
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 be = options.get("bioEnroll")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
366 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
367 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
368 self.tr("Fingerprint"),
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("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
371 if be is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
372 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
373 self.tr("supported, registered")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
374 if be is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
375 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
376 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
377 ),
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 uvmp = options.get("userVerificationMgmtPreview")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
381 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
382 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
383 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
384 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
385 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
386 if uvmp is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
387 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
388 self.tr("supported, registered")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
389 if uvmp is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
390 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
391 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
392 ),
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 data["options"].append(
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 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
398 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
399 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
400 if options.get("uvBioEnroll", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
401 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
402 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
403 )
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 data["options"].append(
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 self.tr("Security Key Configuration"),
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("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
410 if options.get("authnrCfg", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
411 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
412 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
413 )
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 data["options"].append(
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 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
418 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
419 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
420 if options.get("uvAcfg", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
421 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
422 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
423 )
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 data["options"].append(
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 self.tr("Credential Management"),
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("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
430 if options.get("credMgmt", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
431 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
432 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
433 )
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 data["options"].append(
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 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
438 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
439 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
440 if options.get("credentialMgmtPreview", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
441 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
442 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
443 )
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 data["options"].append(
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 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
448 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
449 self.tr("supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
450 if options.get("setMinPINLength", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
451 else self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
452 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
453 )
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 data["options"].append(
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 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
458 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
459 self.tr("allowed")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
460 if options.get("makeCredUvNotRqd", False)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
461 else self.tr("not allowed")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
462 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
463 )
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 auv = options.get("alwaysUv")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
466 data["options"].append(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
467 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
468 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
469 (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
470 self.tr("not supported")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
471 if auv is None
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
472 else (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
473 self.tr("supported, enabled")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
474 if auv is True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
475 else self.tr("supported, disabled")
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
476 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
477 ),
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 return data
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 def resetDevice(self):
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 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
486
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
487 @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
488 @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
489 """
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
490 if self.__ctap2 is None:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
491 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
492
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
493 removed = False
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
494 startTime = time.monotonic()
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
495 while True:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
496 QThread.msleep(500)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
497 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
498 securityKeys = self.getDevices()
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
499 except OSError:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
500 securityKeys = []
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
501 if not securityKeys:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
502 removed = True
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
503 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
504 ctap2 = Ctap2(securityKeys[0])
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
505 break
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
506 if time.monotonic() - startTime >= 30:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
507 return False, self.tr(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
508 "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
509 " within 30 seconds."
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
510 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
511
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
512 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
513 ctap2.reset()
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
514 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
515 except CtapError as err:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
516 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
517 msg = self.tr(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
518 "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
519 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
520 elif err.code in (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
521 CtapError.ERR.NOT_ALLOWED,
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
522 CtapError.ERR.PIN_AUTH_BLOCKED,
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
523 ):
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
524 msg = self.tr(
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
525 "Reset must be triggered within 5 seconds after the security"
10858
8a03d5f6146c Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10857
diff changeset
526 " key is inserted."
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
527 )
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
528 else:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
529 msg = str(err)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
530
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
531 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
532 except Exception:
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.")
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 ############################################################################
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 ## methods related to PIN handling
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
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 def getMinimumPinLength(self):
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 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
542
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 @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
544 @rtype int
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 if self.__ctap2 is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 return None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 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
550
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 def hasPin(self):
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 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
554
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 @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
556 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
557 @rtype bool or None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 if self.__ctap2 is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 return None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 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
563
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
564 def pinChangeRequired(self):
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 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
567
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 @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
569 @rtype bool
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 if self.__ctap2 is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 return False
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 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
575
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 def getPinRetries(self):
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 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
579 need of a power cycle.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 @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
582 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
583 set yet.
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 @rtype tuple of (int, bool)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 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
587 return (None, None)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
589 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
590 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
591 except CtapError as err:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
592 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
593 # 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
594 return (-1, False)
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
596 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
597 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 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
599
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
600 @param oldPin current PIN
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 @param newPin new PIN
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 @type str
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
604 @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
605 @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
606 """
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
607 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
608 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
609
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
610 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
611 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
612 self.reconnectToDevice()
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
613 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
614 except CtapError as err:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
615 return (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
616 False,
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
617 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
618 self.__pinErrorMessage(err)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
619 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
620 )
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 def setPin(self, pin):
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 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
625
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 @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
627 @type str
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
628 @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
629 @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
630 """
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
631 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
632 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
633
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
634 try:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
635 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
636 self.reconnectToDevice()
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
637 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
638 except CtapError as err:
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
639 return (
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
640 False,
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
641 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
642 self.__pinErrorMessage(err)
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
643 ),
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
644 )
10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 def verifyPin(self, pin):
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 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
649
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 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
651
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
652 @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
653 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 @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
655 @rtype tuple of (bool, str)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 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
658 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
659
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660 try:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 self.__clientPin.get_pin_token(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 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
663 )
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
664 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
665 except CtapError as err:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 return (
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 False,
10856
b19cefceca15 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10854
diff changeset
668 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
669 self.__pinErrorMessage(err)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
670 ),
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
671 )
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 def __pinErrorMessage(self, err):
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 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
676
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 @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
678 @type CtapError
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 @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
680 @rtype str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682 errorCode = err.code
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 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
684 msg = self.tr("Invalid PIN")
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 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
686 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
687 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
688 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
689 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
690 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
691 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 msg = str(err)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 return msg
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 ############################################################################
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 ## 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
697 ############################################################################
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
699 def getPasskeys(self, pin):
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 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
702
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 @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
704 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
705 @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
706 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
707 of available credential slots
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708 @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
709 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 credentials = {}
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 credentialManager = self.__initializeCredentialManager(pin)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713 data = credentialManager.get_metadata()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
714 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
715 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
716 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
717 credentials[relyingPartyId] = []
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718 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
719 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
720 ):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
721 credentials[relyingPartyId].append(
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 "credentialId": credential[
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
724 CredentialManagement.RESULT.CREDENTIAL_ID
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725 ],
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
726 "userId": credential[CredentialManagement.RESULT.USER][
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
727 "id"
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
728 ],
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
729 "userName": credential[
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
730 CredentialManagement.RESULT.USER
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
731 ].get("name", ""),
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
732 "displayName": credential[
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
733 CredentialManagement.RESULT.USER
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
734 ].get("displayName", ""),
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
735 }
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
736 )
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 return (
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739 credentials,
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
740 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
741 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
742 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
744 def deletePasskey(self, pin, credentialId):
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 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
747
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
748 @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
749 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 @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
751 @type fido2.webauthn.PublicKeyCredentialDescriptor
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
752 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
753 credentialManager = self.__initializeCredentialManager(pin)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
754 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
755
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
756 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
757 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
758 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
759
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 @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
761 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
762 @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
763 @type fido2.webauthn.PublicKeyCredentialDescriptor
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 @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
765 @type bytes
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766 @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
767 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
768 @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
769 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
770 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
771 userInfo = PublicKeyCredentialUserEntity(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
772 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
773 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774 credentialManager = self.__initializeCredentialManager(pin)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
775 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
776
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
777 def __initializeCredentialManager(self, pin):
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 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
780
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781 @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
782 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783 @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
784 @rtype CredentialManagement
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 @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
786 security key
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
787 @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
788 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
789 if self.__clientPin is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
790 self.__clientPin = ClientPin(self.__ctap2)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
791
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
792 if pin == "":
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793 pin = self.__pin
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
794 if pin is None:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
795 # Error
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
796 raise Fido2PinError(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
797 self.tr(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
798 "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
799 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
800 )
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 try:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
803 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
804 pin, ClientPin.PERMISSION.CREDENTIAL_MGMT
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
805 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
806 except CtapError as err:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
807 raise Fido2PinError(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
808 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
809 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
810 except OSError:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
811 raise Fido2DeviceError(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
812 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
813 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
814
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
815 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
816
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
817 ############################################################################
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
818 ## methods related to configuration handling
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
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
821 def __initConfig(self, pin):
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 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
824
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
825 @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
826 @type str
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
827 @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
828 @rtype Config
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
829 @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
830 security key
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
831 @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
832 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
833 if self.__clientPin is None:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
834 self.__clientPin = ClientPin(self.__ctap2)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
835
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
836 if pin == "":
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
837 pin = self.__pin
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
838 if pin is None:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
839 # Error
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
840 raise Fido2PinError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
841 self.tr(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
842 "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
843 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
844 )
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 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
847 raise Fido2DeviceError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
848 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
849 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
850
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
851 try:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
852 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
853 pin, ClientPin.PERMISSION.AUTHENTICATOR_CFG
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
854 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
855 except CtapError as err:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
856 raise Fido2PinError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
857 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
858 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
859 except OSError:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
860 raise Fido2DeviceError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
861 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
862 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
863
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
864 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
865
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
866 def forcePinChangeSupported(self):
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 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
869 selected security key.
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
870
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
871 @return flag indicating support
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
872 @rtype bool
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
873 """
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
874 return not (
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
875 self.__ctap2 is None
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
876 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
877 or not self.__ctap2.info.options.get("setMinPINLength")
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
878 )
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
879
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
880 def forcePinChange(self, pin):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
881 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
882 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
883
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
884 @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
885 @type str
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 config = self.__initConfig(pin)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
888 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
889 self.reconnectToDevice()
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
890
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
891 def canSetMinimumPinLength(self):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
892 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
893 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
894
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
895 @return flag indicating availability
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
896 @rtype bool
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
897 """
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
898 return not (
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
899 self.__ctap2 is None
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
900 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
901 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
902 or (
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
903 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
904 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
905 )
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
906 )
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
907
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
908 def setMinimumPinLength(self, pin, minLength):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
909 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
910 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
911
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
912 @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
913 @type str
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
914 @param minLength minimum PIN length
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
915 @type int
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
916 @exception Fido2PinError raised to indicate an issue with the PIN length
10857
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 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
919 raise Fido2PinError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
920 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
921 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
922 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
923 raise Fido2PinError(
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
924 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
925 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
926 )
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
927 )
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 config = self.__initConfig(pin)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
930 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
931 self.reconnectToDevice()
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
932
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
933 def canToggleAlwaysUv(self):
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 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
936
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
937 @return flag indicating availability
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
938 @rtype bool
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
939 """
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
940 return not (
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
941 self.__ctap2 is None
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
942 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
943 or "alwaysUv" not in self.__ctap2.info.options
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
944 )
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
945
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
946 def getAlwaysUv(self):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
947 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
948 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
949 key.
10859
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
950
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
951 @return return value of the 'alwaysUv' flag
399d19fc7eb5 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10858
diff changeset
952 @rtype bool
10857
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
953 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
954 if self.__ctap2 is None:
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
955 return False
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
956
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
957 info = self.__ctap2.get_info()
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
958 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
959
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
960 def toggleAlwaysUv(self, pin):
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
961 """
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
962 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
963
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
964 @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
965 @type str
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 config = self.__initConfig(pin)
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
968 config.toggle_always_uv()
abcb288e7e17 Continued implementing the FIDO2 security key management interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10856
diff changeset
969 self.reconnectToDevice()

eric ide

mercurial