def _authenticate_and_send_msg(self, username, chat_msg):
     # start peer authentication
     nonce = util.get_good_nonce(self.request_cache)
     new_auth = ClientClientAuthentication(username, self.auth.crypto_service, chat_msg)
     new_auth.timestamp = PacketOrganiser.get_new_timestamp()  # timestamp when created, for packet resend
     key = self.auth.dh_key
     msg_to_send = PacketOrganiser.prepare_packet([c.MSG_TYPE_START_NEW_CHAT, username, ""], nonce=nonce)
     util.add_to_request_cache(
         self.request_cache, nonce, c.MSG_TYPE_START_NEW_CHAT, key, msg_to_send, self.auth.server_addr, new_auth
     )  # add to cache
     return username, self.auth.server_addr, self.serv.sym_encrypt(key, msg_to_send)