MailKit.Security.Ntlm.Type1Message.Encode C# (CSharp) Method

Encode() public method

public Encode ( ) : byte[]
return byte[]
		public override byte[] Encode ()
		{
			int versionLength = OSVersion != null ? 8 : 0;
			int hostOffset = 32 + versionLength;
			int domainOffset = hostOffset + host.Length;

			var message = PrepareMessage (32 + domain.Length + host.Length + versionLength);

			message[12] = (byte) Flags;
			message[13] = (byte)((uint) Flags >> 8);
			message[14] = (byte)((uint) Flags >> 16);
			message[15] = (byte)((uint) Flags >> 24);

			message[16] = (byte) domain.Length;
			message[17] = (byte)(domain.Length >> 8);
			message[18] = message[16];
			message[19] = message[17];
			message[20] = (byte) domainOffset;
			message[21] = (byte)(domainOffset >> 8);

			message[24] = (byte) host.Length;
			message[25] = (byte)(host.Length >> 8);
			message[26] = message[24];
			message[27] = message[25];
			message[28] = (byte) hostOffset;
			message[29] = (byte)(hostOffset >> 8);

			if (OSVersion != null) {
				message[32] = (byte) OSVersion.Major;
				message[33] = (byte) OSVersion.Minor;
				message[34] = (byte)(OSVersion.Build);
				message[35] = (byte)(OSVersion.Build >> 8);
				message[36] = 0x00;
				message[37] = 0x00;
				message[38] = 0x00;
				message[39] = 0x0f;
			}

			var hostName = Encoding.UTF8.GetBytes (host.ToUpperInvariant ());
			Buffer.BlockCopy (hostName, 0, message, hostOffset, hostName.Length);

			var domainName = Encoding.UTF8.GetBytes (domain.ToUpperInvariant ());
			Buffer.BlockCopy (domainName, 0, message, domainOffset, domainName.Length);

			return message;
		}
	}

Usage Example

Esempio n. 1
0
		public void TestNtlmType1MessageEncode ()
		{
			var type1 = new Type1Message ("Workstation", "Domain") { OSVersion = new Version (5, 0, 2195) };
			var encoded = type1.Encode ();
			string actual, expected;

			expected = HexEncode (NtlmType1EncodedMessage);
			actual = HexEncode (encoded);

			Assert.AreEqual (expected, actual, "The encoded Type1Message did not match the expected result.");
		}