Ejemplo n.º 1
0
        private void SendTurn(TurnMessage message, ServerEndPoint local, IPEndPoint remote)
        {
            ServerAsyncEventArgs p;
            int offset;

            message.ComputeMessageLength();

            GetBuffer(local, remote, message.TotalMessageLength, out p, out offset);

            message.GetBytes(p.Buffer, offset, Authentificater.Key2);

            turnServer.SendAsync(p);
        }
Ejemplo n.º 2
0
        private void SendMessage(Socket socket, TurnMessage message)
        {
            byte[] buffer1 = new byte[4096];

            message.ComputeMessageLength();
            message.GetBytes(buffer1, TcpFramingHeader.TcpFramingHeaderLength, key2);

            TcpFramingHeader.GetBytes(buffer1, 0, TcpFrameType.ControlMessage, message.TotalMessageLength);

            int size = TcpFramingHeader.TcpFramingHeaderLength + message.TotalMessageLength;

            if (socket.Send(buffer1, size, SocketFlags.None) != size)
            {
                throw new Exception("Send failed!");
            }
        }
Ejemplo n.º 3
0
        public void MS_Message_Integrity_With_Data_Offset_In_Array()
        {
            var key2 = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

            var created = new TurnMessage()
            {
                MessageType   = MessageType.AllocateRequest,
                TransactionId = TransactionId.Generate(),
                MagicCookie   = new MagicCookie(),
                MsVersion     = new MsVersion()
                {
                    Value = 1,
                },
                MsUsername = new MsUsername()
                {
                    Value = new byte[52],
                },
                Nonce = new Nonce(TurnMessageRfc.MsTurn)
                {
                    Value = "17938999-C63D-41cd-87A4-FE80975F03BA",
                },
                Realm = new Realm(TurnMessageRfc.MsTurn)
                {
                    Value = "test.test",
                },
                MessageIntegrity = new MessageIntegrity(),
            };

            int offset = 120;
            var buffer = new byte[4096];

            created.ComputeMessageLength();
            created.GetBytes(buffer, offset, key2);

            var parsed = TurnMessage.Parse(buffer, offset, created.TotalMessageLength, TurnMessageRfc.MsTurn);

            Assert.IsTrue(parsed.IsValidMessageIntegrity(key2));
        }
Ejemplo n.º 4
0
        public void MsTurnMessageTest5()
        {
            byte[] bytes = new byte[]
            {
                0x00, 0x03, 0x00, 0x9B,
                0x4A, 0x07, 0x32, 0x01,
                0x52, 0x11, 0xE9, 0x94,
                0xAE, 0x02, 0x4A, 0x13,
                0x8A, 0xA2, 0x0D, 0x26,
                0x00, 0x0F, 0x00, 0x04,
                0x72, 0xC6, 0x4B, 0xC6,
                0x80, 0x08, 0x00, 0x04,
                0x00, 0x00, 0x00, 0x01,
                0x00, 0x06, 0x00, 0x34,
                0x01, 0x00, 0x00, 0x20,
                0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00,
                0x4C, 0x6F, 0x67, 0x2E,
                0x88, 0xC2, 0xF8, 0xDE,
                0xB8, 0x4E, 0x72, 0x65,
                0x5C, 0x43, 0x31, 0x49,
                0x07, 0x94, 0x46, 0xC2,
                0x19, 0x77, 0x73, 0x92,
                0xE0, 0x24, 0x03, 0x08,
                0x1D, 0x86, 0x27, 0xA8,
                0x50, 0x45, 0x1D, 0xB5,
                0x41, 0x8E, 0xC6, 0xCA,
                0x00, 0x14, 0x00, 0x24,
                0x61, 0x34, 0x31, 0x66,
                0x37, 0x61, 0x63, 0x35,
                0x2D, 0x38, 0x32, 0x37,
                0x64, 0x2D, 0x34, 0x30,
                0x65, 0x37, 0x2D, 0x38,
                0x35, 0x31, 0x33, 0x2D,
                0x63, 0x35, 0x66, 0x36,
                0x39, 0x31, 0x65, 0x35,
                0x66, 0x61, 0x64, 0x34,
                0x00, 0x15, 0x00, 0x0F,
                0x6F, 0x66, 0x66, 0x69,
                0x63, 0x65, 0x73, 0x69,
                0x70, 0x2E, 0x6C, 0x6F,
                0x63, 0x61, 0x6C, 0x00,
                0x08, 0x00, 0x14, 0xE3,
                0xB3, 0x88, 0x94, 0x79,
                0x3B, 0x28, 0x3A, 0x34,
                0x67, 0xA4, 0x46, 0xAD,
                0xD5, 0x6C, 0xD0, 0xE6,
                0xA7, 0x50, 0x90,
            };

            byte[] key2 = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, };

            TurnMessage message = TurnMessage.Parse(bytes, TurnMessageRfc.MsTurn);

            message.MessageIntegrity = new MessageIntegrity();

            message.ComputeMessageLength();

            int offset   = 25;
            int length64 = offset + message.TotalMessageLength;

            if (length64 % 64 != 0)
            {
                length64 += 64 - length64 % 64;
            }
            byte[] bytes2 = new byte[length64];

            message.GetBytes(bytes2, offset, key2);

            Helpers.AreArrayEqual(bytes, 0, bytes2, offset);
        }