veilid/veilid-python/demo/config.py
Teknique 04354d79c9 Cleanups and prepping for encryption
This cleans up some types, moves some typing to loading and saving keys,
uses clearer object names, and passes a crypto system into chatter.

This lays the groundwork for adding encryption.
2023-08-02 21:20:01 -07:00

34 lines
690 B
Python

"""Load and save configuration."""
import json
from pathlib import Path
import veilid
KEYFILE = Path(".demokeys")
def read_keys() -> dict:
"""Load the stored keys from disk."""
try:
raw = KEYFILE.read_text()
except FileNotFoundError:
return {
"self": None,
"peers": {},
}
keys = json.loads(raw)
if keys["self"] is not None:
keys["self"] = veilid.KeyPair(keys["self"])
for name, pubkey in keys["peers"].items():
keys["peers"][name] = veilid.PublicKey(pubkey)
return keys
def write_keys(keydata: dict):
"""Save the keys to disk."""
KEYFILE.write_text(json.dumps(keydata, indent=2))