usawa

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

commit cf8bde68450ed9c373461fdb84ad8a0f03d0505f
parent 0a5cccc3c47b22111820f75c588a30dec5bd2e8f
Author: lash <dev@holbrook.no>
Date:   Fri, 29 May 2026 17:32:05 -0600

Employ passphase getter, add test for multiple wallets in store

Diffstat:
Mdummy/requirements.txt | 2+-
Mdummy/setup.py | 2+-
Mdummy/tests/store.py | 17++++++++++++++++-
Mdummy/usawa/context.py | 6+++++-
4 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/dummy/requirements.txt b/dummy/requirements.txt @@ -5,7 +5,7 @@ pycparser==2.23 PyNaCl==1.6.0 python-gnupg==0.4.9 rencode==1.0.6 -wheepy[valkey,fs]~=0.0.6a1 +wheepy[valkey,fs]~=0.0.7a1 filemagic~=1.6 PyGObject~=3.52.3 xdg-base-dirs~=6.0.2 diff --git a/dummy/setup.py b/dummy/setup.py @@ -10,7 +10,7 @@ varints_dir = os.path.join(aux_dir, 'varints', 'varints') setup( install_requires=[ "filemagic~=1.6", - "wheepy[valkey,fs]~=0.0.6a1", + "wheepy[valkey,fs]~=0.0.7a1", "confini~=0.6.5", "lxml~=6.0.2", "PyNaCl~=1.6.0", diff --git a/dummy/tests/store.py b/dummy/tests/store.py @@ -9,7 +9,7 @@ import lxml.etree from whee.mem import MemStore from usawa import Ledger, UnitIndex, EntryPart, Entry, DemoWallet, Asset -from usawa.store import LedgerStore, AssetStore +from usawa.store import LedgerStore, AssetStore, KeyStore from usawa.crypto import ACL from usawa.link import EntryLink @@ -249,5 +249,20 @@ class TestStore(unittest.TestCase): self.assertEqual(len(r), 1) + def test_store_keys(self): + store = KeyStore(self.store) + wallet_one = DemoWallet() + store.add_key(wallet_one, passphrase='foo') + wallet_two = DemoWallet() + store.add_key(wallet_two, default=True, passphrase='bar') + r = store.get_key(DemoWallet, pubkey=wallet_one.pubkey(), passphrase='foo') + self.assertEqual(wallet_one.privkey(), r.privkey()) + r = store.get_default_key(DemoWallet) + v = r.pubkey() + self.assertEqual(wallet_two.pubkey(), v) + r = store.get_key(DemoWallet, pubkey=v, passphrase='bar') + self.assertEqual(wallet_two.privkey(), r.privkey()) + + if __name__ == '__main__': unittest.main() diff --git a/dummy/usawa/context.py b/dummy/usawa/context.py @@ -36,6 +36,7 @@ class UsawaContext: self.askpass = False self.signing = signing self.replay = replay + self.pwgetter = pwgetter def set(self, k, v): @@ -100,7 +101,10 @@ class UsawaContext: pw = self.cfg.get('WALLET_KEY_PASSPHRASE') if pw == None: if self.askpass: - pw = UsawaContext.pwget() + if self.pwgetter != None: + pw = self.pwgetter() + else: + pw = UsawaContext.pwget() return pw