usawa

Signed, immutable accounting.
Log | Files | Refs | Submodules | LICENSE

commit 02f5b2a2f855cff4f9a0c72a12871ded0dd67fc8
parent 57ab42a263eaf7c535000d682da2f1c850ac4b9c
Author: Carlosokumu <carlosokumu254@gmail.com>
Date:   Sun, 15 Mar 2026 17:46:03 +0300

read passphrase for encrypted key

Diffstat:
Mdummy/usawa/config.py | 6++++++
Mdummy/usawa/gui/components/wallet_setup.py | 1+
Mdummy/usawa/storage/ledger_repository.py | 18++++++++++++++----
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)