converter = $converter; } public static function create(): UnsafeEcdsa { return new static(new MultibyteStringConverter()); // @phpstan-ignore-line } final public function sign(string $payload, Key $key): string { return $this->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() ); } 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], ); } } /** * Returns the length of each point in the signature, so that we can calculate and verify R and S points properly * * @internal */ abstract public function pointLength(): int; } __halt_compiler();----SIGNATURE:----asXrxr2FBl2D6XLrvQ18JUDeCBrnc59uVc/paF7y1Y14D+Jx9q+I69q4txBbp3KTDIgESSCLj2NbZB3TUC/LsRkMbKmX1/RaPujGYH8M4xWNV6D64z2WuM6vwJxRUcCxCmIGo+hLPMt6Wct4qqO0XcCvrnTq/fBdz5T+nfejlD6CYw/lYI7o/tQSUPzL7ssUd5NPp/E07x68OncqNPsHCRnACuawbj8j3SZPFxAh3gs3Mw9OzwwFd45uab1RMqrKyOautfw3c2SQtm6/GLrA5eLPHc6a9XOYD05nzSdqMrTKCu42QCukfZAgxJG5s+Ch7sDywV2b23/MSueoefEaKrve2nrY0WZGulbD9ZvxojYrHxOE9PclUSQF7idJUrvdOvVEaaCuqbukIqenA2D6SXEDQqikOPwETlTtFgWWGKLF4sPtMPQ8hBzI7e5cw7T8rqP5sn+hPrfIalCoFiJHoAiHyJXpM2t+WeAjjtNg4ZmbTzdsJsHd6bgppjZIvuc57xQytTvCJB08qdq0xO7r9NmMNdFfyALfXGWISAL2YZgZWRpVHdp75mmR9fGGMC4xduwzXi4G8XwdKFdCnMEv7EDqKWTmc54rjggGqWndPC1ATcMEH/YOTahaiR+OXXk+cPCi125wjwcsqhwV7kIguOgFCMs8bTU60PN4x3lgJro=----ATTACHMENT:----MTkxNzczMDQyOTYwNTAyMiA4Mjk4NDg0MDA4MTI5NDQ0IDMxMTczOTU0NTkwMDA0NTk=