diff --git a/safe_cli/operators/hw_accounts/ledger_manager.py b/safe_cli/operators/hw_accounts/ledger_manager.py index 14aba719..643d4edf 100644 --- a/safe_cli/operators/hw_accounts/ledger_manager.py +++ b/safe_cli/operators/hw_accounts/ledger_manager.py @@ -73,6 +73,10 @@ def add_account(self, derivation_path: str) -> ChecksumAddress: :param derivation_path: :return: """ + # we should accept m/ or m'/ starting derivation paths + if derivation_path[0:2] == "m/": + derivation_path = derivation_path.replace("m/", "") + if not is_bip32_path(derivation_path): raise InvalidDerivationPath() diff --git a/tests/test_ledger_manager.py b/tests/test_ledger_manager.py index 487255c9..f0fc5411 100644 --- a/tests/test_ledger_manager.py +++ b/tests/test_ledger_manager.py @@ -153,6 +153,11 @@ def test_add_account(self, mock_get_account_by_path: MagicMock): ledger_account = list(ledger_manager.accounts)[0] self.assertEqual(ledger_account.address, account_address) self.assertEqual(ledger_account.path, derivation_path) + # Should accept derivation paths starting with master + master_derivation_path = "m/44'/60'/0'/0" + self.assertEqual( + ledger_manager.add_account(master_derivation_path), account_address + ) def test_delete_account(self): ledger_manager = LedgerManager()