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:
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