]> gitweb.ps.run Git - matrix_esp_thesis/blob - esp32/esp_project/main/Verify.c
remove newline
[matrix_esp_thesis] / esp32 / esp_project / main / Verify.c
1 #include <matrix.h>\r
2 #include <mjson.h>\r
3 #include <olm/sas.h>\r
4 \r
5 #if !CONFIG_IDF_TARGET_LINUX\r
6 #include "freertos/FreeRTOS.h"\r
7 #include "freertos/task.h"\r
8 #include "esp_system.h"\r
9 #include "driver/gpio.h"\r
10 #endif\r
11 \r
12 #include <stdio.h>\r
13 \r
14 #define SERVER        "https://matrix.org"\r
15 #define USER_ID       "@example:matrix.org"\r
16 #define ROOM_ID       "!example:matrix.org"\r
17 #define USERNAME      ""\r
18 #define PASSWORD      ""\r
19 #define DEVICE_NAME   ""\r
20 #define WIFI_SSID     ""\r
21 #define WIFI_PASSWORD ""\r
22 \r
23 // event id of an encrypted event\r
24 // devices can only be verified after they used e2ee in some way\r
25 // (at least in Element)\r
26 #define EVENT_ID     "$example"\r
27 \r
28 #define STATIC static\r
29 \r
30 int\r
31 main(void)\r
32 {\r
33     MatrixClient * client = (MatrixClient*)malloc(sizeof(MatrixClient));\r
34     MatrixClientInit(client);\r
35 \r
36     MatrixHttpInit(&client->hc, SERVER);\r
37     MatrixClientSetUserId(client, USER_ID);\r
38 \r
39     MatrixClientLoginPassword(client,\r
40         USERNAME,\r
41         PASSWORD,\r
42         DEVICE_NAME);\r
43     printf("deviceId: %s\n", client->deviceId);\r
44     MatrixClientGenerateOnetimeKeys(client, 10);\r
45     MatrixClientUploadOnetimeKeys(client);\r
46     MatrixClientUploadDeviceKeys(client);\r
47 \r
48     STATIC char eventBuffer[1024];\r
49     MatrixClientGetRoomEvent(client,\r
50         ROOM_ID,\r
51         EVENT_ID,\r
52         eventBuffer, 1024);\r
53     printf("event: %s\n", eventBuffer);\r
54 \r
55     #define SYNC_BUFFER_SIZE 1024*10\r
56 \r
57     // char * syncBuffer = (char*)malloc(SYNC_BUFFER_SIZE);\r
58     STATIC char syncBuffer[SYNC_BUFFER_SIZE];\r
59     STATIC char nextBatch[1024];\r
60 \r
61     while (! client->verified) {\r
62         MatrixClientSync(client, syncBuffer, SYNC_BUFFER_SIZE, nextBatch, 1024);\r
63     }\r
64 \r
65     printf("verified!\n");\r
66 \r
67     // create and share megolm out session\r
68     MatrixMegolmOutSession * megolmOutSession;\r
69     MatrixClientNewMegolmOutSession(client,\r
70         ROOM_ID,\r
71         &megolmOutSession);\r
72     printf("megolm session id: %.10s... key: %.10s...\n", megolmOutSession->id, megolmOutSession->key);\r
73     MatrixClientShareMegolmOutSession(client,\r
74         USER_ID,\r
75         "ULZZOKJBYN",\r
76         megolmOutSession);\r
77 \r
78     // send 10 random messages\r
79     for (int i = 0; i < 10; i++) {\r
80         static const char * msgs[] = { "A", "B", "C" };\r
81         static char msg[128];\r
82         snprintf(msg, 128, "{\"body\":\"%s\",\"msgtype\":\"m.text\"}", msgs[rand()%(sizeof(msgs)/sizeof(msgs[0]))]);\r
83 \r
84         MatrixClientSendEventEncrypted(client,\r
85             ROOM_ID,\r
86             "m.room.message",\r
87             msg);\r
88     }\r
89 \r
90     MatrixClientDeleteDevice(client);\r
91         \r
92     MatrixHttpDeinit(&client->hc);\r
93 \r
94     return 0;\r
95 }\r
96 \r
97 #include "wifi.h"\r
98 #include <esp_netif.h>\r
99 \r
100 void\r
101 app_main(void)\r
102 {\r
103     wifi_init(WIFI_SSID, WIFI_PASSWORD);\r
104 \r
105     esp_netif_ip_info_t ip_info;\r
106     esp_netif_get_ip_info(IP_EVENT_STA_GOT_IP,&ip_info);\r
107     printf("My IP: " IPSTR "\n", IP2STR(&ip_info.ip));\r
108     printf("My GW: " IPSTR "\n", IP2STR(&ip_info.gw));\r
109     printf("My NETMASK: " IPSTR "\n", IP2STR(&ip_info.netmask));\r
110 \r
111     // uint64_t bitmask = 0xffffffffffffffff;\r
112     // bitmask = bitmask & SOC_GPIO_VALID_GPIO_MASK;\r
113     // gpio_dump_io_configuration(stdout, bitmask);\r
114     gpio_set_direction(GPIO_NUM_2, GPIO_MODE_OUTPUT);\r
115     // gpio_dump_io_configuration(stdout, bitmask);\r
116 \r
117     main();\r
118 }\r