/** * @param string $message * @param string $signature * @param string $signer_public * @return bool * @throws SignatureException * @throws InvalidTypeException */ public static function verify($message, $signature, $signer_public) { # Test to make sure all the required variables are strings. Helpers::isString($message, 'PublicKeyEncryption', 'verify'); Helpers::isString($signature, 'PublicKeyEncryption', 'verify'); Helpers::isString($signer_public, 'PublicKeyEncryption', 'verify'); # Decode the signature from hex $signature = base64_decode(Helpers::hex2bin($signature)); # Decode the signer's public key from hex $signer_public = Helpers::hex2bin($signer_public); if (\Sodium\crypto_sign_verify_detached($signature, $message, $signer_public)) { return true; } else { throw new SignatureException('Signature for message invalid.'); } }