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); }
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); }