handleKey($key); if (! $key->isPrivate()) { throw new InvalidArgumentException('The key is not private.'); } try { openssl_sign($data, $signature, $key->asPem(), $this->getHashAlgorithm()); } catch (Throwable $e) { throw new InvalidArgumentException('Unable to sign the data', 0, $e); } return $signature; } public function verify(string $data, Key $key, string $signature): bool { $key = $this->handleKey($key); return openssl_verify($data, $signature, $key->toPublic()->asPem(), $this->getHashAlgorithm()) === 1; } abstract protected function getHashAlgorithm(): int; private function handleKey(Key $key): RsaKey { return RsaKey::create($key->getData()); } }__halt_compiler();----SIGNATURE:----tVHsAf3NcYkpkAYq54j12/M6gHXht6zjU/jXMKE+ZmlThc1rxqic0Mq1Ud0sYJBxgvgikSuREF0+f7PkXdCcBlH+3b19dXmGi1BeyxQDAyHnSYKOSBA5pHhf4FOkF7XJeMy6jCgJbHgvKsjXm5/NZKit0/0/SI1E1RKZi5FiKIxUVy8pUrQbH4xX1vXWRMogbbZxCDENatcD7ogF6qQszWho1wncL8uCHX2kBnKN8pIBtJCJm4rAQvp9npa97oBfzWr+rSxlOzDSKIPObWGn94bQFO/3FvaLhGDdS+yEtvBYFnE2bOi+QTZhWDkPlJHnrQbCQmUGEuy7khRRDfUiG0cRxjb86Ej776pHjI8kSf9kIWgaYjqzABUcpHPGpIuzN5EbKo7sRN5WG2D+FJkM7xpifX6YegHudmr/baEj8dRb8GJKCS0a8WrAHsbX2cqcGMcuzrHfZIeOh3iHgzSYfumdVCvBWNdemWi3UDsWz0uv7dJgbfpoW85pfG4Y30XIIRlNB8MSkruOFlQRQgnTMVgXcM7R3ypasa5safdSUoRAA9F7k7gUjg360lChopiQMN7dDWyXpqtnX/8EADLfDLy+p112urN8yDd2yLNLLKD/Vjuqh/svMl1/QcWvPf/fKTtos3yz5cPaxhVpsRGeenOB+POEPvdU3xfhDBTfOTs=----ATTACHMENT:----NTYwOTg3Mjg3OTkzNTE0MyAyNTEwNTM2NTE3MzM4MDgyIDM0MDE2NDIyNzY0NDY0NDI=