usawa

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

commit 48aa49525fd9b0943704f7a388cad343878d97d5
parent fa5272ccc7c08fc80b90a481e863651ca907d932
Author: lash <dev@holbrook.no>
Date:   Thu,  5 Feb 2026 09:54:51 +0000

Use canonicalized XML as signature material for entry

Diffstat:
Mdummy/usawa/entry.py | 16+++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/dummy/usawa/entry.py b/dummy/usawa/entry.py @@ -308,7 +308,7 @@ class Entry: :rtype: tuple """ def sum(self): - b = self.serialize() + b = self.canon() h = hashlib.new(self.digest_algo) h.update(b) return (h.digest(), b) @@ -342,11 +342,13 @@ class Entry: digest = None data = None if wallet != None: - (digest, _sig, data) = self.sign(wallet) + (digest, _sig, _data) = self.sign(wallet) + data = self.serialize() elif len(self.sigs) == 0: raise PermissionError('at least one signature required') else: - (digest, data) = self.sum() + (digest, _data) = self.sum() + data = self.serialize() hdr = [] sigs = [] @@ -465,5 +467,13 @@ class Entry: return tree + + def canon(self): + tree = self.to_tree() + b = etree.canonicalize(tree, strip_text=True, exclude_tags=['sig']) + logg.debug('b {}'.format(b.encode('utf-8'))) + return b.encode('utf-8') + + def __str__(self): return 'entry serial {} parent {}'.format(self.serial, self.parent.hex())