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)); }