usawa

Unnamed repository; edit this file 'description' to name the repository.
Info | Log | Files | Refs | Submodules | LICENSE

commit fd4ff93d2157f00820427b4a519fe4df49653458
parent 94857e4a440c99e0cdcf9b54ba2d1bf78226e6fc
Author: lash <dev@holbrook.no>
Date:   Sat,  6 Dec 2025 13:02:33 +0000

Add wallet creating test#

Diffstat:
Mdummy/svcontas/crypto.py | 5+++--
Mdummy/svcontas/entry.py | 22+++++++++++++++++-----
Mdummy/tests/entry.py | 9+++++++++
3 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/dummy/svcontas/crypto.py b/dummy/svcontas/crypto.py @@ -11,8 +11,9 @@ class DemoWallet: if privatekey == None: if publickey == None: self.pk = nacl.signing.SigningKey.generate() - else: - self.pk = nacl.signing.SigningKey(privatekey) + publickey_chk = self.pk.verify_key + else: + self.pk = nacl.signing.SigningKey(privatekey) publickey_chk = self.pk.verify_key if publickey == None: diff --git a/dummy/svcontas/entry.py b/dummy/svcontas/entry.py @@ -1,3 +1,4 @@ +import enum import logging import datetime import uuid @@ -7,11 +8,17 @@ from lxml import etree import rencode from .constant import DEFAULTPARENT, NSPREFIX +from .crypto import DemoWallet from .xml import nsmap logg = logging.getLogger('svcontas.entry') +class KeyStoreFormat(enum.IntEnum): + LITERAL = 0 + INDEXED = 1 + + class EntryPart: def __init__(self, typ, account, amount, src=False): @@ -163,7 +170,12 @@ class Entry: def wrap(self, wallet): (digest, sig, data) = self.sign(wallet) + pubkey = wallet.pubkey() d = [ + [ + KeyStoreFormat.LITERAL.value, + pubkey, + ], sig, data, ] @@ -171,13 +183,13 @@ class Entry: @staticmethod - def unwrap(data, wallet): + def unwrap(data, acl=None): v = rencode.loads(data) - sig = v[0] - entry = Entry.deserialize(v[1]) + pubkey_bytes = v[0][1] + wallet = DemoWallet(publickey=pubkey_bytes) + sig = v[1] + entry = Entry.deserialize(v[2]) (z, b) = entry.sum() - #wallet.verify(z, sig) - #sig = bytes.fromhex('cc06808cbbee0510331aa97974132e8dc296aeb795be229d064bae784b0a87a5cf4281d82e8c99271b75db2148f08a026c1a60ed9cabdb8cac6d24242dac4063') wallet.verify(z, sig) return entry diff --git a/dummy/tests/entry.py b/dummy/tests/entry.py @@ -33,6 +33,15 @@ class TestEntry(unittest.TestCase): self.assertEqual(s, ss) + def test_wallet_create(self): + pk = bytes.fromhex('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c') + o = DemoWallet() + o = DemoWallet(privatekey=pk) + pubk = o.pubkey() + oo = DemoWallet(publickey=pubk) + self.assertEqual(o.pubkey(), oo.pubkey()) + + def test_entry_sign_verify(self): dst = EntryPart('asset', 'foo', 1337) src = EntryPart('income', 'foo', 1337, src=True)