Source of file Webhook.php
Size: 1,418 Bytes - Last Modified: 2021-12-23T10:07:23+00:00
/var/www/docs.ssmods.com/process/src/src/Connector/Webhook.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | <?php namespace NSWDPC\Messaging\Mailgun\Connector; use NSWDPC\Messaging\Mailgun\MailgunEvent; use NSWDPC\Messaging\Mailgun\Log; use Mailgun\Mailgun; use Exception; /** * Webhook integration with Mailgun PHP SDK */ class Webhook extends Base { /** * verify signature * @return true returns true if signature is valid * @param array */ public function verify_signature($signature) { if($this->is_valid_signature($signature)) { return hash_equals( $this->sign_token($signature), $signature['signature']); } return false; } /** * Sign the token based on timestamp and signature in request * @param array */ public function sign_token($signature) { $webhook_signing_key = $this->getWebhookSigningKey(); if(!$webhook_signing_key) { throw new \Exception("Please set a webhook signing key in configuration"); } return hash_hmac( 'sha256', $signature['timestamp'] . $signature['token'], $webhook_signing_key ); } /** * Based on Mailgun docs, determine if the signature is correct * @param array */ public function is_valid_signature($signature) { return isset($signature['timestamp']) && isset($signature['token']) && strlen($signature['token']) == 50 && isset($signature['signature']); } } |