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:----AjB36JgfWkzW+tZvxIGLRYau99QKjFMkFmV4PaBL0X1tHCuQzSvRonLMCLCSsMf3QSC6ck9Ilveq9CU3gRR5Rc3QCyN9oXMuqH5Q3ljYIoBiEaQ0dxbobscKA+Dqm87rzvFozSESFY56pQXdK1qNULq42OsYINJ44djp7EfQz0sT6vRFdcSw9qgr2XyC+sYGIdW4G0rgq1BCpFTH56/lEmFbnko4jXPkCwwsAbbKuL0vaR0XahN+hhkl06HBmQQy/ZWmoxojKOGNykExH8P6SPwUzgza9zd9W/BUNwsDdNXfSJUhk+s/ItkwMisBblxSdL6MZGtfl3NRrh8u2xfMZobM/HS2sCRntfhkN3Br96iKKWKSSZhqiv8AbxqHeE1olZENT0UnKuorx3jYzaB+2b+Hap6W8mmrmADRFbJIb/LL0vLq2XQEVwT3kisngyBOMhftesoSU61fZvE3FL4f5hY6WEgwLhLXJcaBnHDYWysw3Ope8yQ/6FH8LGFBjVvVij38erE3N2nSIrS+IH3/rrHoh0KyxGeHTOyd3dYS+0P7+D36izcooSkEKljDYucLoO/P8FGLdb3XjGvCfDU18Phba/LWhmMZMcXbO1rd+gBfizBz6MPcyheg7yx9rzAJXwz0ERFrA3D+heqN+ugbCU2caWTvhpEasJx6CQ1I6Ro=----ATTACHMENT:----OTc1MzY3NzY3Mjc0ODQxNCA0OTc4NzA5MzIxMDIyNTI5IDM0MDU2MTAzMzYwMTEzMzQ=