summaryrefslogtreecommitdiff
path: root/protocols/JabberG/src
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2021-03-16 21:37:46 +0300
committerGeorge Hazan <ghazan@miranda.im>2021-03-16 21:37:46 +0300
commit75ba8c28a5f27a6186a70e27d8d8b79a05e6ef05 (patch)
tree17610da295aa031158b66c1c3eddfccbb980d595 /protocols/JabberG/src
parentd0feef929e7a4432db63af44a9f99409ebbe4a10 (diff)
code cleaning
Diffstat (limited to 'protocols/JabberG/src')
-rwxr-xr-xprotocols/JabberG/src/jabber_omemo.cpp24
1 files changed, 15 insertions, 9 deletions
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, &registration_id);
+ signal_protocol_identity_get_local_registration_id(pSession.store_context, &registration_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;