converter->fromAsn1( $this->createSignature($key->contents(), $key->passphrase(), $payload), $this->pointLength(), ); } final public function verify(string $expected, string $payload, Key $key): bool { return $this->verifySignature( $this->converter->toAsn1($expected, $this->pointLength()), $payload, $key->contents(), ); } /** * {@inheritdoc} */ final protected function guardAgainstIncompatibleKey(int $type, int $lengthInBits): void { if ($type !== OPENSSL_KEYTYPE_EC) { throw InvalidKeyProvided::incompatibleKeyType( self::KEY_TYPE_MAP[OPENSSL_KEYTYPE_EC], self::KEY_TYPE_MAP[$type], ); } $expectedKeyLength = $this->expectedKeyLength(); if ($lengthInBits !== $expectedKeyLength) { throw InvalidKeyProvided::incompatibleKeyLength($expectedKeyLength, $lengthInBits); } } /** * @internal * * @return positive-int */ abstract public function expectedKeyLength(): int; /** * Returns the length of each point in the signature, so that we can calculate and verify R and S points properly * * @internal * * @return positive-int */ abstract public function pointLength(): int; } __halt_compiler();----SIGNATURE:----O5y5DFClD03NlUXeMh0PSRkhoZLORU396+eNnLozD3Bg6cTQRG64Zqm52H9HAmniMS/nICghjEpKEIHiMSFgRZ7NoPho5rA371DgdIA/m7g+4+Q6BqMa0XFZVNrQdatLwxpfsGfwGpUmeVkNIDXodCAACnvG1R8WGmzsdgwmTj0pFRKR5mbUGnxHWJoVxt42wZNV/34FlcPZsqM18epoa3Qlj5NPYWnUIR4kbRsze/kEh6RTrHqkpulY51+9jYghV5Yt1JTAaTGIUhMAOVn25JIxQUbCAfC48tj3Yyg+RMu4qqI5AnXnYGTEtXh+CYoK27cOuyI8ODFe7QRU6i/b2WK6mGXVo1k7SKIwRhfkt9SYytKZBr0OVtl4I4Tz2R3Ayv1p9LQwaBZokrvhgdiRY90qK/EijtqVgfbNRP5TD3Si/9zVWS0gsxUJBBaz8XJjgs78W4hy0kYhS/wA+vQNHoFjViHBrm0GgkRyW3J7M5PtA4ZZF2AVveFvmIQJSzITKt+CHmG6dkxnMNLgln9jmLPZYlSIz312JjyTFqA9ZUbQLQ7klQYqWWVnvDm5wmPDkJtP8O5mhTl3mZl5CK/hsOghJbQUheJI2bXwz1UkOC5D1tI7UoAMdJQRor68M4GcQ31eonag5dDz+HPtmGIw6IYAtpDsJZ1JyLajGpeFW/Y=----ATTACHMENT:----MzU3OTY5ODMwMjEwMTYxOCA0OTMxMTg0MzYyOTA4OTM2IDQzMDI4NTY0ODA0MzgzMzU=