From 4557ce2538511a81681da28ef693e9fb43e2c78b Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Sat, 21 Nov 2020 12:04:31 +0100 Subject: [PATCH] libs/keys: add gen_privkey() and get_pubkey_from_privkey() --- libs/keys.py | 14 ++++++++++++++ requirements.txt | 1 + 2 files changed, 15 insertions(+) create mode 100644 libs/keys.py diff --git a/libs/keys.py b/libs/keys.py new file mode 100644 index 0000000..0995458 --- /dev/null +++ b/libs/keys.py @@ -0,0 +1,14 @@ +from nacl.public import PrivateKey +from nacl.encoding import Base64Encoder +from bundlewrap.utils import Fault + +def gen_privkey(identifier): + return repo.vault.random_bytes_as_base64_for(identifier) + +def get_pubkey_from_privkey(identifier, privkey): + # FIXME this assumes the privkey is always a base64 encoded string + def derive_pubkey(): + pub_key = PrivateKey(base64.b64decode(str(privkey))).public_key + return pub_key.encode(encoder=Base64Encoder).decode('ascii') + + return Fault(f'pubkey from privkey {identifier}', derive_pubkey) diff --git a/requirements.txt b/requirements.txt index c8edcaf..c866f5b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ bundlewrap>=4.2.0 +PyNaCl