Search in sources :

Example 1 with EventWebhook

use of com.sendgrid.helpers.eventwebhook.EventWebhook in project sendgrid-java by sendgrid.

the class Example method main.

public static void main(String[] args) {
    Security.addProvider(new BouncyCastleProvider());
    final Route webhookHandler = (req, res) -> {
        try {
            final String publicKey = "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE83T4O/n84iotIvIW4mdBgQ/7dAfSmpqIM8kF9mN1flpVKS3GRqe62gw+2fNNRaINXvVpiglSI8eNEc6wEA3F+g==";
            final String signature = req.headers(EventWebhookHeader.SIGNATURE.toString());
            final String timestamp = req.headers(EventWebhookHeader.TIMESTAMP.toString());
            final byte[] requestBody = req.bodyAsBytes();
            final EventWebhook ew = new EventWebhook();
            final ECPublicKey ellipticCurvePublicKey = ew.ConvertPublicKeyToECDSA(publicKey);
            final boolean valid = ew.VerifySignature(ellipticCurvePublicKey, requestBody, signature, timestamp);
            System.out.println("Valid Signature: " + valid);
            if (valid) {
                res.status(204);
            } else {
                res.status(403);
            }
            return null;
        } catch (final Exception exception) {
            res.status(500);
            return exception.toString();
        }
    };
    post("/sendgrid/webhook", webhookHandler);
}
Also used : EventWebhook(com.sendgrid.helpers.eventwebhook.EventWebhook) Body(com.twilio.twiml.messaging.Body) Security(java.security.Security) Spark.post(spark.Spark.post) HashMap(java.util.HashMap) MessagingResponse(com.twilio.twiml.MessagingResponse) BouncyCastleProvider(org.bouncycastle.jce.provider.BouncyCastleProvider) Message(com.twilio.twiml.messaging.Message) EventWebhookHeader(com.sendgrid.helpers.eventwebhook.EventWebhookHeader) Map(java.util.Map) Route(spark.Route) RequestValidator(com.twilio.security.RequestValidator) ECPublicKey(java.security.interfaces.ECPublicKey) ECPublicKey(java.security.interfaces.ECPublicKey) Route(spark.Route) EventWebhook(com.sendgrid.helpers.eventwebhook.EventWebhook) BouncyCastleProvider(org.bouncycastle.jce.provider.BouncyCastleProvider)

Aggregations

EventWebhook (com.sendgrid.helpers.eventwebhook.EventWebhook)1 EventWebhookHeader (com.sendgrid.helpers.eventwebhook.EventWebhookHeader)1 RequestValidator (com.twilio.security.RequestValidator)1 MessagingResponse (com.twilio.twiml.MessagingResponse)1 Body (com.twilio.twiml.messaging.Body)1 Message (com.twilio.twiml.messaging.Message)1 Security (java.security.Security)1 ECPublicKey (java.security.interfaces.ECPublicKey)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 BouncyCastleProvider (org.bouncycastle.jce.provider.BouncyCastleProvider)1 Route (spark.Route)1 Spark.post (spark.Spark.post)1