#define DEVICE_KEY_SIZE 44\r
#define SIGNING_KEY_SIZE 44\r
#define ONETIME_KEY_SIZE 44\r
+#define MASTER_KEY_SIZE 44\r
\r
#define KEY_SHARE_EVENT_LEN 1024\r
\r
#define JSON_ONETIME_KEY_SIGNED_SIZE 256\r
#define JSON_SIGNATURE_SIZE 256\r
\r
-#define NUM_MEGOLM_SESSIONS 10\r
-#define NUM_OLM_SESSIONS 10\r
-#define NUM_DEVICES 100\r
+#define NUM_MEGOLM_SESSIONS 2\r
+#define NUM_OLM_SESSIONS 2\r
+#define NUM_DEVICES 10\r
+\r
+// HTTP\r
+\r
+typedef struct MatrixHttpConnection MatrixHttpConnection;\r
+\r
+bool\r
+MatrixHttpInit(\r
+ MatrixHttpConnection ** hc,\r
+ const char * host);\r
+\r
+bool\r
+MatrixHttpDeinit(\r
+ MatrixHttpConnection ** hc);\r
+ \r
+bool\r
+MatrixHttpSetAccessToken(\r
+ MatrixHttpConnection * hc,\r
+ const char * accessToken);\r
+\r
+bool\r
+MatrixHttpGet(\r
+ MatrixHttpConnection * hc,\r
+ const char * url,\r
+ char * outResponseBuffer, int outResponseCap,\r
+ bool authenticated);\r
+\r
+bool\r
+MatrixHttpPost(\r
+ MatrixHttpConnection * hc,\r
+ const char * url,\r
+ const char * requestBuffer,\r
+ char * outResponseBuffer, int outResponseCap,\r
+ bool authenticated);\r
+\r
+bool\r
+MatrixHttpPut(\r
+ MatrixHttpConnection * hc,\r
+ const char * url,\r
+ const char * requestBuffer,\r
+ char * outResponseBuffer, int outResponseCap,\r
+ bool authenticated);\r
+\r
+\r
\r
// Matrix Device\r
\r
const char * plaintext,\r
char * outBuffer, int outBufferCap);\r
\r
-bool\r
-MatrixMegolmOutSessionSave(\r
- MatrixMegolmOutSession * session,\r
- const char * filename,\r
- const char * key);\r
- \r
-bool\r
-MatrixMegolmOutSessionLoad(\r
- MatrixMegolmOutSession * session,\r
- const char * filename,\r
- const char * key);\r
-\r
\r
// Matrix Client\r
\r
// char signingKey[DEVICE_KEY_SIZE];\r
\r
char userId[USER_ID_SIZE];\r
- char server[SERVER_SIZE];\r
char accessToken[ACCESS_TOKEN_SIZE];\r
char deviceId[DEVICE_ID_SIZE];\r
char expireMs[EXPIRE_MS_SIZE];\r
char refreshToken[REFRESH_TOKEN_SIZE];\r
+ char masterKey[MASTER_KEY_SIZE];\r
+\r
+ bool verified;\r
\r
- void * httpUserData;\r
+ MatrixHttpConnection * hc;\r
} MatrixClient;\r
\r
bool\r
MatrixClientInit(\r
- MatrixClient * client,\r
- const char * server);\r
-\r
-bool\r
-MatrixClientSave(\r
- MatrixClient * client,\r
- const char * filename);\r
-\r
-bool\r
-MatrixClientLoad(\r
- MatrixClient * client,\r
- const char * filename);\r
+ MatrixClient * client);\r
\r
bool\r
MatrixClientSetAccessToken(\r
MatrixClient * client);\r
\r
bool\r
-MatrixClientUploadDeviceKey(\r
+MatrixClientUploadDeviceKeys(\r
MatrixClient * client);\r
\r
bool\r
const char * msgType,\r
const char * msgBody);\r
\r
+void\r
+HandleEvent(\r
+ MatrixClient * client,\r
+ const char * event, int eventLen);\r
+\r
+void\r
+HandleRoomEvent(\r
+ MatrixClient * client,\r
+ const char * room, int roomLen,\r
+ const char * event, int eventLen);\r
+\r
bool\r
MatrixClientSync(\r
MatrixClient * client,\r
- char * outSync, int outSyncCap,\r
- const char * nextBatch);\r
+ char * outSyncBuffer, int outSyncCap,\r
+ char * nextBatch, int nextBatchCap);\r
\r
bool\r
MatrixClientGetRoomEvent(\r
const char * deviceId); // TODO: remove deviceId (query all devices)\r
\r
bool\r
-MatrixClientGetOlmSessionIn(\r
+MatrixClientGetOlmSession(\r
+ MatrixClient * client,\r
+ const char * userId,\r
+ const char * deviceId,\r
+ MatrixOlmSession ** outSession);\r
+\r
+bool\r
+MatrixClientNewOlmSessionIn(\r
MatrixClient * client,\r
const char * userId,\r
const char * deviceId,\r
MatrixOlmSession ** outSession);\r
\r
bool\r
-MatrixClientGetOlmSessionOut(\r
+MatrixClientNewOlmSessionOut(\r
MatrixClient * client,\r
const char * userId,\r
const char * deviceId,\r
char * outSigningKey, int outSigningKeyCap);\r
\r
bool\r
-MatrixClientRequestDeviceKeys(\r
- MatrixClient * client);\r
-\r
-bool\r
-MatrixClientDeleteDevice(\r
- MatrixClient * client);\r
-\r
-\r
-\r
-\r
-bool\r
-MatrixHttpInit(\r
- MatrixClient * client);\r
+MatrixClientRequestMasterKey(\r
+ MatrixClient * client,\r
+ char * outMasterKey, int outMasterKeyCap);\r
\r
bool\r
-MatrixHttpConnect(\r
+MatrixClientRequestDeviceKeys(\r
MatrixClient * client);\r
\r
bool\r
-MatrixHttpDeinit(\r
+MatrixClientDeleteDevice(\r
MatrixClient * client);\r
\r
-bool\r
-MatrixHttpGet(\r
- MatrixClient * client,\r
- const char * url,\r
- char * outResponseBuffer, int outResponseCap,\r
- bool authenticated);\r
-\r
-bool\r
-MatrixHttpPost(\r
- MatrixClient * client,\r
- const char * url,\r
- const char * requestBuffer,\r
- char * outResponseBuffer, int outResponseCap,\r
- bool authenticated);\r
-\r
-bool\r
-MatrixHttpPut(\r
- MatrixClient * client,\r
- const char * url,\r
- const char * requestBuffer,\r
- char * outResponseBuffer, int outResponseCap,\r
- bool authenticated);\r
\r
// util\r
\r