def _make_response(self, nonce, salt, iteration_count):
self._salted_password = self.Hi(self.Normalize(self.password), salt,<EOL>iteration_count)<EOL>self.password = None <EOL>if self.channel_binding:<EOL><INDENT>channel_binding = b"<STR_LIT>" + standard_b64encode(self._gs2_header +<EOL>self._cb_data)<EOL><DEDENT>else:<EOL><INDENT>channel_binding = b"<STR_LIT>" + standard_b64encode(self._gs2_header)<EOL><DEDENT>client_final_message_without_proof = (channel_binding + b"<STR_LIT>" + nonce)<EOL>client_key = self.HMAC(self._salted_password, b"<STR_LIT>")<EOL>stored_key = self.H(client_key)<EOL>auth_message = ( self._client_first_message_bare + b"<STR_LIT:U+002C>" +<EOL>self._server_first_message + b"<STR_LIT:U+002C>" +<EOL>client_final_message_without_proof )<EOL>self._auth_message = auth_message<EOL>client_signature = self.HMAC(stored_key, auth_message)<EOL>client_proof = self.XOR(client_key, client_signature)<EOL>proof = b"<STR_LIT>" + standard_b64encode(client_proof)<EOL>client_final_message = (client_final_message_without_proof + b"<STR_LIT:U+002C>" +<EOL>proof)<EOL>return Response(client_final_message)<EOL>
Make a response for the first challenge from the server.

        :return: the response or a failure indicator.
        :returntype: `sasl.Response` or `sasl.Failure`