| 
					
				 | 
			
			
				@@ -1,4 +1,3 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import getpass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import shutil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import sys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from argparse import ArgumentTypeError 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -16,8 +15,6 @@ from ..helpers import popen_with_error_handling 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import iter_separated 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import is_slow_msgpack 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import classify_ec, max_ec 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from ..helpers.parseformat import bin_to_hex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from ..helpers.passphrase import Passphrase, PasswordRetriesExceeded 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..platform import is_cygwin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -295,86 +292,6 @@ def test_iter_separated(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     assert list(iter_separated(fd)) == items 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class TestPassphrase: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def test_passphrase_new_verification(self, capsys, monkeypatch): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setattr(getpass, "getpass", lambda prompt: "1234aöäü") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setenv("BORG_DISPLAY_PASSPHRASE", "no") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Passphrase.new() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        out, err = capsys.readouterr() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "1234" not in out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "1234" not in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setenv("BORG_DISPLAY_PASSPHRASE", "yes") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        passphrase = Passphrase.new() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        out, err = capsys.readouterr() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "3132333461c3b6c3a4c3bc" not in out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "3132333461c3b6c3a4c3bc" in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert passphrase == "1234aöäü" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setattr(getpass, "getpass", lambda prompt: "1234/@=") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Passphrase.new() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        out, err = capsys.readouterr() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "1234/@=" not in out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "1234/@=" in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def test_passphrase_new_empty(self, capsys, monkeypatch): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.delenv("BORG_PASSPHRASE", False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setattr(getpass, "getpass", lambda prompt: "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        with pytest.raises(PasswordRetriesExceeded): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Passphrase.new(allow_empty=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        out, err = capsys.readouterr() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "must not be blank" in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def test_passphrase_new_retries(self, monkeypatch): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.delenv("BORG_PASSPHRASE", False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ascending_numbers = iter(range(20)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setattr(getpass, "getpass", lambda prompt: str(next(ascending_numbers))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        with pytest.raises(PasswordRetriesExceeded): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Passphrase.new() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def test_passphrase_repr(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "secret" not in repr(Passphrase("secret")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def test_passphrase_wrong_debug(self, capsys, monkeypatch): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        passphrase = "wrong_passphrase" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setenv("BORG_DEBUG_PASSPHRASE", "YES") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setenv("BORG_PASSPHRASE", "env_passphrase") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setenv("BORG_PASSCOMMAND", "command") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setenv("BORG_PASSPHRASE_FD", "fd_value") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Passphrase.display_debug_info(passphrase) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        out, err = capsys.readouterr() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "Incorrect passphrase!" in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert passphrase in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert bin_to_hex(passphrase.encode("utf-8")) in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert 'BORG_PASSPHRASE = "env_passphrase"' in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert 'BORG_PASSCOMMAND = "command"' in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert 'BORG_PASSPHRASE_FD = "fd_value"' in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.delenv("BORG_DEBUG_PASSPHRASE", raising=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Passphrase.display_debug_info(passphrase) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        out, err = capsys.readouterr() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert "Incorrect passphrase!" not in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert passphrase not in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def test_verification(self, capsys, monkeypatch): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        passphrase = "test_passphrase" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        hex_value = passphrase.encode("utf-8").hex() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setenv("BORG_DISPLAY_PASSPHRASE", "no") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Passphrase.verification(passphrase) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        out, err = capsys.readouterr() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert passphrase not in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monkeypatch.setenv("BORG_DISPLAY_PASSPHRASE", "yes") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Passphrase.verification(passphrase) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        out, err = capsys.readouterr() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert passphrase in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        assert hex_value in err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @pytest.mark.parametrize( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     "ec_range,ec_class", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ( 
			 |