diff --git a/duniterpy/key/__init__.py b/duniterpy/key/__init__.py index ff6eb1c38e9b90b6e13588919d9430c673f0691b..9a84db976e7779878b47a90d65adf48925034df7 100644 --- a/duniterpy/key/__init__.py +++ b/duniterpy/key/__init__.py @@ -15,5 +15,5 @@ from .ascii_armor import AsciiArmor from .encryption_key import PublicKey, SecretKey -from .signing_key import SigningKey +from .signing_key import SigningKey, SigningKeyException from .verifying_key import VerifyingKey diff --git a/duniterpy/key/signing_key.py b/duniterpy/key/signing_key.py index 95f23ad21a863d5966e1819546c150fdc9d35f83..71a6dc5f5ec0373165eaa07cde678d9f3f378bc0 100644 --- a/duniterpy/key/signing_key.py +++ b/duniterpy/key/signing_key.py @@ -276,7 +276,9 @@ sec: {base58_signing_key}" if fi == b"\x01": result = SigningKey.from_wif_hex(wif_hex) - elif fi == b"\x02" and password is not None: + elif fi == b"\x02": + if password is None: + raise SigningKeyException("Error: no password provided with EWIF") result = SigningKey.from_ewif_hex(wif_hex, password) else: raise SigningKeyException("Error: Bad format: not WIF nor EWIF") diff --git a/tests/key/test_signing_key.py b/tests/key/test_signing_key.py index b2589b33498f8baa8a95782f2bb24b2b8454d5cf..e3326e2fca9cb0059b096c75568a51c335868a64 100644 --- a/tests/key/test_signing_key.py +++ b/tests/key/test_signing_key.py @@ -17,7 +17,9 @@ import base64 import os import unittest -from duniterpy.key import PublicKey, SigningKey, VerifyingKey +import pytest + +from duniterpy.key import PublicKey, SigningKey, SigningKeyException, VerifyingKey from duniterpy.key.scrypt_params import ScryptParams TEST_FILE_PATH = "/tmp/test_file.txt" @@ -101,6 +103,14 @@ class TestSigningKey(unittest.TestCase): sign_key_load = SigningKey.from_wif_or_ewif_file(TEST_FILE_PATH) self.assertEqual(sign_key_save.sk, sign_key_load.sk) + def test_load_ewif_file_without_password_raise_exception(self): + sign_key_save = SigningKey.from_credentials("alice", "password") + sign_key_save.save_ewif_file(TEST_FILE_PATH, "password") + + error = "Error: no password provided with EWIF" + with pytest.raises(SigningKeyException, match=error): + SigningKey.from_wif_or_ewif_file(TEST_FILE_PATH) + def test_load_credentials_file(self): salt = password = "test"