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