]> gitweb.ps.run Git - matrix_esp_thesis/blobdiff - src/matrix.h
verify device
[matrix_esp_thesis] / src / matrix.h
index 073f61002d6c2486cd64d0580ef8199230d04d4b..20cdc8ce94376c2cca113786dc9b11052c4692c7 100644 (file)
@@ -11,6 +11,7 @@
 \r
 \r
 #define USER_ID_SIZE 64\r
 \r
 \r
 #define USER_ID_SIZE 64\r
+#define ROOM_ID_SIZE 128\r
 #define SERVER_SIZE 20\r
 #define ACCESS_TOKEN_SIZE 40\r
 #define DEVICE_ID_SIZE 20\r
 #define SERVER_SIZE 20\r
 #define ACCESS_TOKEN_SIZE 40\r
 #define DEVICE_ID_SIZE 20\r
@@ -55,6 +56,7 @@
 typedef struct MatrixDevice {\r
     char deviceId[DEVICE_ID_SIZE];\r
     char deviceKey[DEVICE_KEY_SIZE];\r
 typedef struct MatrixDevice {\r
     char deviceId[DEVICE_ID_SIZE];\r
     char deviceKey[DEVICE_KEY_SIZE];\r
+    char signingKey[SIGNING_KEY_SIZE];\r
 } MatrixDevice;\r
 \r
 \r
 } MatrixDevice;\r
 \r
 \r
@@ -69,17 +71,40 @@ bool
 MatrixOlmAccountInit(\r
     MatrixOlmAccount * account);\r
 \r
 MatrixOlmAccountInit(\r
     MatrixOlmAccount * account);\r
 \r
+bool\r
+MatrixOlmAccountUnpickle(\r
+    MatrixOlmAccount * account,\r
+    void * pickled, int pickledLen,\r
+    const void * key, int keyLen);\r
+\r
+bool\r
+MatrixOlmAccountGetDeviceKey(\r
+    MatrixOlmAccount * account,\r
+    char * key, int keyCap);\r
+    \r
+bool\r
+MatrixOlmAccountGetSigningKey(\r
+    MatrixOlmAccount * account,\r
+    char * key, int keyCap);\r
+\r
 \r
 // Matrix Olm Session\r
 \r
 typedef struct MatrixOlmSession {\r
 \r
 // Matrix Olm Session\r
 \r
 typedef struct MatrixOlmSession {\r
-    const char * deviceId;\r
+    const char * deviceId; // TODO: char[]\r
 \r
     int type;\r
     OlmSession * session;\r
     char memory[OLM_SESSION_MEMORY_SIZE];\r
 } MatrixOlmSession;\r
 \r
 \r
     int type;\r
     OlmSession * session;\r
     char memory[OLM_SESSION_MEMORY_SIZE];\r
 } MatrixOlmSession;\r
 \r
+bool\r
+MatrixOlmSessionUnpickle(\r
+    MatrixOlmSession * session,\r
+    const char * deviceId,\r
+    void * pickled, int pickledLen,\r
+    const void * key, int keyLen);\r
+\r
 bool\r
 MatrixOlmSessionTo(\r
     MatrixOlmSession * session,\r
 bool\r
 MatrixOlmSessionTo(\r
     MatrixOlmSession * session,\r
@@ -94,6 +119,13 @@ MatrixOlmSessionEncrypt(
     const char * plaintext,\r
     char * outBuffer, int outBufferCap);\r
 \r
     const char * plaintext,\r
     char * outBuffer, int outBufferCap);\r
 \r
+bool\r
+MatrixOlmSessionDecrypt(\r
+    MatrixOlmSession * session,\r
+    size_t messageType,\r
+    char * encrypted,\r
+    char * outBuffer, int outBufferCap);\r
+\r
 \r
 // Matrix Megolm Session\r
 \r
 \r
 // Matrix Megolm Session\r
 \r
@@ -101,8 +133,14 @@ typedef struct MatrixMegolmInSession {
     OlmInboundGroupSession * session;\r
 } MatrixMegolmInSession;\r
 \r
     OlmInboundGroupSession * session;\r
 } MatrixMegolmInSession;\r
 \r
