Skip to content
Snippets Groups Projects
Select Git revision
  • 605274fb00625b51f7a3dd3031bded9f1b3078f5
  • master default protected
  • network/gtest-1000 protected
  • upgradable-multisig
  • runtime/gtest-1000
  • network/gdev-800 protected
  • cgeek/issue-297-cpu
  • gdev-800-tests
  • update-docker-compose-rpc-squid-names
  • fix-252
  • 1000i100-test
  • hugo/tmp-0.9.1
  • network/gdev-803 protected
  • hugo/endpoint-gossip
  • network/gdev-802 protected
  • hugo/distance-precompute
  • network/gdev-900 protected
  • tuxmain/anonymous-tx
  • debug/podman
  • hugo/195-doc
  • hugo/195-graphql-schema
  • gtest-1000-0.11.0 protected
  • gtest-1000 protected
  • gdev-900-0.10.1 protected
  • gdev-900-0.10.0 protected
  • gdev-900-0.9.2 protected
  • gdev-800-0.8.0 protected
  • gdev-900-0.9.1 protected
  • gdev-900-0.9.0 protected
  • gdev-803 protected
  • gdev-802 protected
  • runtime-801 protected
  • gdev-800 protected
  • runtime-800-bis protected
  • runtime-800 protected
  • runtime-800-backup protected
  • runtime-701 protected
  • runtime-700 protected
  • runtime-600 protected
  • runtime-500 protected
  • v0.4.1 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