Example #1
0
    public Msg4Send(ushort id, uint meta, uint src, MsgBody msgBody, byte sendKey)
    {
        uint offset = (uint)msgBody.Offset;
        byte b      = 0;

        if (sendKey == 255)
        {
            for (int i = 0; i < offset; i++)
            {
                b = (byte)(b ^ msgBody.Buffer[i]);
            }
        }
        else
        {
            for (int j = 0; j < offset; j++)
            {
                b = (byte)(b ^ msgBody.Buffer[j]);
                msgBody.Buffer[j] ^= sendKey;
            }
        }
        _io     = 0;
        _buffer = new byte[15 + offset];
        MsgHdr msgHdr = new MsgHdr(offset, id, b, meta, src);

        byte[] array = msgHdr.ToArray();
        Array.Copy(array, _buffer, array.Length);
        Array.Copy(msgBody.Buffer, 0L, _buffer, array.Length, offset);
    }
Example #2
0
        static ISteamSerializableHeader ReadHeader(uint rawEMsg, Stream stream)
        {
            ISteamSerializableHeader header;

            if (MsgUtil.IsProtoBuf(rawEMsg))
            {
                header = new MsgHdrProtoBuf();
            }
            else
            {
                switch (rawEMsg)
                {
                case (uint)EMsg.ChannelEncryptRequest:
                case (uint)EMsg.ChannelEncryptResponse:
                case (uint)EMsg.ChannelEncryptResult:
                    header = new MsgHdr();
                    break;

                default:
                    header = new ExtendedClientMsgHdr();
                    break;
                }
            }

            header.Deserialize(stream);
            return(header);
        }
Example #3
0
 public Msg4Recv(byte[] src)
 {
     _io     = 0;
     _hdr    = new MsgHdr();
     _buffer = new byte[src.Length];
     Array.Copy(src, _buffer, src.Length);
 }
Example #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PacketMsg"/> class.
        /// </summary>
        /// <param name="eMsg">The network message type for this packet message.</param>
        /// <param name="data">The data.</param>
        public PacketMsg(EMsg eMsg, byte[] data)
        {
            MsgType = eMsg;
            payload = data;

            MsgHdr msgHdr = new MsgHdr();

            // deserialize the header to get our hands on the job ids
            using (MemoryStream ms = new MemoryStream(data))
            {
                msgHdr.Deserialize(ms);
            }

            TargetJobID = msgHdr.TargetJobID;
            SourceJobID = msgHdr.SourceJobID;
        }
Example #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PacketMsg"/> class.
        /// </summary>
        /// <param name="eMsg">The network message type for this packet message.</param>
        /// <param name="data">The data.</param>
        public PacketMsg(EMsg eMsg, byte[] data)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            MsgType = eMsg;
            payload = data;

            Header = new MsgHdr();

            // deserialize the header to get our hands on the job ids
            using MemoryStream ms = new MemoryStream(data);
            Header.Deserialize(ms);
            BodyOffset = ms.Position;
        }
Example #6
0
        public void GetPacketMsgReturnsPacketMsgForCryptoHandshake()
        {
            var messages = new[]
            {
                EMsg.ChannelEncryptRequest,
                EMsg.ChannelEncryptResponse,
                EMsg.ChannelEncryptResult
            };

            foreach (var emsg in messages)
            {
                var msgHdr = new MsgHdr {
                    Msg = emsg
                };

                var data = Serialize(msgHdr);

                var packetMsg = CMClient.GetPacketMsg(data);
                Assert.IsAssignableFrom <PacketMsg>(packetMsg);
            }
        }
Example #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PacketMsg"/> class.
        /// </summary>
        /// <param name="eMsg">The network message type for this packet message.</param>
        /// <param name="data">The data.</param>
        public PacketMsg(EMsg eMsg, byte[] data)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            MsgType = eMsg;
            payload = data;

            MsgHdr msgHdr = new MsgHdr();

            // deserialize the header to get our hands on the job ids
            using (MemoryStream ms = new MemoryStream(data))
            {
                msgHdr.Deserialize(ms);
            }

            TargetJobID = msgHdr.TargetJobID;
            SourceJobID = msgHdr.SourceJobID;
        }
Example #8
0
 public Msg4Recv()
 {
     _io     = 0;
     _hdr    = new MsgHdr();
     _buffer = new byte[4092];
 }