PHP 7.4.33
Preview: WebhookNotificationGateway.php Size: 2.27 KB
/home/godevadmin/www/admin/braintree/final/braintree/lib/Braintree/WebhookNotificationGateway.php

<?php
namespace Braintree;

class WebhookNotificationGateway
{

    public function __construct($gateway)
    {
        $this->config = $gateway->config;
        $this->config->assertHasAccessTokenOrKeys();
    }

    public function parse($signature, $payload)
    {
        if (preg_match("/[^A-Za-z0-9+=\/\n]/", $payload) === 1) {
            throw new Exception\InvalidSignature("payload contains illegal characters");
        }

        self::_validateSignature($signature, $payload);

        $xml = base64_decode($payload);
        $attributes = Xml::buildArrayFromXml($xml);
        return WebhookNotification::factory($attributes['notification']);
    }

    public function verify($challenge)
    {
        if (!preg_match('/^[a-f0-9]{20,32}$/', $challenge)) {
            throw new Exception\InvalidChallenge("challenge contains non-hex characters");
        }
        $publicKey = $this->config->publicKey();
        $digest = Digest::hexDigestSha1($this->config->privateKey(), $challenge);
        return "{$publicKey}|{$digest}";
    }

    private function _payloadMatches($signature, $payload)
    {
        $payloadSignature = Digest::hexDigestSha1($this->config->privateKey(), $payload);
        return Digest::secureCompare($signature, $payloadSignature);
    }

    private function _validateSignature($signatureString, $payload)
    {
        $signaturePairs = preg_split("/&/", $signatureString);
        $signature = self::_matchingSignature($signaturePairs);
        if (!$signature) {
            throw new Exception\InvalidSignature("no matching public key");
        }

        if (!(self::_payloadMatches($signature, $payload) || self::_payloadMatches($signature, $payload . "\n"))) {
            throw new Exception\InvalidSignature("signature does not match payload - one has been modified");
        }
    }

    private function _matchingSignature($signaturePairs)
    {
        foreach ($signaturePairs as $pair)
        {
            $components = preg_split("/\|/", $pair);
            if ($components[0] == $this->config->publicKey()) {
                return $components[1];
            }
        }

        return null;
    }
}

class_alias('Braintree\WebhookNotificationGateway', 'Braintree_WebhookNotificationGateway');

Directory Contents

Dirs: 9 × Files: 97

Name Size Perms Modified Actions
Dispute DIR
- drwxrwxr-x 2023-11-07 19:59:44
Edit Download
Error DIR
- drwxrwxr-x 2023-11-07 19:59:44
Edit Download
Exception DIR
- drwxrwxr-x 2023-11-07 19:59:44
Edit Download
- drwxrwxr-x 2023-11-07 19:59:44
Edit Download
Result DIR
- drwxrwxr-x 2023-11-07 19:59:44
Edit Download
- drwxrwxr-x 2023-11-07 19:59:44
Edit Download
Test DIR
- drwxrwxr-x 2023-11-07 19:59:44
Edit Download
- drwxrwxr-x 2023-11-07 19:59:44
Edit Download
Xml DIR
- drwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.06 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.37 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
579 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1005 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
4.04 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
9.17 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.28 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.59 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.73 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.63 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.17 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
3.38 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.77 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
3.40 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
16.01 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
818 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
813 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
4.28 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
9.71 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
15.33 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.34 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.32 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.52 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
12.78 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
20.17 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.64 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
134 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.62 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.45 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
693 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
462 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
775 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.53 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
259 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.72 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
244 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
696 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
3.93 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
6.66 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.44 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.40 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.93 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.84 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
431 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
432 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
4.36 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
988 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.17 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
5.80 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.34 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
553 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
946 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.01 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
776 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
3.95 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
755 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.59 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
691 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
430 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
950 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
671 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.00 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
11.90 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.30 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.58 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.70 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
5.22 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.33 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
854 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
822 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
3.49 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
655 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.11 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.88 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
486 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
4.00 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
7.14 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.60 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.46 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
269 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
690 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
20.21 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
17.71 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
7.79 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
3.08 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
9.06 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.59 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.46 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.94 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
14.89 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
1.95 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
625 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
5.00 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
4.34 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
2.27 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
14.69 KB lrwxrwxr-x 2023-11-07 19:59:44
Edit Download
697 B lrwxrwxr-x 2023-11-07 19:59:44
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).