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:----lY/UIdYjhnxi2ZwHTNsxz8wcDsEwwIOqBYsxv4IqZt1j9xNq/BJi2iuCSoJRgZ6JI33ZB0Vy/YH31Q7VaXFvZWo4NouIYxHjzFCuGT6P7wObj+0ngYk0Uyb49aVhmSM6IUdkN7FNKkAxNDrq55Mipp93V8ICtaBP8d1pMbFk9L/BoOBNtM3DU/AAhZ0GeL2Wn4MmcKexkiEve9U6Bo7922de9j5OURkYwEyjT/UorX9P8QHeB/AHEH9JsuFzaqtMQxz2I4/V/c5aW8FSDXy7C6ts9D+QwCiMTgjWKFe0nF4sTCyFHMPnOkRRNsOvvMGgEy33D/K/7CY6fpZHCLTDanbYNkAZaaC6y8BJt4CmwD1q7xabpz/g1hryd/3LZEr4TtyAPmpnVBZD2qznWLuWtNRQb+QnGEXOO5dw+Rdz45kIXVZYe9arlA+724ZY1mhPfRiEqw/eDE9X5s4f7cV6l/rcF/Z8S/xM6dfh/Ua9SxTRirKZMYiiXvhRqu4/igd4GN44LDEhHa9eWKvWIrZrwlWdRwPr1vovOjzKHCDy8ZKO02Ri6D7sTgd/QIqBa6OcqblqczznUp0L8Z0fZ6WLMlBLmX6WlN9JPr3bQ5bdlsdxuTmsxUlVsqNwqb6xCnBDuVXpwWF+KT2DXFbeo5sKLBpdpGdunyeSS7PHwI4b5Nw=----ATTACHMENT:----Nzc3MDg2OTA5MDQ0MjQ4NiA1Njc0NTk5OTIxOTQ3MTMyIDEyMjUzNTQ5MjE5MTMzNDg=