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:----W6cO565evv5okbZvVr3gHALGvnfqjCuAaOJ3SrjZoS/O/iMRFKj92p8QHF/UnrElRQCyw1ZdUFDoNA/Yi5CnpPh+ddqNuafkeyGRkGUp9f05LZkQps30Sysy57id8BMRLAt9s2BwpoJU/eXJ2df2EBwWLWWyMTnxx2DGFqW2307xrF7vsV9hnlVjw2hSyfEFCauo3zbePxJlhnoFyI00/quQ7jFR5pQW0U+2EoXE1XtVrKAXEmuBd6AGJmtW86XTwKBYEO47yTjVmq+6U1GUExJpA5+aUyaLBzNEZoXMbkiaD7vEBGLFPbyOxiMD922MjUNWOuDwv2cHjVJj2K+EJFSqlvcZ8w1OAnBphjjpn3fxF/bX+fqr/ga2Vz7Cy+kO1ET7ELHJbgDCIw9UxLpX+u3FYTOw7kTeW1c9YBVLNdb7Ln/qdpjxIeUKdMN+8nm5qHaEN0oO+GSc7XgAt7AznCgZffZy9wn5WoEpM88atlym4BYSHa0sLnPdPvdzNM5xU5c+wsPOhHtgP3sM8DxfopwoGangPYUeexOxv6WhC6nk8wE4dVj7b5srzoNYfSpq5PJLwj0RzzbUTnC+cXSG9b4wwpszOH6WwnFrJp37MJQFp1AtSx7yHC4Gv7kbxkPHjAiA4mteEBrbEXmeT5McpI3/3Aibi5IyofcKGNDGabA=----ATTACHMENT:----MzQ0NTkzODgxMTYxNjAxMSA4NzEzOTUyODA5MzExOTY2IDk4NTY1ODk5MzM1Mzc2NTU=