Browse Source
crypto.pw_decode: fix one case of raising incorrect exception
hard-fail-on-bad-server-string
SomberNight
5 years ago
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
2 changed files with
9 additions and
1 deletions
-
electrum/crypto.py
-
electrum/tests/test_bitcoin.py
|
|
@ -229,7 +229,10 @@ def pw_decode(data: str, password: Union[bytes, str, None], *, version: int) -> |
|
|
|
if password is None: |
|
|
|
return data |
|
|
|
plaintext_bytes = pw_decode_bytes(data, password, version=version) |
|
|
|
plaintext_str = to_string(plaintext_bytes, "utf8") |
|
|
|
try: |
|
|
|
plaintext_str = to_string(plaintext_bytes, "utf8") |
|
|
|
except UnicodeDecodeError as e: |
|
|
|
raise InvalidPassword() from e |
|
|
|
return plaintext_str |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -254,6 +254,11 @@ class Test_bitcoin(ElectrumTestCase): |
|
|
|
enc = crypto.pw_encode(payload, password, version=version) |
|
|
|
with self.assertRaises(InvalidPassword): |
|
|
|
crypto.pw_decode(enc, wrong_password, version=version) |
|
|
|
# sometimes the PKCS7 padding gets removed cleanly, |
|
|
|
# but then UnicodeDecodeError gets raised (internally): |
|
|
|
enc = 'smJ7j6ccr8LnMOlx98s/ajgikv9s3R1PQuG3GyyIMmo=' |
|
|
|
with self.assertRaises(InvalidPassword): |
|
|
|
crypto.pw_decode(enc, wrong_password, version=1) |
|
|
|
|
|
|
|
@needs_test_with_all_chacha20_implementations |
|
|
|
def test_chacha20_poly1305_encrypt(self): |
|
|
|