protected static function signData(
        ReadOnlyFile $input,
        SignatureSecretKey $secretKey,
        $encoding = Halite::ENCODE_BASE64URLSAFE
    ): string {
        $checksum = self::checksumData(
            $input,
            $secretKey->derivePublicKey(),
            true
        );
        return AsymmetricCrypto::sign(
            $checksum,
            $secretKey,
            $encoding
        );
    }