0) && (abs(time() - $timestamp) > $tolerance)) { return false; } return true; } private static function getTimestamp($header) { $items = explode(',', $header); foreach ($items as $item) { $itemParts = explode('=', $item, 2); if ('t' === $itemParts[0]) { if (!is_numeric($itemParts[1])) { return false; } return (int) ($itemParts[1]); } } return false; } private static function getSignatures($header, $scheme) { $signatures = []; $items = explode(',', $header); foreach ($items as $item) { $itemParts = explode('=', $item, 2); if (trim($itemParts[0]) === $scheme) { $signatures[] = $itemParts[1]; } } return $signatures; } private static function computeSignature($payload, $secret) { return hash_hmac('sha256', $payload, $secret); } }