def ok(self): # Data validation # # Check old password: if self.oldPassphraseLE.isEnabled(): if not self.settings.unlockMasterKey(self.oldPassphraseLE.text()): self.validationWarning('The old passphrase is not correct.') return # Match between old and new if self.newPassphraseLE.text() != self.repeatPassphraseLE.text(): self.validationWarning('The new passphrases do not match.') return # Password complexity new_password = self.newPassphraseLE.text() if new_password == '' or password_strength.PasswordStats( new_password).strength() < constants.PassphraseMinStrength: self.validationWarning('Passphrase is not complex enough.') return elif len(new_password) > constants.PassphraseMaxLen: self.validationWarning( 'Passphrase should contain at most %d characters.' % constants.PassphraseMaxLen) return super().ok()
def good_password(password=None): """Check the strength of the encryption password.""" if password is None or password == "": logger.error("Password empty or None.") return False policy = password_strength.PasswordPolicy.from_names(strength=0.66) check = policy.test(password) if check: strength = password_strength.PasswordStats(password).strength() logger.error("Password strength does not meet policy.\n" f" Strength: {strength}\n" f" Policy: {check[0].strength}\n" f" Details: https://pypi.org/project/password-strength/") return False return True
def clean(self, value): return pwd.PasswordStats(value).letters_uppercase
def clean(self, value): return pwd.PasswordStats(value).special_characters
def clean(self, value): return pwd.PasswordStats(value).length
def clean(self, value): return pwd.PasswordStats(value).numbers