Skip to content
Snippets Groups Projects
Select Git revision
  • cbb2643ba50f1d335e2ee4f425a7ff064c4885a6
  • dev default protected
  • release/1.9.1 protected
  • pini-1.8-docker
  • pini-sync-onlypeers
  • duniter-v2s-issue-123-industrialize-releases
  • feature/build-aarch64-nodejs16
  • release/1.8 protected
  • pini-docker
  • ci_tags
  • fix/1448/1.8/txs_not_stored
  • feature/node-20
  • fix/1441/node_summary_with_storage
  • fix/1442/improve_bma_tx_history
  • feature/wotwizard-1.8
  • release/1.9 protected
  • 1.7 protected
  • feature/docker-set-latest protected
  • feature/fast-docker-build-1.8.4
  • fast-docker-build protected
  • feature/dump-distance
  • v1.8.7 protected
  • v1.8.7-rc4 protected
  • v1.8.7-rc3 protected
  • v1.8.7-rc2 protected
  • v1.8.7-rc1 protected
  • v1.8.6 protected
  • v1.7.23 protected
  • v1.8.5 protected
  • v1.8.4 protected
  • v1.8.3 protected
  • v1.8.2 protected
  • v1.8.1 protected
  • v1.8.0 protected
  • v1.8.0-rc1 protected
  • v1.8.0-beta5 protected
  • v1.8.0-beta4 protected
  • v1.8.0-beta3 protected
  • v1.8.0-beta2 protected
  • v1.8.0-beta protected
  • v1.7.21 protected
41 results

README.md

Blame
  • password_asker.py 2.01 KiB
    '''
    Created on 24 dec. 2014
    
    @author: inso
    '''
    
    import logging
    import unicodedata
    import re
    
    from PyQt5.QtWidgets import QDialog, QMessageBox
    
    from ..gen_resources.password_asker_uic import Ui_PasswordAskerDialog
    
    
    class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog):
    
        '''
        A dialog to get password.
        '''
    
        def __init__(self, account):
            '''
            Constructor
            '''
            super().__init__()
            self.setupUi(self)
            self.account = account
            self.password = ""
            self.remember = False
    
        def exec_(self):
            if not self.remember:
                super().exec_()
                pwd = self.password
                if not self.remember:
                    self.password = ""
                return pwd
            else:
                self.setResult(QDialog.Accepted)
                return self.password
    
        def accept(self):
            password = self.edit_password.text()
    
            if detect_non_printable(password):
                QMessageBox.warning(self, "Bad password",
                                    "Non printable characters in password",
                                    QMessageBox.Ok)
                return False
    
            if not self.account.check_password(password):
                QMessageBox.warning(self, "Failed to get private key",
                                    "Wrong password typed. Cannot open the private key",
                                    QMessageBox.Ok)
                return False
    
            self.remember = self.check_remember.isChecked()
            self.password = password
            self.edit_password.setText("")
            logging.debug("Password is valid")
            super().accept()
    
        def reject(self):
            self.edit_password.setText("")
            logging.debug("Cancelled")
            self.setResult(QDialog.Accepted)
            self.password = ""
            super().reject()
    
    
    def detect_non_printable(data):
        control_chars = ''.join(map(chr, list(range(0, 32)) + list(range(127, 160))))
        control_char_re = re.compile('[%s]' % re.escape(control_chars))
        if control_char_re.search(data):
            return True