diff --git a/src/lurch.c b/src/lurch.c index 8d183ea..97bf8b4 100644 --- a/src/lurch.c +++ b/src/lurch.c @@ -801,7 +801,9 @@ static void lurch_pep_bundle_for_keytransport(JabberStream * js_p, const char * lurch_addr laddr = {0}; axc_buf * key_ct_buf_p = (void *) 0; char * msg_xml = (void *) 0; + int len = 0; xmlnode * msg_node_p = (void *) 0; + char * msg_id = (void *) 0; void * jabber_handle_p = purple_plugins_find_with_id("prpl-jabber"); uname = lurch_util_uname_strip(purple_account_get_username(purple_connection_get_account(js_p->gc))); @@ -842,9 +844,21 @@ static void lurch_pep_bundle_for_keytransport(JabberStream * js_p, const char * goto cleanup; } - ret_val = omemo_message_create(own_id, &crypto, &msg_p); + //compose a message without body as template + msg_node_p = xmlnode_new("message"); + xmlnode_set_attrib(msg_node_p, "type", "chat"); + msg_id = jabber_get_next_id(js_p); + xmlnode_set_attrib(msg_node_p, "id", msg_id); + xmlnode_set_attrib(msg_node_p, "to", from); + + msg_xml = xmlnode_to_str(msg_node_p, &len); + ret_val = omemo_message_prepare_encryption(msg_xml, own_id, &crypto, OMEMO_STRIP_ALL, &msg_p); + xmlnode_free(msg_node_p); + msg_node_p = (void *) 0; + g_free(msg_xml); + msg_xml = (void *) 0; if (ret_val) { - err_msg_dbg = g_strdup_printf("failed to create omemo msg"); + err_msg_dbg = g_strdup_printf("failed to create omemo key transport msg for %s", from); goto cleanup; } @@ -891,6 +905,7 @@ static void lurch_pep_bundle_for_keytransport(JabberStream * js_p, const char * } g_free(laddr.jid); g_free(uname); + g_free(msg_id); axc_context_destroy_all(axc_ctx_p); omemo_message_destroy(msg_p); axc_buf_free(key_ct_buf_p);