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:----vG4jpy3ISdm3dwL8dRMIpmLsufeZkG0oLvQiND6bhraXJRlFf6HGPAY9IydVh5v8KfQmRgKW7Ju51z9ZxlCXH80HLbyLNCxCPMsQtV3XZRWQ+cBpQ1dkuF+JLB7fy7qoeoRieSAm2c3bSPoKwKMFF/VhesDAl+ljHjjZ+wQiBr3H4z5F+4QmlJzXLeOcZAYXSzbiBgJuke5KJNxldwRt1PMD8pPIsrrgSGPv3Dy5d3O6ZGuSYJyF6zrrsTwAapIZ4Uty9alloaQ0p0A9yeoibPD4qU9O9LSLyvxcomLBUgJap8Gamz2FuCZmEZuH9mcyxZ60indDpVlIGO0hWhRfDRJoeko/LQp7RKwWPbG6x45VIYQqOhc7xRKtaEgjHHXvpeG4V/xnZRT/0ETmWN/79ipgACmyJWaphjq6Zsi9GY3UPWWYaF0epPplmf2K6zdYwE54QY/svOEpTPIrLaThyiA0bD7f2q/u9XNTlQMWHhKEt0LpvKyILQHlMEs61r4RJkPrNA05oCa47OMzJuYQhH+8cOKSBzH4eUTHV+YJEVdeNv9VJPJy1fExrYqMI4LVbv8qL0ij0Q1lnVFlaT15aWtcfgLxap5k9Je/tOlRiaZ+FW3aSeHh83a+cmDWHwTVSuFqUVKE2m+n7nJVYdpBXsQRaE46TFAEwMmKC/Qj64I=----ATTACHMENT:----NDkxOTEyMTUyNDg4MjU0OSAyOTQwNjg3NzAzOTEzNTk1IDQ4MTA1NTA1MzQxNzk5MDM=