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

Encode() public method

public Encode ( bool unicode ) : byte[]
unicode bool
return byte[]
		public byte[] Encode (bool unicode)
		{
			var buf = new byte[CalculateSize (unicode)];
			int index = 0;

			if (!string.IsNullOrEmpty (DomainName))
				EncodeString (buf, ref index, 2, DomainName, unicode);

			if (!string.IsNullOrEmpty (ServerName))
				EncodeString (buf, ref index, 1, ServerName, unicode);

			if (!string.IsNullOrEmpty (DnsDomainName))
				EncodeString (buf, ref index, 4, DnsDomainName, unicode);

			if (!string.IsNullOrEmpty (DnsServerName))
				EncodeString (buf, ref index, 3, DnsServerName, unicode);

			if (!string.IsNullOrEmpty (DnsTreeName))
				EncodeString (buf, ref index, 5, DnsTreeName, unicode);

			if (Flags.HasValue)
				EncodeFlags (buf, ref index, 6, Flags.Value);

			if (Timestamp != 0)
				EncodeTimestamp (buf, ref index, 7, Timestamp);

			if (!string.IsNullOrEmpty (TargetName))
				EncodeString (buf, ref index, 9, TargetName, unicode);

			return buf;
		}
	}

Usage Example

Esempio n. 1
0
        public override byte[] Encode()
        {
            int targetNameOffset = 40;
            int targetInfoOffset = 48;

            byte[] targetName = null;
            int    size       = 40;

            if (TargetName != null)
            {
                var encoding = (Flags & NtlmFlags.NegotiateUnicode) != 0 ? Encoding.Unicode : Encoding.UTF8;

                targetName        = encoding.GetBytes(TargetName);
                targetInfoOffset += targetName.Length;
                size             += targetName.Length;
            }

            if (TargetInfo != null || targetInfo != null)
            {
                if (targetInfo == null)
                {
                    targetInfo = TargetInfo.Encode((Flags & NtlmFlags.NegotiateUnicode) != 0);
                }
                size             += targetInfo.Length + 8;
                targetNameOffset += 8;
            }

            var data = PrepareMessage(size);

            // message length
            short length = (short)data.Length;

            data[16] = (byte)length;
            data[17] = (byte)(length >> 8);

            // flags
            data[20] = (byte)Flags;
            data[21] = (byte)((uint)Flags >> 8);
            data[22] = (byte)((uint)Flags >> 16);
            data[23] = (byte)((uint)Flags >> 24);

            Buffer.BlockCopy(nonce, 0, data, 24, nonce.Length);

            if (targetName != null)
            {
                data[12] = (byte)targetName.Length;
                data[13] = (byte)(targetName.Length >> 8);
                data[14] = (byte)targetName.Length;
                data[15] = (byte)(targetName.Length >> 8);
                data[16] = (byte)targetNameOffset;
                data[17] = (byte)(targetNameOffset >> 8);

                Buffer.BlockCopy(targetName, 0, data, targetNameOffset, targetName.Length);
            }

            if (targetInfo != null)
            {
                data[40] = (byte)targetInfo.Length;
                data[41] = (byte)(targetInfo.Length >> 8);
                data[42] = (byte)targetInfo.Length;
                data[43] = (byte)(targetInfo.Length >> 8);
                data[44] = (byte)targetInfoOffset;
                data[45] = (byte)(targetInfoOffset >> 8);

                Buffer.BlockCopy(targetInfo, 0, data, targetInfoOffset, targetInfo.Length);
            }

            return(data);
        }
All Usage Examples Of MailKit.Security.Ntlm.TargetInfo::Encode