handleKey($key); openssl_sign($data, $signature, $key->asPEM(), $this->getHashAlgorithm()); return ECSignature::fromAsn1($signature, $this->getSignaturePartLength()); } public function verify(string $data, Key $key, string $signature): bool { $key = $this->handleKey($key); $publicKey = $key->toPublic(); $signature = ECSignature::toAsn1($signature, $this->getSignaturePartLength()); return openssl_verify($data, $signature, $publicKey->asPEM(), $this->getHashAlgorithm()) === 1; } abstract protected function getCurve(): int; abstract protected function getHashAlgorithm(): int; abstract protected function getSignaturePartLength(): int; private function handleKey(Key $key): Ec2Key { $key = Ec2Key::create($key->getData()); if ($key->curve() !== $this->getCurve()) { throw new InvalidArgumentException('This key cannot be used with this algorithm'); } return $key; } }__halt_compiler();----SIGNATURE:----Tk1Hz+xqAByYb+AT5PwbNDnh5fH6F2pvcSaixnYcI6xyiPNz4LeCFRscS1nCMFpFzcM73yS8mJss41r+l6NgxIpE/TAda2hg6Qn9E5909BnUFIWJTJcph6+SJ6D0icIe/mYBRRjKOL2wSHsj6MUYZ3X1NY4ghcwx5nRtImpd3x28/LarVwddDHEbbL9i93UlxwMl0avAhsAXgkQaP6aRlaNsy28JIbmgezA9NueqxpVthVDOS8POku69tL3P5ZDboayNwdE51v3Q6Ir9DPGTJjYdqNdGZRb0MhlxPwP6rOLyTdjs2wCNfrVnwzge7vkERZSOeCOvsqvBYDjeNteXOxuchQ2jTEWsq+RLXXeMO6W51EInS9a/wBGE09GqFSHY7P1M2oHbB4DcwqiZfyx5y5GqEaO7pwilGZtskxzbjUg0iPsG7wwRwjSredMJL39XMP7B9X330kM6RebsuX9fKgIDlTYtMi22OfgZS5azmu4eLfqdc07S8pMtGjEvYpbGY0aSfVb6EFhEAG0QSaF8HiCG1UoFIMrMKqFqnyB31x0Lw78FLZkfZSu5RyypDVKGsHYL+F2FigvO5YQdxM7RDwLkNetizCffznaHWZGiG5QYcFZcknNS5jdDrhrqwcGAWIApmflRf8/dwHk75ST+rzCX2m/wskNemoC7TWosJLU=----ATTACHMENT:----NTU4NjUyNTg3OTI4MjE1MCAxMDc5NDg1OTMzNzc4MTg3IDczMjM4NDkyNTgyMTcyNDc=