Sat, 26 Apr 2025 12:34:32 +0200
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() |