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]
示例#3
0
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]