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:----aO2dSmLTS2AihIHHSxywyPLxrkxEyz5XGBCDYbyuAY2AG+Y2DJk922VED/VOu7Okg/GWq64UV+zB53onlAhyFKrVs2rFuHUG44K2gc3T1bDjTeNy7DGwFwTOlwuw8SXDqkXo8xD8pKEpc+OGGC8NUPqy4UWFYhAwpjG3rkE5y3NMbkLRpj3Ty+oa1FByRQRij9wbl55UPO+WsVv0Af6xf9Q6CSCX0o2ZNop6QGs41jiRRBy3LHXKIGkbv8XZdDWTNpOGqVJ9a6PxDoawFj5xad9DQyPLuZYj9Wpxi3Ik/Pjh3lCjxZOU7lrBB2ET5lNyOMEmFqdBEdH5ifg+tVdc8P3Li0XUnJxqtlRSX7SkfQFfCj8brP0/5p3q0P0uVZebwh1WERrWroZjr5Qa+YkKUoXXO5d0A1dNmrDq9hBdbQEXCJsYVbxjAeCSuHjKbBR3p/YhVUMhGR+0s83jJqmejmKKpwNpcl9g7fUMivrWbjHz3PWHQafhhCs9E65MF4HAEf3TJfrj86rzpbMwfklR+Ne5yYTo/tVfSJhtBv2Zenzz7R8/eq3PSmF+jtRgy/43UAxSYsBZNus/V+BrLdl8dxWrHx1E+upgXc4kFFAKTvyV2a4qlsuDnrgmFpwVU38ZowjXozlLyR1YHjV0wtsh/RyC96uCDB7ESbNcSGxGlho=----ATTACHMENT:----NjQ3MDg4MzExMDIyNjU0NSAyMzkyNTYxODAyNTEzNDAxIDUwMzI2NzE0NDE4MzQ4Mg==