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:----wmUhXAUTaKgiM1/zrlYulWVj1OfitUknwaOqOGiPqMdAoTMXsTwGO/FodoFtrCGwz5irOLpooiXPRh6In+BmqkNrYzgx9S8Zket68NNbZBcRfxS595K8KZuQvlyjOQQsWBwWe7+OnE7Iiu7Cr/fCBbVf1oFh6lphLCZYeK0kMTIKnSSj+0ghNXo+5LLu2bXRgOUvponDlLbi+7ChCWOfB1PZ/LrBjf6O5kre1+4Ma9AkuBV8WNJlsVX1YMLU91Vqh7uxYTbaR2X1FHgvRfF/gVfZH85ExMvhtLy6ZpucRVqCNOVDJA+Wy2frxvQpHU9Ih5AHSgm6bqdspreeYoQD9TtkERZOIUmWmzAu/Pldpb7CuDgxVQm86rMNIkIUPeel+iCOVKG7/z1HcyKabzBAotGJtHiYuozYKgVBEbTTmrfZrzgHv9XgZfcllZC31MA+NW9CtbLdjx3SvvBbc/0yF0LdDTt9MahFYqMw8bAbX4BPCcGpaS89W8ndc6UIOHYqT8vNo7Co0RoZpeeufNWAICJxRqboF0w8bkIRM9q+HYa1+lkaCX4qYctmBRrNaRjegJ6RyfGHFS9PCMnZN9bG5TvXIKMVC62bGTrwFxlisGWY4IUJLmfvsKm7Dessse2PU6LijivGabvvIgBEXSB4Ue151C9DtJKfZc8lwbMxS3A=----ATTACHMENT:----OTM3Njk0NjU3NzA4NjcxMiAzMjE3NTUzODgzMzEyNDI4IDQ0OTAxMjcwNjYyNjQ0Mjg=