lib/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php
protected function sendMessage3($response, $username, $password, $timestamp, $client, Swift_Transport_SmtpAgent $agent, $v2 = true)
    {
        list($domain, $username) = $this->getDomainAndUsername($username);
        //$challenge, $context, $targetInfoH, $targetName, $domainName, $workstation, $DNSDomainName, $DNSServerName, $blob, $ter
        list($challenge, , , , , $workstation, , , $blob) = $this->parseMessage2($response);

        if (!$v2) {
            // LMv1
            $lmResponse = $this->createLMPassword($password, $challenge);
            // NTLMv1
            $ntlmResponse = $this->createNTLMPassword($password, $challenge);
        } else {
            // LMv2
            $lmResponse = $this->createLMv2Password($password, $username, $domain, $challenge, $client);
            // NTLMv2
            $ntlmResponse = $this->createNTLMv2Hash($password, $username, $domain, $challenge, $blob, $timestamp, $client);
        }

        $message = $this->createMessage3($domain, $username, $workstation, $lmResponse, $ntlmResponse);

        return $agent->executeCommand(sprintf("%s\r\n", base64_encode($message)), [235]);
    }
protected function sendMessage3($response, $username, $password, $timestamp, $client, Swift_Transport_SmtpAgent $agent, $v2 = true)
    {
        list($domain, $username) = $this->getDomainAndUsername($username);
        //$challenge, $context, $targetInfoH, $targetName, $domainName, $workstation, $DNSDomainName, $DNSServerName, $blob, $ter
        list($challenge, , , , , $workstation, , , $blob) = $this->parseMessage2($response);

        if (!$v2) {
            // LMv1
            $lmResponse = $this->createLMPassword($password, $challenge);
            // NTLMv1
            $ntlmResponse = $this->createNTLMPassword($password, $challenge);
        } else {
            // LMv2
            $lmResponse = $this->createLMv2Password($password, $username, $domain, $challenge, $client);
            // NTLMv2
            $ntlmResponse = $this->createNTLMv2Hash($password, $username, $domain, $challenge, $blob, $timestamp, $client);
        }

        $message = $this->createMessage3($domain, $username, $workstation, $lmResponse, $ntlmResponse);

        return $agent->executeCommand(sprintf("%s\r\n", base64_encode($message)), [235]);
    }
protected function sendMessage3 ( $ response , $ username , $ password , $ timestamp , $ client , Swift_Transport_SmtpAgent $ agent , $ v2 = true ) { list ( $ domain , $ username ) = $ this -> getDomainAndUsername ( $ username ) ; //$challenge, $context, $targetInfoH, $targetName, $domainName, $workstation, $DNSDomainName, $DNSServerName, $blob, $ter list ( $ challenge , , , , , $ workstation , , , $ blob ) = $ this -> parseMessage2 ( $ response ) ; if ( ! $ v2 ) { // LMv1 $ lmResponse = $ this -> createLMPassword ( $ password , $ challenge ) ; // NTLMv1 $ ntlmResponse = $ this -> createNTLMPassword ( $ password , $ challenge ) ; } else { // LMv2 $ lmResponse = $ this -> createLMv2Password ( $ password , $ username , $ domain , $ challenge , $ client ) ; // NTLMv2 $ ntlmResponse = $ this -> createNTLMv2Hash ( $ password , $ username , $ domain , $ challenge , $ blob , $ timestamp , $ client ) ; } $ message = $ this -> createMessage3 ( $ domain , $ username , $ workstation , $ lmResponse , $ ntlmResponse ) ; return $ agent -> executeCommand ( sprintf ( "%s\r\n" , base64_encode ( $ message ) ) , [ 235 ] ) ; }
Send our final message with all our data.

@param string $response  Message 1 response (message 2)
@param string $username
@param string $password
@param string $timestamp
@param string $client
@param bool   $v2        Use version2 of the protocol

@return string
Send our final message with all our data .