From 75ba8c28a5f27a6186a70e27d8d8b79a05e6ef05 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 16 Mar 2021 21:37:46 +0300 Subject: code cleaning --- protocols/JabberG/src/jabber_omemo.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'protocols') diff --git a/protocols/JabberG/src/jabber_omemo.cpp b/protocols/JabberG/src/jabber_omemo.cpp index a29058987c..f1d6f45907 100755 --- a/protocols/JabberG/src/jabber_omemo.cpp +++ b/protocols/JabberG/src/jabber_omemo.cpp @@ -533,7 +533,7 @@ complete: signal_buffer_free(key_buf); // generate and save signed pre key - session_signed_pre_key* signed_pre_key; + session_signed_pre_key *signed_pre_key; { const unsigned int signed_pre_key_id = 1; signal_protocol_key_helper_generate_signed_pre_key(&signed_pre_key, new_dev->device_key, signed_pre_key_id, time(0), global_context); @@ -1225,10 +1225,12 @@ complete: data[i]->proto = proto; data[i]->device_id = device_id_int; } + /* Create the data store context, and add all the callbacks to it */ //TODO: validation of functions return codes signal_protocol_store_context *store_context; signal_protocol_store_context_create(&store_context, global_context); + signal_protocol_session_store ss; ss.contains_session_func = &contains_session_func; ss.delete_all_sessions_func = &delete_all_sessions_func; @@ -1239,6 +1241,7 @@ complete: ss.store_session_func = &store_session_func; ss.user_data = (void*)data[0]; signal_protocol_store_context_set_session_store(store_context, &ss); + signal_protocol_pre_key_store sp; sp.contains_pre_key = &contains_pre_key; sp.destroy_func = &destroy_func; @@ -1247,6 +1250,7 @@ complete: sp.store_pre_key = &store_pre_key; sp.user_data = (void*)data[1]; signal_protocol_store_context_set_pre_key_store(store_context, &sp); + signal_protocol_signed_pre_key_store ssp; ssp.contains_signed_pre_key = &contains_signed_pre_key; ssp.destroy_func = &destroy_func; @@ -1255,6 +1259,7 @@ complete: ssp.store_signed_pre_key = &store_signed_pre_key; ssp.user_data = (void*)data[2]; signal_protocol_store_context_set_signed_pre_key_store(store_context, &ssp); + signal_protocol_identity_key_store sip; sip.destroy_func = &destroy_func; sip.get_identity_key_pair = &get_identity_key_pair; @@ -1273,6 +1278,7 @@ complete: { // Instantiate a session_builder for a recipient address. DWORD dev_id_int = strtoul(dev_id, nullptr, 10); + auto &pSession = sessions[hContact][dev_id_int]; // libsignal does not copy structure, so we must allocate one manually, does it free it on exit ? signal_protocol_address *address = (signal_protocol_address*)mir_alloc(sizeof(signal_protocol_address)); @@ -1283,12 +1289,12 @@ complete: address->device_id = dev_id_int; session_builder *builder; - if (session_builder_create(&builder, sessions[hContact][dev_id_int].store_context, address, global_context) < 0) { + if (session_builder_create(&builder, pSession.store_context, address, global_context) < 0) { proto->debugLogA("Jabber OMEMO: error: session_builder_create failed"); return false; //failure } - sessions[hContact][dev_id_int].builder = builder; + pSession.builder = builder; unsigned int key_id_int = atoi(key_id); @@ -1356,7 +1362,7 @@ complete: key_buf = (uint8_t*)mir_base64_decode(signed_pre_key_signature, &key_buf_len); session_pre_key_bundle *retrieved_pre_key; uint32_t registration_id = 0; - signal_protocol_identity_get_local_registration_id(sessions[hContact][dev_id_int].store_context, ®istration_id); + signal_protocol_identity_get_local_registration_id(pSession.store_context, ®istration_id); session_pre_key_bundle_create(&retrieved_pre_key, registration_id, dev_id_int, key_id_int, prekey, signed_pre_key_id_int, signed_prekey, key_buf, key_buf_len, identity_key_p); mir_free(key_buf); @@ -1380,12 +1386,12 @@ complete: /* Create the session cipher and encrypt the message */ session_cipher *cipher; - if (session_cipher_create(&cipher, - sessions[hContact][dev_id_int].store_context, address, global_context) < 0) { + if (session_cipher_create(&cipher, pSession.store_context, address, global_context) < 0) { proto->debugLogA("Jabber OMEMO: session_cipher_create failure"); return false; //failure } - sessions[hContact][dev_id_int].cipher = cipher; + + pSession.cipher = cipher; return true; //success } @@ -1552,7 +1558,7 @@ bool CJabberProto::OmemoHandleMessage(const TiXmlElement *node, const char *jid, } } if (deserialized && pm) { - int ret = session_cipher_decrypt_pre_key_signal_message(m_omemo.sessions[hContact][sender_dev_id_int].cipher, pm, nullptr, &decrypted_key); + int ret = session_cipher_decrypt_pre_key_signal_message(pSession.cipher, pm, nullptr, &decrypted_key); switch (ret) { case SG_SUCCESS: decrypted = true; @@ -1597,7 +1603,7 @@ bool CJabberProto::OmemoHandleMessage(const TiXmlElement *node, const char *jid, } if (deserialized && sm) { - ret = session_cipher_decrypt_signal_message(m_omemo.sessions[hContact][sender_dev_id_int].cipher, sm, nullptr, &decrypted_key); + ret = session_cipher_decrypt_signal_message(pSession.cipher, sm, nullptr, &decrypted_key); switch (ret) { case SG_SUCCESS: decrypted = true; -- cgit v1.2.3