]> gitweb.ps.run Git - matrix_esp_thesis/blobdiff - examples/Decrypt.c
update examples
[matrix_esp_thesis] / examples / Decrypt.c
diff --git a/examples/Decrypt.c b/examples/Decrypt.c
deleted file mode 100644 (file)
index 7923693..0000000
+++ /dev/null
@@ -1,338 +0,0 @@
-#include <matrix.h>\r
-#include <stdio.h>\r
-\r
-#include <olm/sas.h>\r
-\r
-#define SERVER       "https://matrix.org"\r
-#define USER_ID      "@pscho:matrix.org"\r
-#define DEVICE_ID    "ULZZOKJBYN"\r
-#define SENDER_KEY   "LvVdoHsRRWNxRmG2GO2vky6o6S8RzADpPAaELsd1rjU"\r
-#define ROOM_ID      "!XKFUjAsGrSSrpDFIxB:matrix.org"\r
-#define EVENT_ID     "$_-y42DkC3OmJ_s40gYko7jMwrUQhoXfEut2pMV3E2J8"\r
-#define SESSION_ID   "tzdnJbDrm82D/RpgkZKpILTifQ5Rads+tVzp3ax8+Ls"\r
-\r
-void\r
-GetLine(char * buffer, int n) {\r
-    int c;\r
-    int len = 0;\r
-\r
-    while ((c = getchar()) != '\n' && len < n-1)\r
-        buffer[len++] = c;\r
-    \r
-    buffer[len] = '\0';\r
-}\r
-\r
-int\r
-main(void)\r
-{\r
-    MatrixClient client;\r
-    MatrixClientInit(&client);\r
-    \r
-    MatrixHttpInit(&client.hc, SERVER);\r
-\r
-    MatrixClientSetUserId(&client, USER_ID);\r
-\r
-    MatrixClientLoginPassword(&client,\r
-        "pscho",\r
-        "Wc23EbmB9G3faMq",\r
-        "Test1");\r
-\r
-    printf("deviceId: %s\n", client.deviceId);\r
-\r
-    MatrixClientGenerateOnetimeKeys(&client, 10);\r
-    MatrixClientUploadOnetimeKeys(&client);\r
-    MatrixClientUploadDeviceKeys(&client);\r
-\r
-    static char eventBuffer[1024];\r
-    MatrixClientGetRoomEvent(&client,\r
-        ROOM_ID,\r
-        EVENT_ID,\r
-        eventBuffer, 1024);\r
-    \r
-    printf("event: %s\n", eventBuffer);\r
-\r
-    // verify\r
-    // char theirDeviceKey[DEVICE_KEY_SIZE];\r
-    // MatrixClientRequestDeviceKey(&client,\r
-    //     DEVICE_ID,\r
-    //     theirDeviceKey, DEVICE_KEY_SIZE);\r
-    \r
-    char transactionId[256];\r
-    GetLine(transactionId, 128);\r
-\r
-    char verificationReadyBuffer[2048];\r
-    snprintf(verificationReadyBuffer, 2048,\r
-        "{"\r
-        "\"from_device\":\"%s\","\r
-        "\"methods\":[\"m.sas.v1\"],"\r
-        "\"transaction_id\":\"%s\""\r
-        "}",\r
-        client.deviceId,\r
-        transactionId);\r
-    \r
-    MatrixClientSendToDevice(&client,\r
-        USER_ID,\r
-        DEVICE_ID,\r
-        verificationReadyBuffer,\r
-        "m.key.verification.ready");\r
-    \r
-    OlmSAS * olmSas = olm_sas(malloc(olm_sas_size()));\r
-    void * sasRandomBytes = malloc(olm_create_sas_random_length(olmSas));\r
-    olm_create_sas(olmSas,\r
-        sasRandomBytes,\r
-        olm_create_sas_random_length(olmSas));\r
-    \r
-    OlmUtility * olmUtil = olm_utility(malloc(olm_utility_size()));\r
-    \r
-    char publicKey[128];\r
-    char keyStartJson[1024];\r
-    char concat[1024];\r
-    char commitment[256];\r
-    olm_sas_get_pubkey(olmSas,\r
-        publicKey,\r
-        128);\r
-    GetLine(keyStartJson, 1024);\r
-    printf("keyStartJson: %s\n", keyStartJson);\r
-    snprintf(concat, 1024, "%s%s", publicKey, keyStartJson);\r
-    printf("concat: %s\n", concat);\r
-    olm_sha256(olmUtil, concat, strlen(concat), commitment, 256);\r
-    printf("hash: %s\n", commitment);\r
-    \r
-    char verificationAcceptBuffer[2048];\r
-    snprintf(verificationAcceptBuffer, 2048,\r
-        "{"\r
-        "\"commitment\":\"%s\","\r
-        "\"hash\":\"sha256\","\r
-        "\"key_agreement_protocol\":\"curve25519\","\r
-        "\"message_authentication_code\":\"hkdf-hmac-sha256.v2\","\r
-        "\"method\":\"m.sas.v1\","\r
-        "\"short_authentication_string\":[\"decimal\"],"\r
-        "\"transaction_id\":\"%s\""\r
-        "}",\r
-        commitment,\r
-        transactionId);\r
-    \r
-    MatrixClientSendToDevice(&client,\r
-        USER_ID,\r
-        DEVICE_ID,\r
-        verificationAcceptBuffer,\r
-        "m.key.verification.accept");\r
-    \r
-    char theirPublicKey[128];\r
-    GetLine(theirPublicKey, 128);\r
-    olm_sas_set_their_key(olmSas, theirPublicKey, strlen(theirPublicKey));\r
-    \r
-    char verificationKeyBuffer[2048];\r
-    snprintf(verificationKeyBuffer, 2048,\r
-        "{"\r
-        "\"key\":\"%s\","\r
-        "\"transaction_id\":\"%s\""\r
-        "}",\r
-        publicKey,\r
-        transactionId);\r
-    \r
-    MatrixClientSendToDevice(&client,\r
-        USER_ID,\r
-        DEVICE_ID,\r
-        verificationKeyBuffer,\r
-        "m.key.verification.key");\r
-\r
-    char hkdfInfo[1024];\r
-    int hkdfInfoLen =\r
-        snprintf(hkdfInfo, 1024,\r
-            "MATRIX_KEY_VERIFICATION_SAS%s%s%s%s%s",\r
-            USER_ID,\r
-            DEVICE_ID,\r
-            USER_ID,\r
-            client.deviceId,\r
-            transactionId);\r
-\r
-    unsigned char sasBytes[5];\r
-    olm_sas_generate_bytes(olmSas,\r
-        hkdfInfo, hkdfInfoLen,\r
-        sasBytes, 5);\r
-    int b0 = sasBytes[0];\r
-    int b1 = sasBytes[1];\r
-    int b2 = sasBytes[2];\r
-    int b3 = sasBytes[3];\r
-    int b4 = sasBytes[4];\r
-    \r
-    printf("%d %d %d %d %d\n", b0, b1, b2, b3, b4);\r
-\r
-    // https://spec.matrix.org/v1.7/client-server-api/#sas-method-decimal\r
-    printf("%d | %d | %d\n",\r
-        (b0 << 5 | b1 >> 3) + 1000,\r
-        ((b1 & 0x7) << 10 | b2 << 2 | b3 >> 6) + 1000,\r
-        ((b3 & 0x3F) << 7 | b4 >> 1) + 1000);\r
-    printf("%d | %d | %d\n",\r
-        ((b0 << 5) | (b1 >> 3)) + 1000,\r
-        (((b1 & 0x7) << 10) | (b2 << 2) | (b3 >> 6)) + 1000,\r
-        (((b3 & 0x3F) << 7) | (b4 >> 1)) + 1000);\r
-    \r
-    // mac\r
-    const char * masterKey = "vt8tJ5/SxqkvXS+XoGxr+4rJNe8fJfZT3/e/FTwlFsI";\r
-\r
-    char keyList[1024];\r
-    char keyListMac[1024];\r
-    char key1Id[1024];\r
-    char key1[1024];\r
-    char key1Mac[1024];\r
-    char key2Id[1024];\r
-    char key2[1024];\r
-    char key2Mac[1024];\r
-\r
-    if (strcmp(masterKey, client.deviceId) < 0) {\r
-        //strcpy(key1Id, masterKey);\r
-        snprintf(key1Id, 1024, "ed25519:%s", masterKey);\r
-        strcpy(key1, masterKey);\r
-        //strcpy(key2Id, client.deviceId);\r
-        snprintf(key2Id, 1024, "ed25519:%s", client.deviceId);\r
-        MatrixOlmAccountGetSigningKey(&client.olmAccount, key2, 1024);\r
-    }\r
-    else {\r
-        //strcpy(key1Id, client.deviceId);\r
-        snprintf(key1Id, 1024, "ed25519:%s", client.deviceId);\r
-        MatrixOlmAccountGetSigningKey(&client.olmAccount, key1, 1024);\r
-        //strcpy(key2Id, masterKey);\r
-        snprintf(key2Id, 1024, "ed25519:%s", masterKey);\r
-        strcpy(key2, masterKey);\r
-    }\r
-\r
-    snprintf(keyList, 1024,\r
-        "%s,%s", key1Id, key2Id);\r
-    \r
-    char macInfo[1024];\r
-    int macInfoLen;\r
-    {\r
-        macInfoLen =\r
-            snprintf(macInfo, 1024,\r
-                "MATRIX_KEY_VERIFICATION_MAC%s%s%s%s%s%s",\r
-                USER_ID,\r
-                client.deviceId,\r
-                USER_ID,\r
-                DEVICE_ID,\r
-                transactionId,\r
-                "KEY_IDS");\r
-        olm_sas_calculate_mac_fixed_base64(olmSas, keyList, strlen(keyList), macInfo, macInfoLen, keyListMac, 1024);\r
-    }\r
-    {\r
-        macInfoLen =\r
-            snprintf(macInfo, 1024,\r
-                "MATRIX_KEY_VERIFICATION_MAC%s%s%s%s%s%s",\r
-                USER_ID,\r
-                client.deviceId,\r
-                USER_ID,\r
-                DEVICE_ID,\r
-                transactionId,\r
-                key1Id);\r
-        olm_sas_calculate_mac_fixed_base64(olmSas, key1, strlen(key1), macInfo, macInfoLen, key1Mac, 1024);\r
-    }\r
-    {\r
-        macInfoLen =\r
-            snprintf(macInfo, 1024,\r
-                "MATRIX_KEY_VERIFICATION_MAC%s%s%s%s%s%s",\r
-                USER_ID,\r
-                client.deviceId,\r
-                USER_ID,\r
-                DEVICE_ID,\r
-                transactionId,\r
-                key2Id);\r
-        olm_sas_calculate_mac_fixed_base64(olmSas, key2, strlen(key2), macInfo, macInfoLen, key2Mac, 1024);\r
-    }\r
-\r
-    printf("send mac:");\r
-    getchar();\r
-\r
-    char verificationMacBuffer[2048];\r
-    snprintf(verificationMacBuffer, 2048,\r
-        "{"\r
-        "\"keys\":\"%s\","\r
-        "\"mac\":{"\r
-        "\"%s\":\"%s\","\r
-        "\"%s\":\"%s\""\r
-        "},"\r
-        "\"transaction_id\":\"%s\""\r
-        "}",\r
-        keyListMac,\r
-        key1Id,\r
-        key1Mac,\r
-        key2Id,\r
-        key2Mac,\r
-        transactionId);\r
-    \r
-    MatrixClientSendToDevice(&client,\r
-        USER_ID,\r
-        DEVICE_ID,\r
-        verificationMacBuffer,\r
-        "m.key.verification.mac");\r
-\r
-    printf("send done:");\r
-    getchar();\r
-\r
-    char verificationDoneBuffer[2048];\r
-    snprintf(verificationDoneBuffer, 2048,\r
-        "{"\r
-        "\"transaction_id\":\"%s\""\r
-        "}",\r
-        transactionId);\r
-    \r
-    MatrixClientSendToDevice(&client,\r
-        USER_ID,\r
-        DEVICE_ID,\r
-        verificationDoneBuffer,\r
-        "m.key.verification.done");\r
-    \r
-    // done\r
-\r
-    // request room key\r
-\r
-    getchar();\r
-    \r
-    MatrixClientRequestMegolmInSession(&client,\r
-        ROOM_ID,\r
-        SESSION_ID,\r
-        SENDER_KEY,\r
-        USER_ID,\r
-        DEVICE_ID);\r
-\r
-    // // decrypt room key\r
-\r
-    MatrixOlmSession * olmSession;\r
-    MatrixClientGetOlmSession(&client,\r
-        USER_ID,\r
-        DEVICE_ID,\r
-        &olmSession);\r
-    static char encrypted[2048];\r
-    static char decrypted[2048];\r
-    printf("encrypted:");\r
-    fgets(encrypted, 2048, stdin);\r
-    printf("(%d) %s;\n", strlen(encrypted), encrypted);\r
-    MatrixOlmSessionDecrypt(olmSession,\r
-        1, encrypted, decrypted, 2048);\r
-    printf("decrypted: %s\n", decrypted);\r
-\r
-    // int c;\r
-    // while ((c = getchar()) != 'q') {\r
-    //     printf("c: %c (%d)\n", c, c);\r
-    //     static char syncBuffer[40000];\r
-    //     MatrixClientSync(&client,\r
-    //         syncBuffer, 40000);\r
-    //     printf("sync: %s", syncBuffer);\r
-    // }\r
-\r
-\r
-    // static char decryptedBuffer[1024];\r
-    // MatrixMegolmInSessionDecrypt(&megolmSession,\r
-    //     eventBuffer,\r
-    //     decryptedBuffer, 1024);\r
-\r
-    // printf("%s\n", decryptedBuffer);\r
-\r
-    getchar();\r
-\r
-    MatrixClientDeleteDevice(&client);\r
-        \r
-    MatrixHttpDeinit(&client.hc);\r
-\r
-    return 0;\r
-}\r