From 7b6d08dd95d57a6fde7ffcda162954da47402395 Mon Sep 17 00:00:00 2001 From: Moul <moul@moul.re> Date: Fri, 22 Sep 2023 21:18:58 +0200 Subject: [PATCH] Raise exception when no password is passed with EWIF format --- duniterpy/key/__init__.py | 2 +- duniterpy/key/signing_key.py | 4 +++- tests/key/test_signing_key.py | 12 +++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/duniterpy/key/__init__.py b/duniterpy/key/__init__.py index ff6eb1c..9a84db9 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 95f23ad..71a6dc5 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 b2589b3..e3326e2 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" -- GitLab