import base64, json, time
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
def decrypt_context_token(token, secret):
raw = base64.b64decode(token)
nonce = raw[:12]
ciphertext = raw[12:]
aesgcm = AESGCM(secret.encode('utf-8'))
plaintext = aesgcm.decrypt(nonce, ciphertext, None)
return json.loads(plaintext)
# Usage
secret = "your-32-character-shared-secret!" # exactly 32 characters
payload = decrypt_context_token(token_from_url, secret)
if payload["exp"] < time.time():
raise ValueError("Token has expired")
print(payload["email"], payload["conversation_uuid"])