package net.glowstone.net.codec.login; import com.flowpowered.networking.Codec; import com.flowpowered.networking.util.ByteBufUtils; import io.netty.buffer.ByteBuf; import net.glowstone.net.message.login.EncryptionKeyRequestMessage; import java.io.IOException; public final class EncryptionKeyRequestCodec implements Codec<EncryptionKeyRequestMessage> { @Override public EncryptionKeyRequestMessage decode(ByteBuf buffer) throws IOException { String sessionId = ByteBufUtils.readUTF8(buffer); byte[] publicKey = new byte[ByteBufUtils.readVarInt(buffer)]; buffer.readBytes(publicKey); byte[] verifyToken = new byte[ByteBufUtils.readVarInt(buffer)]; buffer.readBytes(verifyToken); return new EncryptionKeyRequestMessage(sessionId, publicKey, verifyToken); } @Override public ByteBuf encode(ByteBuf buf, EncryptionKeyRequestMessage message) throws IOException { ByteBufUtils.writeUTF8(buf, message.getSessionId()); ByteBufUtils.writeVarInt(buf, message.getPublicKey().length); buf.writeBytes(message.getPublicKey()); ByteBufUtils.writeVarInt(buf, message.getVerifyToken().length); buf.writeBytes(message.getVerifyToken()); return buf; } }