Ejemplo n.º 1
0
        public void MsTurnMessageTest()
        {
            byte[] bytes = new byte[]
            {
                //0x00, 0x04, 0x23, 0x1E,
                //0xE6, 0x2D, 0x50, 0x18,
                //0x3F, 0x87, 0xF0, 0x9A,
                //0x00, 0x00, 0x02, 0x00,
                //0x00, 0xB1,
                0x00, 0x03,
                0x00, 0x9D, 0x30, 0xB8,
                0xC9, 0xC7, 0xAF, 0xFC,
                0xF4, 0xA2, 0x4D, 0xDB,
                0x6E, 0x2A, 0x0A, 0xE0,
                0xEA, 0x5D, 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, 0x26, 0x62, 0x62,
                0x30, 0x30, 0x65, 0x65,
                0x30, 0x32, 0x2D, 0x31,
                0x62, 0x38, 0x38, 0x2D,
                0x34, 0x31, 0x39, 0x35,
                0x2D, 0x39, 0x38, 0x34,
                0x34, 0x2D, 0x39, 0x38,
                0x36, 0x39, 0x64, 0x37,
                0x38, 0x39, 0x30, 0x33,
                0x62, 0x61, 0x78, 0x78,
                0x00, 0x15, 0x00, 0x0F,
                0x6F, 0x66, 0x66, 0x69,
                0x63, 0x65, 0x73, 0x69,
                0x70, 0x2E, 0x6C, 0x6F,
                0x63, 0x61, 0x6C,
                0x00, 0x08, 0x00, 0x14,                 //     MESSAGE-INTEGRITY attribute header
                0x29,                                   //  }
                0x48, 0x38, 0xD7, 0x37,                 //  }
                0x62, 0xB1, 0x26, 0x70,                 //  }  HMAC-SHA1
                0x95, 0xA3, 0x13, 0xAF,                 //  }
                0xA3, 0xBE, 0x78, 0x86,                 //  }
                0xFE, 0x53, 0x08,                       //  }
            };

            byte[] key1           = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, };
            byte[] key2           = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, };
            string nonce          = "bb00ee02-1b88-4195-9844-9869d78903baxx";
            string realm          = "officesip.local";
            string usernameBase64 = @"AQAAIAAAAAAAAAAATG9nLojC+N64TnJlXEMxSQeURsIZd3OS4CQDCB2GJ6hQRR21QY7Gyg==";
            string passwordBase64 = @"oUU0sl7OCLQNpLUYuI1cX7OAwXE=";

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

            Assert.AreEqual(MessageType.AllocateRequest, message.MessageType);
            Assert.AreEqual(nonce, message.Nonce.Value);
            Assert.AreEqual(realm, message.Realm.Value);
            Assert.AreEqual(usernameBase64, Convert.ToBase64String(message.MsUsername.Value));
            Assert.IsTrue(message.IsValidMsUsername(key1));
            Assert.AreEqual(passwordBase64, Convert.ToBase64String(message.ComputeMsPasswordBytes(key2)));
            Assert.IsTrue(message.IsValidMessageIntegrity(key2), @"IsValidMessageIntegrity failed.");

            message.MessageIntegrity = new MessageIntegrity();
            Helpers.AreArrayEqual(bytes, message.GetBytes(key2));
        }