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:----jtmnTW4zZoKylKnTM90INghNXcXcOO3keIN5tcpnY2TqdXXRIE6Z+TWOnD8UIcMT5+GvPQ64KuZ2aFcpYY0dnlx4LP6OXeA2/LX5JmBixs1WR3Fer6yYyPP0zlFCyJ5sku3828VlFzEFwdVlfb2yUq2f8l+nUJAQ7hH4UQC0oWMvwNd2+Rn3fz0v4CtYOVjHMWs1xPuTpyHQMuk72OHZWKdg7rzS4pTBIWWhE/2YJ2w4kdKoUdu/j15CUBqj0Ct8BPZmzMZahb4NAbdgDYAIEXtk0Hp7G5SUP47I059kgNL+YBiQA4gLvXWNUsAlZpiGgmsn9YxgwFK9w0fAY04hAok4rGD5RS7e0tS9ghBXwQ/SZaShPQoJEfnImrvvgcJ6OGwyZ1TD7y/W49J0CA6vhQbn/OvZHDmcy/aGm16nMxweKRO1KxAXxqFgIplp22d5VYd4igrIIALXy6o07eZY1KIy+dXscNIf6/1GpAa+tjqfALjoWog5yx/Z8OReyNQXuueW8cErDvd0b/3riVX1ho7THe3XbTocPGrWAXCJzAsZDdC+3M09ECAzqVTOV5l0AQ8j/y1zb6sVSFxoclfbD/84wxtNkaHgzB7uMiFGa2hAM+Zdqahf+k2438CFjXrzDTWJJDkGWLW6zBamguwA7tA3vqxgpexUenI+2yK9WH4=----ATTACHMENT:----NzU0MjMyNTQ4NDI2NTUyIDUxOTUwMDYwMjQwNzg0NjcgNjgwNjMyNzE4NDY5OTU0NQ==