src/eric7/WebBrowser/WebAuth/Fido2PinDialog.py

Fri, 19 Jul 2024 18:06:48 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 19 Jul 2024 18:06:48 +0200
branch
eric7
changeset 10854
30c45bd597e6
child 10856
b19cefceca15
permissions
-rw-r--r--

Started implementing a dialog to manage FIDO2 security keys.

10854
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 #
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 Module implementing a dialog to enter the current and potentially new PIN.
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
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 import enum
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtCore import pyqtSlot
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QLineEdit
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from eric7.EricGui import EricPixmapCache
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from .Ui_Fido2PinDialog import Ui_Fido2PinDialog
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
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 class Fido2PinDialogMode(enum.Enum):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 Class defining the various PIN dialog mode.
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
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 GET = 0
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 SET = 1
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 CHANGE = 2
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
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 class Fido2PinDialog(QDialog, Ui_Fido2PinDialog):
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 Class implementing a dialog to enter the current and potentially new PIN.
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 def __init__(self, mode, title, message, minLength, parent=None):
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 Constructor
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 @param mode mode of the dialog
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type Fido2PinDialogMode
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param title header title to be shown
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @param message more decriptive text to be shown
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @type str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @param minLength minimum PIN length
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @type int
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @param parent reference to the parent widget (defaults to None)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @type QWidget (optional)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 super().__init__(parent)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.setupUi(self)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.pinButton.setIcon(EricPixmapCache.getIcon("showPassword"))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.newPinButton.setIcon(EricPixmapCache.getIcon("showPassword"))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__minLength = minLength
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__mode = mode
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 if title:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.headerLabel.setText(f"<b>{title}</b>")
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.headerLabel.setVisible(False)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 if message:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.descriptionLabel.setText(message)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.descriptionLabel.setVisible(False)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.pinErrorLabel.setVisible(False)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 if mode == Fido2PinDialogMode.GET:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.newPinGroupBox.setVisible(False)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 elif mode == Fido2PinDialogMode.SET:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.pinLabel.setVisible(False)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.pinEdit.setVisible(False)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.pinButton.setVisible(False)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 elif mode == Fido2PinDialogMode.CHANGE:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 # all entries visible
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 pass
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.pinEdit.textEdited.connect(self.__checkPins)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.newPinEdit.textEdited.connect(self.__checkPins)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.confirmNewPinEdit.textEdited.connect(self.__checkPins)
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.__checkPins()
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 @pyqtSlot()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 def __checkPins(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 Private slot to check the entered PIN(s).
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 Appropriate error messages are shown in case of issues and the state of
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 the OK button is set accordingly.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 messages = []
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 if (
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 self.__mode in (Fido2PinDialogMode.GET, Fido2PinDialogMode.CHANGE)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 and not self.pinEdit.text()
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 messages.append(self.tr("PIN must not be empty."))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 if self.__mode in (Fido2PinDialogMode.SET, Fido2PinDialogMode.CHANGE):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 if len(self.newPinEdit.text()) < self.__minLength:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 messages.append(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.tr("New PIN is TOO short (minimum length: {0}).").format(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__minLength
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 )
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 if (
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.confirmNewPinEdit.isVisible()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 and self.confirmNewPinEdit.text() != self.newPinEdit.text()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 ):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 messages.append("New PIN confirmation does not match.")
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 if (
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.__mode == Fido2PinDialogMode.CHANGE
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 and self.pinEdit.text() == self.newPinEdit.text()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 ):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 messages.append(self.tr("Old and new PIN must not be identical."))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 self.__showPinErrors(messages)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 not bool(messages)
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
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 def __showPinErrors(self, errorMessages):
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 Private method to show some error messages.
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 @param errorMessages list of error messages
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 @type list of str
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 if not errorMessages:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 self.pinErrorLabel.clear()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 self.pinErrorLabel.setVisible(False)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 if len(errorMessages) == 1:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 msg = errorMessages[0]
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 msg = "<ul><li>{0}</li></ul>".format("</li><li>".join(errorMessages))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 self.pinErrorLabel.setText(msg)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 self.pinErrorLabel.setVisible(True)
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 self.adjustSize()
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 @pyqtSlot(bool)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 def on_pinButton_toggled(self, checked):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 Private slot to handle the toggling of the PIN visibility.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 @param checked state of the PIN visibility button
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 @type bool
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 if checked:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 self.pinButton.setIcon(EricPixmapCache.getIcon("hidePassword"))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 self.pinEdit.setEchoMode(QLineEdit.EchoMode.Normal)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 self.pinButton.setIcon(EricPixmapCache.getIcon("showPassword"))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.pinEdit.setEchoMode(QLineEdit.EchoMode.Password)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 @pyqtSlot(bool)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 def on_newPinButton_toggled(self, checked):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 Private slot to handle the toggling of the new PIN visibility.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 @param checked state of the new PIN visibility button
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 @type bool
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 if checked:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 self.newPinButton.setIcon(EricPixmapCache.getIcon("hidePassword"))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 self.newPinEdit.setEchoMode(QLineEdit.EchoMode.Normal)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 self.newPinButton.setIcon(EricPixmapCache.getIcon("showPassword"))
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 self.newPinEdit.setEchoMode(QLineEdit.EchoMode.Password)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 self.confirmnewPinLabel.setVisible(not checked)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 self.confirmPinnewEdit.setVisible(not checked)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.on_newPinEdit_textEdited(self.newPinEdit.text())
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 def getPins(self):
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 Public method to get the entered PINs.
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @return tuple containing the current and new PIN
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 @rtype tuple of (str, str)
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 """
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 if self.__mode == Fido2PinDialogMode.GET:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 return self.pinEdit.text(), None
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 elif self.__mode == Fido2PinDialogMode.SET:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 return None, self.newPinEdit.text()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 elif self.__mode == Fido2PinDialogMode.GET:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 return self.pinEdit.text(), self.newPinEdit.text()
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 else:
30c45bd597e6 Started implementing a dialog to manage FIDO2 security keys.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 return None, None

eric ide

mercurial