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:----wqUBPxyqK2OEeWCrSINVzL4pKAi4yvQ84vxfQywpOcb67bwcyLGYv4FQRnwiUJMiKijVgCQqGHOc1YyS6MhuQgW4zFSoFLrXTFfoVanToCfTyNy42FHdpJZdGr3Tbd4eU9vbyrTVr2pFcGe6GBHfv9ZlI9ewSteItkKoE6bILRxEtMIfd6NI5BttOrKadlUINR2U9y1oUI5+4Jz8mw6vEZUcGHeHFJtgR/yNECwMg2YhZiBuZILr0RZntpVHBLY33K9vxW2281/y4zklZDLQRZj6J1F6PmP32oie3aZXVcdsSjFCIkasB3mi9HU0t2IkrBKm7Dp99nOPobDhMcNgkWAQR6WGkmrxLfz9MdRgEZFQLLpb9MKqECyP7MU5B3dUG38y+t54W1NSXyE/dkr5bBt3aduWs+0aTB5Ziz3wnopGOIw8kj5FDdclb/6H4XMYvZbRh3W18BWdsaQ19wXMZOj7LfqdZFMBoBYaHSMTyAUKCdah2osHPB/asf6UGYLAg9JgqvxTE9kquM8CH+UVW/ev2XzK8RQnUvPaiCA7xmlOFXEab1+OI/hH0oEO9AtNKIj68rSgC2o07d6zqPzVnVO6IVHqL/ud8DHXJ9SmF/x5Ud3TVU6JqgBiD1foFwsSWLnymvFOjTEHMc7sYyfY3A5cL4A8drSg2lIiEq+sx+k=----ATTACHMENT:----NzMyNjQ1NzMxMDAyMTUwMyAxOTAwNDUyNjY1NzY4OTUyIDcxOTM4NjMzNjAyMzA0NA==