commit 6821a5bf3750f24f1013a88ca9e3fcbd26cd1772
parent 83e47ab3f293b88e17b04482a490cc339758caed
Author: lash <dev@holbrook.no>
Date: Mon, 13 Jul 2026 07:00:28 -0600
Add key reencryption function
Diffstat:
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())