import base64 from nacl.public import PrivateKey from nacl.encoding import Base64Encoder from functools import cache @cache def privkey(id): return str(repo.vault.random_bytes_as_base64_for(f"wireguard privkey {id}")) @cache def pubkey(id): return PrivateKey(base64.b64decode(privkey(id))).public_key.encode(encoder=Base64Encoder).decode('ascii') @cache def psk(id1, id2): return repo.vault.random_bytes_as_base64_for(f"wireguard psk {' '.join(sorted([id1, id2]))}")