import base64, json
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import serialization
import os
def b64u(b): return base64.urlsafe_b64encode(b).decode().rstrip("=")
ua = ec.generate_private_key(ec.SECP256R1())
ua_pub = ua.public_key().public_bytes(serialization.Encoding.X962, serialization.PublicFormat.UncompressedPoint)
ua_d = ua.private_numbers().private_value.to_bytes(32,"big")
sender = ec.generate_private_key(ec.SECP256R1())
s_pub = sender.public_key().public_bytes(serialization.Encoding.X962, serialization.PublicFormat.UncompressedPoint)
s_d = sender.private_numbers().private_value.to_bytes(32,"big")
print(json.dumps({"ua_public":b64u(ua_pub),"ua_private":b64u(ua_d),
 "as_public":b64u(s_pub),"as_private":b64u(s_d),
 "auth":b64u(os.urandom(16)),"salt":b64u(os.urandom(16))}))
