Esempio n. 1
0
        private void OnEncrypt(BufferData data, ref int length)
        {
            var paddingCount = (byte)(8 - length % 8);

            var tempArray = BufferManager.RequestBuffer();

            tempArray[0] = paddingCount;

            BufferData.Copy(data, data.Offset, tempArray, paddingCount, length);

            length += paddingCount;

            GameCryptManager.Encrypt(tempArray.Buffer, tempArray.BaseOffset, ref length, length, Data);

            BufferData.Copy(tempArray, 0, data, data.Offset, length);

            BufferManager.FreeBuffer(tempArray);
        }
Esempio n. 2
0
        private bool OnDecrypt(BufferData data)
        {
            var result = GameCryptManager.Decrypt(data.Buffer, data.BaseOffset + data.Offset, data.RemainingLength, Data);

            if (!result)
            {
                return(false);
            }

            var blowfishPadding = data[data.Offset] & 0xF;

            if (blowfishPadding > 8)
            {
                throw new Exception("More than 8 bytes of blowfish padding was added to the packet?");
            }

            data.Offset += blowfishPadding;

            return(true);
        }
Esempio n. 3
0
        private void OnReceive(BufferData data)
        {
            var packet = new ClientKeyPacket();

            packet.Read(data.GetReader());

            DHKeyExchange.GenerateServerK(PrivateKey, packet.B, K);

            var key = new byte[64];

            K.WriteToBigEndian(key, 0, key.Length);

            GameCryptManager.Initialize(Data, key);

            Socket.Send(new ClientKeyOkPacket());

            Cleanup();

            Manager.ExchangeDone(this);
        }
Esempio n. 4
0
 private void OnEncrypt(BufferData data, ref int length)
 {
     GameCryptManager.Encrypt(data.Buffer, data.BaseOffset + data.Offset, ref length, data.RemainingLength, Data);
 }