def finish(self, data):
if not self.response_auth:<EOL><INDENT>logger.debug("<STR_LIT>")<EOL>return Failure("<STR_LIT>")<EOL><DEDENT>if self.rspauth_checked:<EOL><INDENT>properties = {<EOL>"<STR_LIT:username>": self.username,<EOL>"<STR_LIT>": self.realm,<EOL>"<STR_LIT>": self.authzid<EOL>}<EOL>return Success(properties)<EOL><DEDENT>else:<EOL><INDENT>ret = self._final_challenge(data)<EOL>if isinstance(ret, Failure):<EOL><INDENT>return ret<EOL><DEDENT>if self.rspauth_checked:<EOL><INDENT>properties = {<EOL>"<STR_LIT:username>": self.username,<EOL>"<STR_LIT>": self.realm,<EOL>"<STR_LIT>": self.authzid<EOL>}<EOL>return Success(properties)<EOL><DEDENT>else:<EOL><INDENT>logger.debug("<STR_LIT>"<EOL>"<STR_LIT>")<EOL>return Failure("<STR_LIT>")<EOL><DEDENT><DEDENT>
Process success indicator from the server.

        Process any addiitional data passed with the success.
        Fail if the server was not authenticated.

        :Parameters:
            - `data`: an optional additional data with success.
        :Types:
            - `data`: `bytes`

        :return: success or failure indicator.
        :returntype: `sasl.Success` or `sasl.Failure`