diff options
| author | Dirk Engling <erdgeist@erdgeist.org> | 2020-12-05 04:32:52 +0100 | 
|---|---|---|
| committer | Dirk Engling <erdgeist@erdgeist.org> | 2020-12-05 04:32:52 +0100 | 
| commit | 92de4cedd3ae0a088c87e38d3a9560d3b3cfd54f (patch) | |
| tree | 03688b89d6885705b41989aa066569fa95876965 | |
| parent | 5e081b7b50efaef0a100c20c41d2991139deca5e (diff) | |
Make session id a uint64_t as it is expected at receiver
| -rw-r--r-- | sender.c | 12 | 
1 files changed, 7 insertions, 5 deletions
| @@ -27,7 +27,7 @@ static const unsigned char pubkey[] = | |||
| 27 | static const unsigned char pp[] = "IJUHZGFDXTZKHJKHGFDHZLUÖDRTFGHHJGHH"; | 27 | static const unsigned char pp[] = "IJUHZGFDXTZKHJKHGFDHZLUÖDRTFGHHJGHH"; | 
| 28 | 28 | ||
| 29 | enum { SESSION_ID_LENGTH = 8, AES_KEY_LENGTH = 16, GCM_IV_LENGTH = 16, GCM_TAG_LENGTH = 16 }; | 29 | enum { SESSION_ID_LENGTH = 8, AES_KEY_LENGTH = 16, GCM_IV_LENGTH = 16, GCM_TAG_LENGTH = 16 }; | 
| 30 | static uint8_t session_id[8] = { 0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01 }; | 30 | static uint64_t session_id = 0x0123456789abcdef; | 
| 31 | static uint8_t aes_key[16] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }; | 31 | static uint8_t aes_key[16] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }; | 
| 32 | 32 | ||
| 33 | void send_udp(int sock, mbedtls_ctr_drbg_context *ctr_drbg, const uint8_t *text, size_t len) { | 33 | void send_udp(int sock, mbedtls_ctr_drbg_context *ctr_drbg, const uint8_t *text, size_t len) { | 
| @@ -37,14 +37,14 @@ void send_udp(int sock, mbedtls_ctr_drbg_context *ctr_drbg, const uint8_t *text, | |||
| 37 | const size_t total_length = 1 + SESSION_ID_LENGTH + GCM_IV_LENGTH + GCM_TAG_LENGTH + len; | 37 | const size_t total_length = 1 + SESSION_ID_LENGTH + GCM_IV_LENGTH + GCM_TAG_LENGTH + len; | 
| 38 | uint8_t *output = alloca(total_length); | 38 | uint8_t *output = alloca(total_length); | 
| 39 | output[0] = 1; | 39 | output[0] = 1; | 
| 40 | memcpy(output + 1, session_id, SESSION_ID_LENGTH); | 40 | memcpy(output + 1, (uint8_t*)&session_id, SESSION_ID_LENGTH); | 
| 41 | memcpy(output + 1 + SESSION_ID_LENGTH, iv, GCM_IV_LENGTH); | 41 | memcpy(output + 1 + SESSION_ID_LENGTH, iv, GCM_IV_LENGTH); | 
| 42 | 42 | ||
| 43 | mbedtls_gcm_context ctx; | 43 | mbedtls_gcm_context ctx; | 
| 44 | mbedtls_gcm_init(&ctx); | 44 | mbedtls_gcm_init(&ctx); | 
| 45 | mbedtls_gcm_setkey(&ctx, MBEDTLS_CIPHER_ID_AES, aes_key, 8 * AES_KEY_LENGTH); | 45 | mbedtls_gcm_setkey(&ctx, MBEDTLS_CIPHER_ID_AES, aes_key, 8 * AES_KEY_LENGTH); | 
| 46 | 46 | ||
| 47 | if (!mbedtls_gcm_crypt_and_tag(&ctx, MBEDTLS_GCM_ENCRYPT, len, iv, GCM_IV_LENGTH, session_id, SESSION_ID_LENGTH, | 47 | if (!mbedtls_gcm_crypt_and_tag(&ctx, MBEDTLS_GCM_ENCRYPT, len, iv, GCM_IV_LENGTH, (uint8_t*)&session_id, SESSION_ID_LENGTH, | 
| 48 | text, output + 1 + SESSION_ID_LENGTH + GCM_IV_LENGTH + GCM_TAG_LENGTH, GCM_TAG_LENGTH, | 48 | text, output + 1 + SESSION_ID_LENGTH + GCM_IV_LENGTH + GCM_TAG_LENGTH, GCM_TAG_LENGTH, | 
| 49 | output + 1 + SESSION_ID_LENGTH + GCM_IV_LENGTH)) { | 49 | output + 1 + SESSION_ID_LENGTH + GCM_IV_LENGTH)) { | 
| 50 | struct sockaddr_in to; | 50 | struct sockaddr_in to; | 
| @@ -60,12 +60,12 @@ void send_udp(int sock, mbedtls_ctr_drbg_context *ctr_drbg, const uint8_t *text, | |||
| 60 | } | 60 | } | 
| 61 | 61 | ||
| 62 | void new_session(int sock, mbedtls_ctr_drbg_context *ctr_drbg) { | 62 | void new_session(int sock, mbedtls_ctr_drbg_context *ctr_drbg) { | 
| 63 | mbedtls_ctr_drbg_random(ctr_drbg, session_id, sizeof(session_id)); | 63 | mbedtls_ctr_drbg_random(ctr_drbg, (uint8_t*)&session_id, sizeof(session_id)); | 
| 64 | mbedtls_ctr_drbg_random(ctr_drbg, aes_key, sizeof(aes_key)); | 64 | mbedtls_ctr_drbg_random(ctr_drbg, aes_key, sizeof(aes_key)); | 
| 65 | 65 | ||
| 66 | unsigned char output[512]; | 66 | unsigned char output[512]; | 
| 67 | output[0] = 0; | 67 | output[0] = 0; | 
| 68 | memcpy(output + 1, session_id, SESSION_ID_LENGTH); | 68 | memcpy(output + 1, (uint8_t*)&session_id, SESSION_ID_LENGTH); | 
| 69 | 69 | ||
| 70 | mbedtls_pk_context pk; | 70 | mbedtls_pk_context pk; | 
| 71 | mbedtls_pk_init(&pk); | 71 | mbedtls_pk_init(&pk); | 
| @@ -105,6 +105,8 @@ int main() { | |||
| 105 | 105 | ||
| 106 | const unsigned char *logline = (const unsigned char*)"Juchuuu, es klappt!\n"; | 106 | const unsigned char *logline = (const unsigned char*)"Juchuuu, es klappt!\n"; | 
| 107 | send_udp(sock, &ctr_drbg, logline, strlen((char*)logline)); | 107 | send_udp(sock, &ctr_drbg, logline, strlen((char*)logline)); | 
| 108 | send_udp(sock, &ctr_drbg, logline, strlen((char*)logline)); | ||
| 109 | send_udp(sock, &ctr_drbg, logline, strlen((char*)logline)); | ||
| 108 | 110 | ||
| 109 | close(sock); | 111 | close(sock); | 
| 110 | } | 112 | } | 
