def get(req)
return nil unless NTLMEnabled
target_uri = req.header.request_uri
domain_uri, param = @challenge.find { |uri, v|
Util.uri_part_of(target_uri, uri)
}
return nil unless param
user, passwd = Util.hash_find_value(@auth) { |uri, auth_data|
Util.uri_part_of(target_uri, uri)
}
unless user
user, passwd = @auth_default
end
return nil unless user
domain = nil
domain, user = user.split("\\") if user.index("\\")
state = param[:state]
authphrase = param[:authphrase]
case state
when :init
t1 = Net::NTLM::Message::Type1.new
t1.domain = domain if domain
return t1.encode64
when :response
t2 = Net::NTLM::Message.decode64(authphrase)
param = {:user => user, :password => passwd}
param[:domain] = domain if domain
t3 = t2.response(param, @ntlm_opt.dup)
@challenge.delete(domain_uri)
return t3.encode64
end
nil
end