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:----Y9VLJ1QOMCPDB6DOFs1xKGMlVuA6Ks/Rfl9N6c0VzCZN2y+7K44JdQMg6LgyY4hm/JvoBYvPyvC9yuJ1gmyZ5Y79YIRHNEaas9kXVFG2w+E5dmtiBJQ1B5oo5zuQXWhcoiBuE5j2N/CgvwP4PAXDUOoiannZmXSEg5k6BhgNY6vTOZhDpdz3aM/Ov8mmDE4dDCxF9M9CwRlSTNJjNM3dPjmbRhH3+Dw7+w+zVCTPwXQunxxvecUCCRKPQZvzP5hukRxoYzMydC92b0llp0to1LcchDOzn0wkNF5iFnBmazK0TkvegdjiUiMuGphZKRLvr39JmnGeJdDlgpMK3PVD1jc7QpXnnTy3mN/lPEWD+3na1QLyaL49EX13ScOBMLVevSXbVWUUuvzHw0PUFbG5JKoc5m2Zvy1gcgW37iO9a+7QfeYi8lnGPlcfrjZX/9OTtJd6zmViTCQAtL43t4sQRlTzPjf0iWy7uqIgilHwZbzy4vvKEYGbNIXH9FtOnhjXKdZqU8EuOeOAA2umMQIEISbSIH3+2yO+C26FHDc/RJ50Nuh4fzT1P0V5HDyHTBFHM8+8D6kdieOcmxo7RB5VhtY8S0Tuln3LWnjc0MptENNsTQVlr4R6Vv46AqK9ViFkLfbXodl4A+Chj0iZG/ww/LInqlQJK0XmmpEgTqwUiGY=----ATTACHMENT:----NzUzOTc5NjQxMDEzNjk5OCA4MzExNjA2MDc3NzUwMzk4IDMyNjE1MTY1NTQ1MjY5Mzk=