Example #1
0
        public byte[] Serialize()
        {
            var msgData = Data.Serialize();

            Global.CDKeyCrypt.EncipherPadded(ref msgData);

            var msgLen  = msgData.Length + 5;
            var message = new byte[msgLen];

            message[0] = 0xD3;
            message[4] = (byte)msgData.Length;
            Array.Copy(msgData, 0, message, 5, msgData.Length);

            return(message);
        }
Example #2
0
        public byte[] Serialize(Blowfish blowfishContext = null)
        {
            var msgData = Data.Serialize();

            if (msgData.Length > 0)
            {
                switch (Type)
                {
                case MessageType.GSMessage:
                    XorCrypt.Encrypt(msgData);
                    break;

                case MessageType.GSEncryptMessage:
                    if (blowfishContext == null)
                    {
                        throw new Exception("Missing blowfish key!");
                    }

                    blowfishContext.EncipherPadded(ref msgData);
                    break;

                case MessageType.GameMessage:
                    throw new NotImplementedException("Sending clGameMessage, WAT DO?");
                }
            }

            var msgLen  = msgData.Length + 6;
            var message = new byte[msgLen];

            message[0] = (byte)(msgLen >> 16);
            message[1] = (byte)(msgLen >> 8);
            message[2] = (byte)msgLen;
            message[3] = (byte)((int)Type << 6);
            message[4] = (byte)Code;
            message[5] = (byte)(NumA << 4 | (NumB & 0x0F));
            Array.Copy(msgData, 0, message, 6, msgData.Length);

            return(message);
        }