usawa

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

commit 6821a5bf3750f24f1013a88ca9e3fcbd26cd1772
parent 83e47ab3f293b88e17b04482a490cc339758caed
Author: lash <dev@holbrook.no>
Date:   Mon, 13 Jul 2026 07:00:28 -0600

Add key reencryption function

Diffstat:
Mdummy/usawa/crypto.py | 4+++-
Mdummy/usawa/store.py | 8++++++++
Mdummy/usawa/user.py | 2+-
3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/dummy/usawa/crypto.py b/dummy/usawa/crypto.py @@ -63,6 +63,7 @@ def key_from_export(v, passphrase="", did=None, opslimit=0, memlimit=0): if not memlimit: memlimit = nacl.pwhash.MEMLIMIT_MODERATE + #logg.debug('pwhash ops {} mem {} salt {} pp {}'.format(opslimit, memlimit, salt, passphrase)) logg.debug('pwhash ops {} mem {} salt {}'.format(opslimit, memlimit, salt)) key = argon2i.kdf(nacl.secret.SecretBox.KEY_SIZE, passphrase, salt, opslimit=opslimit, memlimit=memlimit) @@ -189,7 +190,8 @@ class Wallet: opslimit = nacl.pwhash.OPSLIMIT_MODERATE if memlimit == 0: memlimit = nacl.pwhash.MEMLIMIT_MODERATE - logg.debug('pwhash ops {} mem {} salt {} pw {}'.format(opslimit, memlimit, salt, passphrase.hex())) + #logg.debug('pwhash ops {} mem {} salt {} pw {}'.format(opslimit, memlimit, salt, passphrase.hex())) + logg.debug('pwhash ops {} mem {} salt {}'.format(opslimit, memlimit, salt)) key = argon2i.kdf(nacl.secret.SecretBox.KEY_SIZE, passphrase, salt, opslimit=opslimit, memlimit=memlimit) box = nacl.secret.SecretBox(key) k = self.privkey() diff --git a/dummy/usawa/store.py b/dummy/usawa/store.py @@ -199,6 +199,14 @@ class KeyStore(BaseStore): self.db.put(k, v) + def reencrypt_key(self, wallet_class, pubkey, passphrase_new=None, passphrase_cur=None, opslimit=0, memlimit=0): + wallet = self.get_key(wallet_class, pubkey, passphrase=passphrase_cur) + k = pfx_key(pubkey=pubkey) + v = wallet.export(passphrase=passphrase_new, opslimit=opslimit, memlimit=memlimit) + self.db.put(k, v, exist_ok=True) + return wallet + + """Get a newly instantiated wallet object from a private key in the store. If public key is not supplied, will retrieve the default private key. diff --git a/dummy/usawa/user.py b/dummy/usawa/user.py @@ -9,4 +9,4 @@ class UsawaUser: def __str__(self): - return "{} ({}) pubkey: {}".format(self.uname, self.uid, self.pubkey) + return "{} ({}) pubkey: {}".format(self.uname, self.uid, self.pubkey.hex())