import json import logging import time from ellipticcurve.ecdsa import Ecdsa from ellipticcurve.privateKey import PrivateKey logger = logging.getLogger(__name__) def generate_event() -> None: """ Creates event.json file with the given events Prints public key to stdout""" events = [ { "email": "test@example.com", "timestamp": int(time.time()), "event": "processed", "sg_event_id": "sg_event_id", "sg_message_id": "sg_message_id", "campaign_id": "campaign_id", "batch_id": "batch_id", "is_test": True, }, { "email": "test@example.com", "timestamp": int(time.time()), "event": "processed", "sg_event_id": "sg_event_id", "sg_message_id": "sg_message_id", "campaign_id": "campaign_id", "batch_id": "batch_id", "is_test": True, }, ] request = { "headers": { "x-twilio-email-event-webhook-signature": None, "x-twilio-email-event-webhook-timestamp": int(time.time()), }, "path": "test_subuser", "body": json.dumps(events, indent=2), } private_key = PrivateKey() signature = Ecdsa.sign( f"{request['headers']['x-twilio-email-event-webhook-timestamp']}{request['body']}", private_key, ).toBase64() request["headers"]["x-twilio-email-event-webhook-signature"] = signature with open("event.json", "w") as fo: json.dump(request, fo, indent=2) public_key = private_key.publicKey().toPem() logger.info("Public key: %s", public_key) if __name__ == "__main__": generate_event()