001 package net.minecraft.network.packet;
002
003 import cpw.mods.fml.relauncher.Side;
004 import cpw.mods.fml.relauncher.SideOnly;
005 import java.io.DataInputStream;
006 import java.io.DataOutputStream;
007 import java.io.IOException;
008 import java.security.PublicKey;
009 import net.minecraft.util.CryptManager;
010
011 public class Packet253ServerAuthData extends Packet
012 {
013 private String serverId;
014 private PublicKey publicKey;
015 private byte[] verifyToken = new byte[0];
016
017 public Packet253ServerAuthData() {}
018
019 public Packet253ServerAuthData(String par1Str, PublicKey par2PublicKey, byte[] par3ArrayOfByte)
020 {
021 this.serverId = par1Str;
022 this.publicKey = par2PublicKey;
023 this.verifyToken = par3ArrayOfByte;
024 }
025
026 /**
027 * Abstract. Reads the raw packet data from the data stream.
028 */
029 public void readPacketData(DataInputStream par1DataInputStream) throws IOException
030 {
031 this.serverId = readString(par1DataInputStream, 20);
032 this.publicKey = CryptManager.decodePublicKey(readBytesFromStream(par1DataInputStream));
033 this.verifyToken = readBytesFromStream(par1DataInputStream);
034 }
035
036 /**
037 * Abstract. Writes the raw packet data to the data stream.
038 */
039 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
040 {
041 writeString(this.serverId, par1DataOutputStream);
042 writeByteArray(par1DataOutputStream, this.publicKey.getEncoded());
043 writeByteArray(par1DataOutputStream, this.verifyToken);
044 }
045
046 /**
047 * Passes this Packet on to the NetHandler for processing.
048 */
049 public void processPacket(NetHandler par1NetHandler)
050 {
051 par1NetHandler.handleServerAuthData(this);
052 }
053
054 /**
055 * Abstract. Return the size of the packet (not counting the header).
056 */
057 public int getPacketSize()
058 {
059 return 2 + this.serverId.length() * 2 + 2 + this.publicKey.getEncoded().length + 2 + this.verifyToken.length;
060 }
061
062 @SideOnly(Side.CLIENT)
063 public String getServerId()
064 {
065 return this.serverId;
066 }
067
068 @SideOnly(Side.CLIENT)
069 public PublicKey getPublicKey()
070 {
071 return this.publicKey;
072 }
073
074 @SideOnly(Side.CLIENT)
075 public byte[] getVerifyToken()
076 {
077 return this.verifyToken;
078 }
079 }