async def on_raw_authenticate(self, message):
        """ Received part of the authentication challenge. """
        # Cancel timeout timer.
        if self._sasl_timer:
            self._sasl_timer.cancel()
            self._sasl_timer = None

        # Add response data.
        response = ' '.join(message.params)
        if response != EMPTY_MESSAGE:
            self._sasl_challenge += base64.b64decode(response)

        # If the response ain't exactly SASL_RESPONSE_LIMIT bytes long, it's the end. Process.
        if len(response) % RESPONSE_LIMIT > 0:
            await self._sasl_respond()
        else:
            # Response not done yet. Restart timer.
            self._sasl_timer = self.eventloop.call_later(self.SASL_TIMEOUT, self._sasl_abort(timeout=True))
async def on_raw_authenticate ( self , message ) : if self . _sasl_timer : self . _sasl_timer . cancel ( ) self . _sasl_timer = None response = ' ' . join ( message . params ) if response != EMPTY_MESSAGE : self . _sasl_challenge += base64 . b64decode ( response ) if len ( response ) % RESPONSE_LIMIT > 0 : await self . _sasl_respond ( ) else : self . _sasl_timer = self . eventloop . call_later ( self . SASL_TIMEOUT , self . _sasl_abort ( timeout = True ) )
Received part of the authentication challenge.