public virtual void Fill(byte[] data)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (data.Length == 0)
            {
                throw new ArgumentException($"{nameof(data)} array is empty.");
            }

            _message = data.ToStruct <AuthenticationMessageStruct>();
            var encoding = GetEncoding();

            _targetNameBytes  = data.NewCopy(_message.TargetNameOffset, _message.TargetNameLength);
            _userNameBytes    = data.NewCopy(_message.UserNameOffset, _message.UserNameLength);
            _hostNameBytes    = data.NewCopy(_message.HostNameOffset, _message.HostNameLength);
            _lmResponseData   = data.NewCopy(_message.LmResponseOffset, _message.LmResponseLength);
            _ntlmResponseData = data.NewCopy(_message.NtlmResponseOffset, _message.NtlmResponseLength);
            _sessionKeyBytes  = data.NewCopy(_message.SessionKeyOffset, _message.SessionKeyLength);

            _targetName = encoding.GetString(_targetNameBytes);
            _userName   = encoding.GetString(_userNameBytes);
            _hostName   = encoding.GetString(_hostNameBytes);
            _sessionKey = encoding.GetString(_sessionKeyBytes);
        }
 public NtlmAuthenticationMessage(AuthenticationMessageStruct message)
 {
     _message = message;
 }