def METHOD_NAME(self, http_obj, method, path, headers, negotiateMessage):
    auth_headers = headers.copy()
    auth_headers['Content-Length'] = '0'
    auth_headers['Authorization']  = 'NTLM %s' % base64.b64encode(negotiateMessage).decode('ascii')
    http_obj.request(method, path, headers=auth_headers)
    res = http_obj.getresponse()
    res.read()
    if res.status != 401:
        raise Exception('Status code returned: %d. '
                        'Authentication does not seem required for url %s'
                        % (res.status, path)
            )
    if res.getheader('WWW-Authenticate') is None:
       raise Exception('No authentication requested by '
                       'the server for url %s' % path)
    if self.__auth_types == []:
        self.__auth_types = self.parse_www_authenticate(res.getheader('WWW-Authenticate'))
    if AUTH_NTLM not in self.__auth_types:
        # NTLM auth not supported for url
        return None, None
    try:
        serverChallengeBase64 = re.search('NTLM ([a-zA-Z0-9+/]+={0,2})',
                                          res.getheader('WWW-Authenticate')).group(1)
        serverChallenge = base64.b64decode(serverChallengeBase64)
    except (IndexError, KeyError, AttributeError):
        raise Exception('No NTLM challenge returned from server for url %s' % path)
    if not self.__ntlmssp_info:
        challenge = ntlm.NTLMAuthChallenge(serverChallenge)
        self.__ntlmssp_info = ntlm.AV_PAIRS(challenge['TargetInfoFields'])
    # Format: serverChallenge, reserved, ...
    return serverChallenge, None