class NTLM::Message::Authenticate

MS-NLMP

2.2.1.3

Constants

ATTRIBUTES
DEFAULT_FLAGS
TYPE

Public Instance Methods

parse(string) click to toggle source
Calls superclass method NTLM::Message::parse
# File lib/ntlm/message.rb, line 311
def parse(string)
  super
  lm_response, nt_response, domain, user, workstation, session_key, @flag, version, mic = \
    string.unpack('x12a8a8a8a8a8a8Va8a16')

  @lm_response = fetch_payload(lm_response)
  @nt_response = fetch_payload(nt_response)
  @domain      = fetch_payload(domain)
  @user        = fetch_payload(user)
  @workstation = fetch_payload(workstation)
  @session_key = fetch_payload(session_key) if has_flag?(:NEGOTIATE_KEY_EXCH)
  @version     = decode_version(version) if has_flag?(:NEGOTIATE_VERSION)
  @mic         = mic

  if unicode?
    @domain      = decode_utf16(@domain)
    @user        = decode_utf16(@user)
    @workstation = decode_utf16(@workstation)
  end

  self
end
serialize() click to toggle source
# File lib/ntlm/message.rb, line 334
def serialize
  @buffer = ''
  @offset = 88  # (8 + 4) + (8 * 6) + 4 + 8 + 16

  lm_response = append_payload(@lm_response)
  nt_response = append_payload(@nt_response)

  if unicode?
    domain      = append_payload(encode_utf16(@domain))
    user        = append_payload(encode_utf16(@user))
    workstation = append_payload(encode_utf16(@workstation))
  else
    domain      = append_payload(@domain)
    user        = append_payload(@user)
    workstation = append_payload(@workstation)
  end

  if @session_key
    set(:NEGOTIATE_KEY_EXCH)
    session_key = append_payload(@session_key)
  end

  if @version
    set(:NEGOTIATE_VERSION)
    version = encode_version(@version)
  end

  [SSP_SIGNATURE, TYPE, lm_response, nt_response, domain, user, workstation, session_key, @flag, version, @mic].pack('a8Va8a8a8a8a8a8Va8a16') + @buffer
end