]> gitweb.ps.run Git - matrix_esp_thesis/blob - examples/Verify.c
matrix.h: change NUM_DEVICES, add masterKey and verified, add HandleSync/HandleEvent
[matrix_esp_thesis] / examples / Verify.c
1 #include <matrix.h>\r
2 #include <mjson.h>\r
3 #include <olm/sas.h>\r
4 \r
5 #include <stdio.h>\r
6 \r
7 #define SERVER       "https://matrix.org"\r
8 #define USER_ID      "@pscho:matrix.org"\r
9 \r
10 #define DEVICE_ID    "ULZZOKJBYN"\r
11 #define SENDER_KEY   "cjP41XzRlY+pd8DoiBuKQJj9o15mrx6gkrpqTkAPZ2c"\r
12 #define ROOM_ID      "!XKFUjAsGrSSrpDFIxB:matrix.org"\r
13 #define EVENT_ID     "$vOS09eUaI0CduqAcaIU5ZVk6ljLQfLspz7UThP8vaUM"\r
14 #define SESSION_ID   "90UbGLue3ADVhvW7hFjoA2c6yg0JJKs/lPdMDZXnZAk"\r
15 \r
16 #define STATIC static\r
17 \r
18 int\r
19 main(void)\r
20 {\r
21     MatrixClient * client = (MatrixClient*)malloc(sizeof(MatrixClient));\r
22     MatrixClientInit(client);\r
23 \r
24     MatrixHttpInit(&client->hc, SERVER);\r
25     MatrixClientSetUserId(client, USER_ID);\r
26 \r
27     MatrixClientLoginPassword(client,\r
28         "pscho",\r
29         "Wc23EbmB9G3faMq",\r
30         "Test1");\r
31     printf("deviceId: %s\n", client->deviceId);\r
32     MatrixClientGenerateOnetimeKeys(client, 10);\r
33     MatrixClientUploadOnetimeKeys(client);\r
34     MatrixClientUploadDeviceKeys(client);\r
35 \r
36     STATIC char eventBuffer[1024];\r
37     MatrixClientGetRoomEvent(client,\r
38         ROOM_ID,\r
39         EVENT_ID,\r
40         eventBuffer, 1024);\r
41     printf("event: %s\n", eventBuffer);\r
42 \r
43     #define SYNC_BUFFER_SIZE 1024*10\r
44 \r
45     // char * syncBuffer = (char*)malloc(SYNC_BUFFER_SIZE);\r
46     STATIC char syncBuffer[SYNC_BUFFER_SIZE];\r
47     STATIC char nextBatch[1024];\r
48 \r
49     while (! client->verified) {\r
50         MatrixClientSync(client, syncBuffer, SYNC_BUFFER_SIZE, nextBatch, 1024);\r
51     }\r
52 \r
53     printf("verified!\n");\r
54 \r
55     // create and share megolm out session\r
56     MatrixMegolmOutSession * megolmOutSession;\r
57     MatrixClientNewMegolmOutSession(client,\r
58         ROOM_ID,\r
59         &megolmOutSession);\r
60     printf("megolm session id: %.10s... key: %.10s...\n", megolmOutSession->id, megolmOutSession->key);\r
61     MatrixClientShareMegolmOutSession(client,\r
62         USER_ID,\r
63         "ULZZOKJBYN",\r
64         megolmOutSession);\r
65 \r
66     // send 10 random messages\r
67     for (int i = 0; i < 10; i++) {\r
68         static const char * msgs[] = { "A", "B", "C" };\r
69         static char msg[128];\r
70         snprintf(msg, 128, "{\"body\":\"%s\",\"msgtype\":\"m.text\"}", msgs[rand()%(sizeof(msgs)/sizeof(msgs[0]))]);\r
71 \r
72         MatrixClientSendEventEncrypted(client,\r
73             ROOM_ID,\r
74             "m.room.message",\r
75             msg);\r
76     }\r
77 \r
78     MatrixClientDeleteDevice(client);\r
79         \r
80     MatrixHttpDeinit(&client->hc);\r
81 \r
82     return 0;\r
83 }\r