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    }