예제 #1
0
 def cb(code):
     dialog.accept()
     if isinstance(code, Exception):
         QtGui.QMessageBox.warning(get_active_window(), m.error,
                                   code.message)
     else:
         self.code = code
    def calculate(self):
        window = get_active_window()
        dialog = QtGui.QMessageBox(window)
        dialog.setWindowTitle(m.touch_title)
        dialog.setStandardButtons(QtGui.QMessageBox.NoButton)
        dialog.setIcon(QtGui.QMessageBox.Information)
        dialog.setText(m.touch_desc)
        timer = None

        def cb(code):
            if timer:
                timer.stop()
            dialog.accept()
            if isinstance(code, Exception):
                QtGui.QMessageBox.warning(window, m.error, code.message)
            else:
                self.code = code

        self._controller._app.worker.post_bg(
            (self._controller._calculate_cred, self.cred), cb)
        if self.cred.touch:
            dialog.exec_()
        elif self.cred.oath_type == TYPE_HOTP:
            # HOTP might require touch, we don't know. Assume yes after 500ms.
            timer = QtCore.QTimer(window)
            timer.setSingleShot(True)
            timer.timeout.connect(dialog.exec_)
            timer.start(500)
예제 #3
0
    def calculate(self):
        dialog = QtGui.QMessageBox(get_active_window())
        dialog.setWindowTitle(m.touch_title)
        dialog.setStandardButtons(QtGui.QMessageBox.NoButton)
        dialog.setIcon(QtGui.QMessageBox.Information)
        dialog.setText(m.touch_desc)
        timer = None

        def cb(code):
            if timer:
                timer.stop()
            dialog.accept()
            if isinstance(code, Exception):
                QtGui.QMessageBox.warning(get_active_window(), m.error,
                                          code.message)
            else:
                self.code = code
        self._controller._app.worker.post_bg((self._controller._calculate_cred,
                                              self.cred), cb)
        if self.cred.touch:
            dialog.exec_()
        elif self.cred.oath_type == TYPE_HOTP:
            # HOTP might require touch, we don't know. Assume yes after 500ms.
            timer = QtCore.QTimer(self)
            timer.setSingleShot(True)
            timer.timeout.connect(dialog.exec_)
            timer.start(500)
예제 #4
0
 def cb(code):
     dialog.accept()
     if isinstance(code, Exception):
         QtGui.QMessageBox.warning(get_active_window(), m.error,
                                   code.message)
     else:
         self.code = code
예제 #5
0
 def _init_dev(self, dev):
     _lock = self.grab_lock()
     while dev.locked:
         if self._keystore.get(dev.id) is None:
             dialog = GetPasswordDialog(get_active_window())
             if dialog.exec_():
                 self._keystore.put(dev.id, dev.calculate_key(dialog.password), dialog.remember)
             else:
                 return
         try:
             dev.unlock(self._keystore.get(dev.id))
         except CardError:
             self._keystore.delete(dev.id)
     self.refresh_codes(self.timer.time, _lock)
 def _init_std(self, std):
     lock = self.grab_lock()
     while std.locked:
         if self._keystore.get(std.id) is None:
             dialog = GetPasswordDialog(get_active_window())
             if dialog.exec_():
                 self._keystore.put(std.id,
                                    std.calculate_key(dialog.password),
                                    dialog.remember)
             else:
                 return
         try:
             std.unlock(self._keystore.get(std.id))
         except CardError:
             self._keystore.delete(std.id)
     self.refresh_codes(self.timer.time, lock, std)
예제 #7
0
    def calculate(self):
        dialog = QtGui.QMessageBox(get_active_window())
        dialog.setWindowTitle(m.touch_title)
        dialog.setStandardButtons(QtGui.QMessageBox.NoButton)
        dialog.setIcon(QtGui.QMessageBox.Information)
        dialog.setText(m.touch_desc)

        def cb(code):
            dialog.accept()
            if isinstance(code, Exception):
                QtGui.QMessageBox.warning(get_active_window(), m.error, code.message)
            else:
                self.code = code

        self._controller._app.worker.post_bg((self._controller._calculate_touch, self._slot, self._digits), cb, True)
        dialog.exec_()
예제 #8
0
    def calculate(self):
        dialog = QtGui.QMessageBox(get_active_window())
        dialog.setWindowTitle(m.touch_title)
        dialog.setStandardButtons(QtGui.QMessageBox.NoButton)
        dialog.setIcon(QtGui.QMessageBox.Information)
        dialog.setText(m.touch_desc)

        def cb(code):
            dialog.accept()
            if isinstance(code, Exception):
                QtGui.QMessageBox.warning(get_active_window(), m.error,
                                          code.message)
            else:
                self.code = code

        self._controller._app.worker.post_bg(
            (self._controller._calculate_touch, self._slot, self._digits), cb,
            True)
        dialog.exec_()
예제 #9
0
 def _init_conn(self, conn):
     with self._lock:
         while conn.locked:
             if self._keystore.get(conn.id) is None:
                 dialog = GetPasswordDialog(get_active_window())
                 if dialog.exec_():
                     self._keystore.put(conn.id,
                                        conn.calculate_key(dialog.password),
                                        dialog.remember)
                 else:
                     return
             try:
                 conn.unlock(self._keystore.get(conn.id))
             except CardError as exc:
                 self._keystore.delete(conn.id)
                 if exc.status == 0x6a80:
                     # wrong syntax (bad password)
                     pass
                 else:
                     # unknown, don't retry
                     return
         self.refresh_codes(self.timer.time, conn)