def verify_passphrase_meets_requirements( new_passphrase: str, confirmation_passphrase: str) -> Tuple[bool, Optional[str]]: match = new_passphrase == confirmation_passphrase min_length = Keychain.minimum_passphrase_length() meets_len_requirement = len(new_passphrase) >= min_length if match and meets_len_requirement: return True, None elif not match: return False, "Passphrases do not match" elif not meets_len_requirement: return False, f"Minimum passphrase length is {min_length}" else: raise Exception("Unexpected passphrase verification case")
def prompt_for_new_passphrase() -> str: min_length: int = Keychain.minimum_passphrase_length() if min_length > 0: n = min_length print(f"\nPassphrases must be {n} or more characters in length" ) # lgtm [py/clear-text-logging-sensitive-data] while True: passphrase = tidy_passphrase(getpass("New Passphrase: ")) confirmation = tidy_passphrase(getpass("Confirm Passphrase: ")) valid_passphrase, error_msg = verify_passphrase_meets_requirements( passphrase, confirmation) if valid_passphrase: return passphrase elif error_msg: print(f"{error_msg}\n" ) # lgtm [py/clear-text-logging-sensitive-data]
def prompt_for_new_passphrase() -> Tuple[str, bool]: min_length: int = Keychain.minimum_passphrase_length() if min_length > 0: n = min_length print(f"\nPassphrases must be {n} or more characters in length" ) # lgtm [py/clear-text-logging-sensitive-data] while True: passphrase: str = getpass("New Passphrase: ") confirmation: str = getpass("Confirm Passphrase: ") save_passphrase: bool = False valid_passphrase, error_msg = verify_passphrase_meets_requirements( passphrase, confirmation) if valid_passphrase: if supports_os_passphrase_storage(): save_passphrase = prompt_to_save_passphrase() return passphrase, save_passphrase elif error_msg: print(f"{error_msg}\n" ) # lgtm [py/clear-text-logging-sensitive-data]