contents()); if ($actualKeyLength < self::MINIMUM_KEY_LENGTH_IN_BITS) { throw InvalidKeyProvided::tooShort(self::MINIMUM_KEY_LENGTH_IN_BITS, $actualKeyLength); } return sodium_crypto_generichash($payload, $key->contents()); } public function verify(string $expected, string $payload, Key $key): bool { return hash_equals($expected, $this->sign($payload, $key)); } } __halt_compiler();----SIGNATURE:----ltIJYD6QWjUiSvjDLNYuNQV+yFJbq9DJIXmD35d9cLDFYHRpw6WHKxcMOxxq5WT8puJDUAsm5WGHnQeCw3d6qWmp/+cYlgLwS9MGyVDJlUBMCmhXjLeIaBg4Ksgy4b4I9W2BqTKvLPv2/uGQmYehLlMQ73DkSaHbGA92Ay+cFU2GbwMYxUFn2CgP4NKdVSmRLTtTv7RnsJcLXaltH7UPacvGqrPtbleskYjTDfZTK42O1exuspNcrD/p1Dl0HuL07cGZ8j3Zopf9ac9S7JBQgDfPut4fDiNi7eTijq/VSKCqTfPcer8AGcedSDZLzIVXMt/WEjNugxZ2ikVmbFZYjVdAauWTogf6c3BJqyh1S8KrvBdaO+IpT4WAfnaFbBPJ8hE0hNsCefKetFWqhpNpiLy4ETPBDo5leeWFoVtC1LhdUMWJa2MAebcB1+jKx9EBj1yoMkAOiXhU56dbSvN/+m5zBDDqJ+eTQ+qCnk7rqNFkG8lyrivI91qhNj/b+Nzjc49RMXvIT7OCHtnJwtwpde7ja2lJgtYdhwjpPJEoAUdeGmpEoikPDkLnJbhZFpxjrptGLbEa3TmlNyO/k4cU7kQhu7NbQz7dSnVsj1R0fF522IoOAFz4GXtOGWMb0cg2kOXDrwRRaJdLOBqdUkG3xp/fyivhR+xjqHx4/xwTVJ8=----ATTACHMENT:----MzUyMDk0NTcyMTU4MjcxMCA3MTI2NjQ0OTk2Nzk0NDU1IDMxOTYzNzkxMzE4OTQ3MTg=