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:----gHepGJjEqQYie+VNE8kEbRYRg63zHhkZMzF4zf3rTNWjgrQfPLr72cd8HZlZcyAxq9Ilcf30TSxP+aApeZofSORfysQEeAwUxxYpkD9cDsp/4wPWvheiaC7Zwy2+WmoEabH4NgPxq8Wh1H/YVLAWULjdY+DXpR2t5dXWpwUabf0amVo3F+5h7z3tA5W0/wPb8TsjJsRT0ky9ZnA5zE74iJo0a16WFuXUnnjZ1ZnrqZral4YSMsUFdJ5Mqcw9lEe3ve8EMGJmKrW808df7EzA52zm7Ii+oirobiNKVCD4ymDlzrU/rOyvkD1VAuViuUI+26WDjjy9KyhT9HE1gWPjDvN4XEKp7DpaKpIhHPscT4bBObKGScb7S5md5IZYrxjx5+6ExrQBy7KdcmfSGVMivH8K2L91C8GHwcM/E0BzasAfkDkf+F+hmO/AvMeDN5uamlJRtVpjuW7UOhCONGw5aSbIxHMHjMq6kvRhHQSsiNs3fkf3dmUnoHGiBXvqIrLQSnsG5dz9xm5m4aqDJbDkUjRlxtU4sqMLK9h996/Jbqs7ww2ia/19Nv7eDXrpxp3PZHiJMT7ORF88B0IYl3mNdAWuvAd63E6QT9583d/JMMjXGEDCNGF8kDwXrM04pnKmEAMte/WZqqbAA2rRYoWypJQ2Yc421cbYrZP7noRdmOQ=----ATTACHMENT:----Mzg1NjI2NTkxNDg1Njg2MiA1MjY4NTA0Nzg1MTY3NTYxIDI5NzU5MjE1NTg3MjIxMDI=