abouttreesummaryrefslogcommitdiff
path: root/src/matrix.c
diff options
context:
space:
mode:
authorPatrick2023-07-21 23:04:48 +0200
committerPatrick2023-07-21 23:04:48 +0200
commitc7aba5979c820958aa08947903afb47ace496a16 (patch)
tree42dbeb78e724c62199e127ddf1712e662ab14419 /src/matrix.c
parent07e667e29883740aa0b82199cf0518a2e2684e26 (diff)
downloadmatrix_esp_thesis-c7aba5979c820958aa08947903afb47ace496a16.tar.gz
matrix_esp_thesis-c7aba5979c820958aa08947903afb47ace496a16.zip
share, save, load, init, print megolm out sessions
Diffstat (limited to 'src/matrix.c')
-rw-r--r--src/matrix.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/matrix.c b/src/matrix.c
index fa7303f..de936de 100644
--- a/src/matrix.c
+++ b/src/matrix.c
@@ -192,7 +192,7 @@ MatrixMegolmOutSessionInit(
static uint8_t random[MEGOLM_INIT_RANDOM_SIZE];
Randomize(random, MEGOLM_INIT_RANDOM_SIZE);
- session->roomId = roomId;
+ strncpy(session->roomId, roomId, ROOM_ID_SIZE);
session->session =
olm_outbound_group_session(session->memory);
@@ -268,6 +268,8 @@ MatrixMegolmOutSessionLoad(
size_t roomIdLen;
fread(&roomIdLen, sizeof(size_t), 1, f);
fread(session->roomId, 1, roomIdLen, f);
+ for (int i = roomIdLen; i < ROOM_ID_SIZE; i++)
+ session->roomId[i] = '\0';
size_t pickleBufferLen;
fread(&pickleBufferLen, sizeof(size_t), 1, f);
@@ -282,6 +284,9 @@ MatrixMegolmOutSessionLoad(
free(pickleBuffer);
+ olm_outbound_group_session_id(session->session, (uint8_t *)session->id, MEGOLM_SESSION_ID_SIZE);
+ olm_outbound_group_session_key(session->session, (uint8_t *)session->key, MEGOLM_SESSION_KEY_SIZE);
+
fclose(f);
return true;
@@ -816,19 +821,29 @@ MatrixClientGetMegolmOutSession(
}
}
+ if (MatrixClientInitMegolmOutSession(client, roomId)) {
+ *outSession = &client->megolmOutSessions[client->numMegolmOutSessions-1];
+ return true;
+ }
+
+ return false;
+}
+
+bool
+MatrixClientInitMegolmOutSession(
+ MatrixClient * client,
+ const char * roomId)
+{
if (client->numMegolmOutSessions < NUM_MEGOLM_SESSIONS)
{
MatrixMegolmOutSessionInit(
&client->megolmOutSessions[client->numMegolmOutSessions],
roomId);
-
- *outSession = &client->megolmOutSessions[client->numMegolmOutSessions];
client->numMegolmOutSessions++;
return true;
}
-
return false;
}