+bool\r
+MatrixMegolmInSessionDecrypt(\r
+    MatrixMegolmInSession * megolmInSession,\r
+    const char * encrypted,\r
+    char * outDecrypted, int outDecryptedCap);\r
+\r
 typedef struct MatrixMegolmOutSession {\r
 typedef struct MatrixMegolmOutSession {\r
-    const char * roomId;\r
+    char roomId[ROOM_ID_SIZE];\r
 \r
     OlmOutboundGroupSession * session;\r
     char memory[MEGOLM_OUTBOUND_SESSION_MEMORY_SIZE];\r
 \r
     OlmOutboundGroupSession * session;\r
     char memory[MEGOLM_OUTBOUND_SESSION_MEMORY_SIZE];\r
@@ -150,8 +188,8 @@ typedef struct MatrixClient {
     MatrixDevice devices[NUM_DEVICES];\r
     int numDevices;\r
     \r
     MatrixDevice devices[NUM_DEVICES];\r
     int numDevices;\r
     \r
-    char deviceKey[DEVICE_KEY_SIZE];\r
-    char signingKey[DEVICE_KEY_SIZE];\r
+    // char deviceKey[DEVICE_KEY_SIZE];\r
+    // char signingKey[DEVICE_KEY_SIZE];\r
 \r
     char userId[USER_ID_SIZE];\r
     char server[SERVER_SIZE];\r
 \r
     char userId[USER_ID_SIZE];\r
     char server[SERVER_SIZE];\r
@@ -203,7 +241,7 @@ MatrixClientUploadOnetimeKeys(
     MatrixClient * client);\r
 \r
 bool\r
     MatrixClient * client);\r
 \r
 bool\r
-MatrixClientUploadDeviceKeys(\r
+MatrixClientUploadDeviceKey(\r
     MatrixClient * client);\r
 \r
 bool\r
     MatrixClient * client);\r
 \r
 bool\r
@@ -239,6 +277,13 @@ MatrixClientSync(
     MatrixClient * client,\r
     char * outSync, int outSyncCap);\r
 \r
     MatrixClient * client,\r
     char * outSync, int outSyncCap);\r
 \r
+bool\r
+MatrixClientGetRoomEvent(\r
+    MatrixClient * client,\r
+    const char * roomId,\r
+    const char * eventId,\r
+    char * outEvent, int outEventCap);\r
+\r
 bool\r
 MatrixClientShareMegolmOutSession(\r
     MatrixClient * client,\r
 bool\r
 MatrixClientShareMegolmOutSession(\r
     MatrixClient * client,\r
@@ -249,6 +294,7 @@ MatrixClientShareMegolmOutSession(
 bool\r
 MatrixClientShareMegolmOutSessionTest(\r
     MatrixClient * client,\r
 bool\r
 MatrixClientShareMegolmOutSessionTest(\r
     MatrixClient * client,\r
+    const char * userId,\r
     const char * deviceId,\r
     MatrixMegolmOutSession * session);\r
 \r
     const char * deviceId,\r
     MatrixMegolmOutSession * session);\r
 \r
@@ -264,6 +310,21 @@ MatrixClientSetMegolmOutSession(
     const char * roomId,\r
     MatrixMegolmOutSession session);\r
 \r
     const char * roomId,\r
     MatrixMegolmOutSession session);\r
 \r
+bool\r
+MatrixClientInitMegolmOutSession(\r
+    MatrixClient * client,\r
+    const char * roomId);\r
+    \r
+bool\r
+MatrixClientRequestMegolmInSession(\r
+    MatrixClient * client,\r
+    const char * roomId,\r
+    const char * sessionId,\r
+    const char * senderKey,\r
+    const char * userId,\r
+    const char * deviceId, // TODO: remove deviceId (query all devices)\r
+    MatrixMegolmInSession * outMegolmInSession);\r
+\r
 bool\r
 MatrixClientGetOlmSession(\r
     MatrixClient * client,\r
 bool\r
 MatrixClientGetOlmSession(\r
     MatrixClient * client,\r
@@ -288,21 +349,31 @@ MatrixClientSendToDeviceEncrypted(
     const char * msgType);\r
 \r
 bool\r
     const char * msgType);\r
 \r
 bool\r
-MatrixClientGetDeviceKey(\r
+MatrixClientSendDummy(\r
     MatrixClient * client,\r
     MatrixClient * client,\r
-    const char * deviceId,\r
-    char * outDeviceKey, int outDeviceKeyCap);\r
+    const char * userId,\r
+    const char * deviceId);\r
 \r
 bool\r
 \r
 bool\r
-MatrixClientGetDeviceKey(\r
+MatrixClientRequestDeviceKey(\r
     MatrixClient * client,\r
     const char * deviceId,\r
     char * outDeviceKey, int outDeviceKeyCap);\r
     MatrixClient * client,\r
     const char * deviceId,\r
     char * outDeviceKey, int outDeviceKeyCap);\r
+    \r
+bool\r
+MatrixClientRequestSigningKey(\r
+    MatrixClient * client,\r
+    const char * deviceId,\r
+    char * outSigningKey, int outSigningKeyCap);\r
 \r
 bool\r
 MatrixClientRequestDeviceKeys(\r
     MatrixClient * client);\r
 \r
 \r
 bool\r
 MatrixClientRequestDeviceKeys(\r
     MatrixClient * client);\r
 \r
+bool\r
+MatrixClientDeleteDevice(\r
+    MatrixClient * client);\r
+\r
 \r
 \r
 \r
 \r
 \r
 \r
@@ -351,7 +422,8 @@ JsonEscape(
     const char * sIn, int sInLen,\r
     char * sOut, int sOutCap);\r
     \r
     const char * sIn, int sInLen,\r
     char * sOut, int sOutCap);\r
     \r
-bool JsonSign(\r
+bool\r
+JsonSign(\r
     MatrixClient * client,\r
     const char * sIn, int sInLen,\r
     char * sOut, int sOutCap);\r
     MatrixClient * client,\r
     const char * sIn, int sInLen,\r
     char * sOut, int sOutCap);\r