\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 NUM_OLM_SESSIONS 10\r
#define NUM_DEVICES 10\r
\r
-void\r
-Randomize(uint8_t * random, int randomLen);\r
-\r
-bool\r
-JsonEscape(\r
- const char * sIn, int sInLen,\r
- char * sOut, int sOutCap);\r
- \r
-bool JsonSign(\r
- const char * sIn, int sInLen,\r
- char * sOut, int sOutCap);\r
-\r
// Matrix Device\r
\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
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
- const char * deviceId;\r
+ const char * deviceId; // TODO: char[]\r
\r
int type;\r
OlmSession * session;\r
} MatrixOlmSession;\r
\r
bool\r
-MatrixOlmSessionFrom(\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
OlmAccount * olmAccount,\r
const char * deviceId,\r
} MatrixMegolmInSession;\r
\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
MatrixMegolmOutSessionInit(\r
MatrixMegolmOutSession * session,\r
const char * roomId);\r
- \r
+\r
bool\r
MatrixMegolmOutSessionEncrypt(\r
MatrixMegolmOutSession * session,\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
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
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
+\r
bool\r
MatrixClientSetAccessToken(\r
MatrixClient * client,\r
MatrixClient * client);\r
\r
bool\r
-MatrixClientUploadDeviceKeys(\r
+MatrixClientUploadDeviceKey(\r
MatrixClient * client);\r
\r
bool\r
bool\r
MatrixClientShareMegolmOutSessionTest(\r
MatrixClient * client,\r
+ const char * userId,\r
const char * deviceId,\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
MatrixClientGetOlmSession(\r
MatrixClient * client,\r
const char * msgType);\r
\r
bool\r
-MatrixClientGetDeviceKey(\r
+MatrixClientRequestDeviceKey(\r
MatrixClient * client,\r
const char * deviceId,\r
char * outDeviceKey, int outDeviceKeyCap);\r
-\r
+ \r
bool\r
-MatrixClientGetDeviceKey(\r
+MatrixClientRequestSigningKey(\r
MatrixClient * client,\r
const char * deviceId,\r
- char * outDeviceKey, int outDeviceKeyCap);\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
char * outResponseBuffer, int outResponseCap,\r
bool authenticated);\r
\r
+// util\r
+\r
+void\r
+Randomize(uint8_t * random, int randomLen);\r
+\r
+bool\r
+JsonEscape(\r
+ const char * sIn, int sInLen,\r
+ char * sOut, int sOutCap);\r
+ \r
+bool\r
+JsonSign(\r
+ MatrixClient * client,\r
+ const char * sIn, int sInLen,\r
+ char * sOut, int sOutCap);\r
+\r
#endif\r