コード例 #1
0
ファイル: TurnMessageTest.cs プロジェクト: vf1/turnmessage
        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));
        }
コード例 #2
0
ファイル: TurnServerTest.cs プロジェクト: vf1/turnserver
        public void DoubleTcpAllocationTest()
        {
            var msUsername = new MsUsername()
            {
                Value = new byte[52],
            };

            using (HMACSHA1 sha1 = new HMACSHA1(key1))
            {
                sha1.ComputeHash(msUsername.Value, 0, msUsername.TokenBlobLength);
                Array.Copy(sha1.Hash, 0, msUsername.Value, msUsername.TokenBlobLength, MsUsername.HashOfTokenBlobLength);
            }

            var allocate1 = new TurnMessage()
            {
                MessageType   = MessageType.AllocateRequest,
                TransactionId = TransactionId.Generate(),

                MagicCookie = new MagicCookie(),
                MsVersion   = new MsVersion()
                {
                    Value = 1,
                },
                MsUsername = msUsername,
            };

            var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            socket.Connect(turnIp, tcpPort);

            var allocate1response = SendReceiveMessage(socket, allocate1);

            Assert.AreEqual(MessageType.AllocateErrorResponse, allocate1response.MessageType);
            Assert.AreEqual(401, allocate1response.ErrorCodeAttribute.ErrorCode);

            var allocate2 = new TurnMessage()
            {
                MessageType   = MessageType.AllocateRequest,
                TransactionId = TransactionId.Generate(),

                MagicCookie = new MagicCookie(),
                MsVersion   = new MsVersion()
                {
                    Value = 1,
                },
                MsUsername = msUsername,
                Nonce      = allocate1response.Nonce,
                Realm      = new Realm(TurnMessageRfc.MsTurn)
                {
                    Value = realm,
                },
                MessageIntegrity = new MessageIntegrity(),
            };

            var allocate2response = SendReceiveMessage(socket, allocate2);

            Assert.AreEqual(MessageType.AllocateResponse, allocate2response.MessageType);

            var allocate3response = SendReceiveMessage(socket, allocate2);

            Assert.AreEqual(MessageType.AllocateResponse, allocate3response.MessageType);
        }