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:----NvLeu+a9x0cK5Y7LkhgxYMwdm2taPqfHT+waDUCFFmB/AR5q/eqqHyKwgykeAha1CPb5imsaNnS3Vg1mOzjgYkscmXNH00DAE4Yi4nUvv/eHhQCxib/3EY0L3KKzAaKUCiALseqsjWhrnAufr5l9IMGAOiveMCRg1p9JqQpsIKKm6hrp38M2PAXbOVRKv9RpWLuyiaKWB2wTnHt5Q52YfVJQxEuEnkfTpEL0M9hSd+rnTU7R/t52mLxkfNHKNutVjbx2tKhApyERuqf1yLdL6f0L154qvAWofsCUr0DqLkivl7HgY5qUVjDACiKC78CvhFcLbpBOLlr6rpfg4DHDrKSQWWrXP1bRpw88dQk71+6cIT/fQkJT6Izh+/FyxDQXr+ogN2ytYGsAhePjCbccEW/O2TV1je6Q3jtDgLcVn6jaiTqmj98s7fvCb1CU36hP3aGa9Rdnq52DbhSdOE/8+4J8MfWsTchTgsh6LVXtFm/geXfA5zf6jSVwElj80HlViuV5iN3GV8n4X8Zte+czs50/jp/esO7IPfqXOFtaQJs9WYCIs8aFc7QJ4qmDpzwQ341n6ep7JeA8XFFb9lB3yvJ3f893/vk4r7dKrIJQuju27U17FkDD6r2UuryXJ2zzQm5k856KuSfx07fjDnLcM2zNj1aFlC0xUWj+ug25VwU=----ATTACHMENT:----NTU5NDkxMzgwOTY3NTk3OSA4NTY5MzI5MTk4ODkwOTEyIDMxNzI3MDA0NTQwMTQwMTY=