Exemple #1
0
        public void Deserialise(Header header, Packet payload)
        {
            ShortPacket sp = (ShortPacket)payload;

            SessionId = StringUtils.ASCIIBytesToString(sp.Data, 1, sp.Data.Length - 1);
            EventType = (EventType)sp.ShortDatum;
        }
        public void Read_Protected_ResultBytesAreExpected()
        {
            //Arrange
            var messageBytes        = Utils.ParseHexString(GetProtectedMessageHex());
            var destConnectionId    = PacketConnectionId.Empty;
            var packetNumbers       = GetPacketNumbersHex();
            var currentPacketNumber = PacketNumber.Parse(Utils.ParseHexString(packetNumbers.Current));
            var largestPacketNumber = PacketNumber.Parse(Utils.ParseHexString(packetNumbers.Largest));
            var secrets             = GetSecrets();
            var aead   = Cipher.TLS_CHACHA20_POLY1305_SHA256.CreateAead(Utils.ParseHexString(secrets.Iv), Utils.ParseHexString(secrets.Key));
            var cipher = Cipher.TLS_CHACHA20_POLY1305_SHA256.CreateCipher(Utils.ParseHexString(secrets.Hp));

            //Act
            var cursor = new MemoryCursor(messageBytes);

            var result = ShortPacket.TryParseProtectedByConnectionId(aead, cipher, cursor, destConnectionId, largestPacketNumber, out var packet);

            using (packet.Payload.SetCursor(cursor))
            {
                result &= PingFrame.TryParse(cursor);

                result &= cursor.IsEnd();
            }

            result &= cursor.IsEnd();

            //Assert
            Assert.True(result);
            Assert.Equal(destConnectionId, packet.DestinationConnectionId);
            Assert.Equal(currentPacketNumber, packet.Number);
        }
Exemple #3
0
        public void Deserialise(Header header, Packet payload)
        {
            ShortPacket sp = (ShortPacket)payload;

            _unkData       = sp.Data;
            _unkShortDatum = sp.ShortDatum;
        }
Exemple #4
0
        public void Deserialise(Header header, Packet payload)
        {
            ShortPacket sp = (ShortPacket)payload;

            Debug.Assert(sp.Data.Length == 2);

            FrameNumber = (sp.Data[1] << 8 & 0xff00) | (sp.Data[0] & 0xff);

            _unkShortDatum = sp.ShortDatum;
        }
Exemple #5
0
        public void Deserialise(Header header, Packet payload)
        {
            ShortPacket p = (ShortPacket)payload;

            CarId     = header.CarId;
            CarType   = header.CarType;
            BaseShort = p.ShortDatum;
            BaseData  = (p.Data == null) ? String.Empty : StringUtils.ASCIIBytesToString(p.Data);

            OnDeserialiseComplete();
        }
Exemple #6
0
        public void TestShortPacket()
        {
            Header h = new Header(Input);

            ShortPacket sp = new ShortPacket(h, Input);

            Assert.IsTrue(sp.IsComplete);
            Assert.AreEqual(0, sp.ShortDatum);

            byte[] testData = new byte[] { 0x02, 0x5f, 0x30, 0x39, 0x30, 0x34, 0x31, 0x39, 0x30, 0x35 };

            Assert.AreEqual(10, sp.Data.Length);

            for (int i = 0; i < 10; ++i)
            {
                Assert.AreEqual(testData[i], sp.Data[i]);
            }
        }
        public void Deserialise(Header header, Packet payload)
        {
            ShortPacket sp = (ShortPacket)payload;

            if (sp.ShortDatum == 1)
            {
                int status = int.Parse(StringUtils.ASCIIBytesToString(sp.Data), CultureInfo.InvariantCulture);
                switch (status)
                {
                case 1:
                    Status = Colour.Green;
                    break;

                case 2:
                    Status = Colour.Yellow;
                    break;

                case 3:
                    Status  = Colour.Yellow;
                    Message = "SCS";
                    break;

                case 4:
                    Status  = Colour.Yellow;
                    Message = "SCD";
                    break;

                case 5:
                    Status = Colour.Red;
                    break;

                default:
                    throw new DeserialiseException("Unknown track status, status: " + status);
                }
            }
            else
            {
                throw new DeserialiseException("Unknown track status, short: " + sp.ShortDatum + ", data: " + HexString.BytesToHex(sp.Data));
            }
        }
        public void Write_Protected_ResultBytesAreExpected()
        {
            //Arrange
            var expectedBytes       = GetProtectedMessageHex();
            var buffer              = new byte[PacketBuffer.MaxPacketSize];
            var destConnectionId    = PacketConnectionId.Empty;
            var packetNumbers       = GetPacketNumbersHex();
            var currentPacketNumber = PacketNumber.Parse(Utils.ParseHexString(packetNumbers.Current));
            var largestPacketNumber = PacketNumber.Parse(Utils.ParseHexString(packetNumbers.Largest));
            var secrets             = GetSecrets();
            var aead   = Cipher.TLS_CHACHA20_POLY1305_SHA256.CreateAead(Utils.ParseHexString(secrets.Iv), Utils.ParseHexString(secrets.Key));
            var cipher = Cipher.TLS_CHACHA20_POLY1305_SHA256.CreateCipher(Utils.ParseHexString(secrets.Hp));

            //Act
            var cursor = new MemoryCursor(buffer);

            using (ShortPacket.StartProtectedWriting(aead, cipher, cursor, destConnectionId, currentPacketNumber, largestPacketNumber))
            {
                PingFrame.Write(cursor);
            }

            //Assert
            Assert.Equal(expectedBytes, Utils.ToHexString(cursor.PeekStart().ToArray()), true);
        }