checKey($key); $signature = hash_hmac($this->getHashAlgorithm(), $data, (string) $key->get(SymmetricKey::DATA_K), true); return substr($signature, 0, intdiv($this->getSignatureLength(), 8)); } public function verify(string $data, Key $key, string $signature): bool { return hash_equals($this->hash($data, $key), $signature); } abstract protected function getHashAlgorithm(): string; abstract protected function getSignatureLength(): int; private function checKey(Key $key): void { if ($key->type() !== Key::TYPE_OCT && $key->type() !== Key::TYPE_NAME_OCT) { throw new InvalidArgumentException('Invalid key. Must be of type symmetric'); } if (! $key->has(SymmetricKey::DATA_K)) { throw new InvalidArgumentException('Invalid key. The value of the key is missing'); } } }__halt_compiler();----SIGNATURE:----AcEPjUpO6itrRZt7zeyKCibBTGSGe60NJ5vdu11VsRHR+UNc3rYcggdMVpz1tfL1yk/lljpvoR9nUknzwB/GKtBvR7IiXZqmxsMboLprCtJ1BY/uG1/0QjaS8NDdiMGzASvKdrk2E5iHEvThg4jGZ/Cyd2zwuGWEdcmN4v3+Iha3HWqf2p0N0diqhn6VSeWVYYCR8CG2m5Nt3d8Ol8BYJGX/LILPHIwxToCuYrv8My1qbHUuJFKOcgy4M3JKzkVrsKLZcfNTWBTcajIOUu/HXjKApSdvOoViXk0+2H7BSPuPVmndLAhZmXKI+iNpW6UfNpSpHADfDKnSs2aqAlCMtNPM37D9XExEi9WMZdv/dA5noLjPYV8rGXYzt8e44l2yX9dEvaLp/6m4GJOTmPIGR1UitENDJsHaF0LKj+LdIGfM6paB26CVmW3nPX1sFIDvCWpcxppct4qsJr2/RrZbPpVF2aAAEJvvvoQrA1cMtEbctO9n/6yFmnkVVB1Z7rSTQFv1E0XQnxlj89o8bT4iGUzDbb6ecurUcvCWE3tku9edPbO9WZtlueFb1NzNRWgCKpx7gxhxMFXD8ofTfJeCtZlkasUdK6T9VIXRSdp/y9TxiD6bldk9mty/Fz/tIBpyrCghOehL70ZGkUnV10PLdS70SIqTg5paxjUmv80e5iE=----ATTACHMENT:----MTY1NTE4NjA5NzE3MzcyNCA5MzQ4MjE3Nzc5ODI4ODE5IDc5NzkyOTM0MDA3MzQ0NDA=