Example #1
0
        public static MessagePartPacket Decode(byte[] udpData)
        {
            var r = new MessagePartPacket();

            r.DecodedUdpData = udpData;
            var reader = PacketProcedures.CreateBinaryReader(udpData, 1);

            r.MessageId32  = reader.ReadUInt32();
            r.SenderStatus = (MessageSessionStatusCode)reader.ReadByte();
            var flags = reader.ReadByte();

            if ((flags & FlagsMask_MustBeZero) != 0)
            {
                throw new NotImplementedException();
            }

            if (r.SenderStatus == MessageSessionStatusCode.inProgress)
            {
                r.ContinuedEncryptedData = PacketProcedures.DecodeByteArray65536(reader);
            }
            else if (r.SenderStatus == MessageSessionStatusCode.encryptionDecryptionCompleted)
            {
                r.SenderSignature = UserCertificateSignature.Decode(reader);
            }

            r.MessageHMAC = HMAC.Decode(reader);
            return(r);
        }
Example #2
0
        public static InviteAck2Packet Decode(byte[] udpData)
        {
            var r = new InviteAck2Packet();

            r.DecodedUdpPayloadData = udpData;
            var reader = PacketProcedures.CreateBinaryReader(udpData, 1);
            var flags  = reader.ReadByte();

            if ((flags & FlagsMask_MustBeZero) != 0)
            {
                throw new NotImplementedException();
            }

            r.NeighborToken32 = NeighborToken32.Decode(reader);

            r.ReqTimestamp32S         = reader.ReadUInt32();
            r.RequesterRegistrationId = RegistrationId.Decode(reader);
            r.ResponderRegistrationId = RegistrationId.Decode(reader);
            r.ToRequesterSessionDescriptionEncrypted = PacketProcedures.DecodeByteArray65536(reader);
            r.RequesterRegistrationSignature         = RegistrationSignature.Decode(reader);
            r.ReqP2pSeq16 = RequestP2pSequenceNumber16.Decode(reader);

            r.NeighborHMAC = HMAC.Decode(reader);
            return(r);
        }
Example #3
0
        public static MessageStartPacket Decode(byte[] udpData)
        {
            var r = new MessageStartPacket();

            r.DecodedUdpData = udpData;
            var reader = PacketProcedures.CreateBinaryReader(udpData, 1);

            r.DirectChannelToken32 = DirectChannelToken32.Decode(reader);
            r.MessageId32          = reader.ReadUInt32();

            var flags = reader.ReadByte();

            if ((flags & FlagsMask_MustBeZero) != 0)
            {
                throw new NotImplementedException();
            }

            r.MessageTimestamp64   = reader.ReadInt64();
            r.EncryptedMessageData = PacketProcedures.DecodeByteArray65536(reader);
            r.MessageHMAC          = HMAC.Decode(reader);
            return(r);
        }