import sys, json, time, uuid
from ams.security.aes_gcm import encrypt_payload, decrypt_payload, load_key

KEY = load_key("6GEWF5NAC3FeoWIAufevuFe1QCOiKe3GuwHaw3551X0=")

def encrypt(payload):
    envelope = {"payload": payload, "timestamp": int(time.time()), "nonce": uuid.uuid4().hex}
    blob = encrypt_payload(json.dumps(envelope).encode(), KEY)
    return json.dumps({"data": blob})

def decrypt(wire_json):
    wire = json.loads(wire_json)
    plaintext = decrypt_payload(wire["data"], KEY)
    envelope = json.loads(plaintext)
    return envelope["payload"]

if __name__ == "__main__":
    mode = sys.argv[1]
    data = sys.argv[2] if len(sys.argv) > 2 else sys.stdin.read()
    if mode == "encrypt":
        print(encrypt(json.loads(data)))
    elif mode == "decrypt":
        print(json.dumps(decrypt(data)))
