commit 02f5b2a2f855cff4f9a0c72a12871ded0dd67fc8
parent 57ab42a263eaf7c535000d682da2f1c850ac4b9c
Author: Carlosokumu <carlosokumu254@gmail.com>
Date: Sun, 15 Mar 2026 17:46:03 +0300
read passphrase for encrypted key
Diffstat:
3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/dummy/usawa/config.py b/dummy/usawa/config.py
@@ -24,6 +24,12 @@ def load():
valkey_port = save_data_path("usawa")
cfg.add(valkey_port, "VALKEY_PORT")
+ if "WALLET_KEY_PASSPHRASE" in cfg.store:
+ passphrase = cfg.get("WALLET_KEY_PASSPHRASE")
+ else:
+ passphrase = save_data_path("usawa")
+ cfg.add(passphrase, "WALLET_KEY_PASSPHRASE")
+
if "SERVER_SOCKET_FILE_PATH" in cfg.store:
socket_file_path = cfg.get("SERVER_SOCKET_FILE_PATH")
else:
diff --git a/dummy/usawa/gui/components/wallet_setup.py b/dummy/usawa/gui/components/wallet_setup.py
@@ -120,6 +120,7 @@ class ImportWalletDialog(Adw.Dialog):
self.spinner.start()
passphrase = self.passphrase_row.get_text()
+ self.passphrase = passphrase
threading.Thread(
target=self._run_decrypt,
diff --git a/dummy/usawa/storage/ledger_repository.py b/dummy/usawa/storage/ledger_repository.py
@@ -91,7 +91,10 @@ class LedgerRepository:
self.store = LedgerStore(self.valkey_store, ledger)
if self._wallet is not None:
try:
- self.store.get_key(wallet_class=UsawaWallet)
+ self.store.get_key(
+ wallet_class=UsawaWallet,
+ passphrase=self.cfg.get("WALLET_KEY_PASSPHRASE"),
+ )
logg.info("wallet already in store, skipping add_key")
except FileNotFoundError:
logg.info("persisting wallet to store")
@@ -111,7 +114,10 @@ class LedgerRepository:
self.store = LedgerStore(self.valkey_store, ledger)
if self._wallet is not None:
try:
- self.store.get_key(wallet_class=UsawaWallet)
+ self.store.get_key(
+ wallet_class=UsawaWallet,
+ passphrase=self.cfg.get("WALLET_KEY_PASSPHRASE"),
+ )
except FileNotFoundError:
logg.info("persisting wallet to store")
self.store.add_key(self._wallet)
@@ -187,12 +193,13 @@ class LedgerRepository:
logg.debug(f"Failed to save entry: {e}", exc_info=True)
raise
- def save_wallet(self, wallet):
+ def save_wallet(self, wallet, passphrase):
"""Persist wallet to store so it can be retrieved on subsequent launches."""
ledger_tree = load(self.ledger_path)
ledger = Ledger.from_tree(ledger_tree)
self.store = LedgerStore(self.valkey_store, ledger)
- self.store.add_key(wallet)
+ logg.info("adding key with passphrase: %s", passphrase)
+ self.store.add_key(wallet=wallet, passphrase=passphrase)
logg.info(
"wallet persisted to store, pubkey: %s...", wallet.pubkey().hex()[:16]
)
@@ -242,6 +249,9 @@ class LedgerRepository:
try:
ledger = self.store.ledger
+ for k in ledger.entries:
+ self.resolver.put_entry(ledger.entries[k], lookup="sha512")
+
tree = ledger.to_tree()
output_file = Path(output_path)
output_file.parent.mkdir(parents=True, exist_ok=True)