diff options
author | iphydf <iphydf@users.noreply.github.com> | 2016-12-19 02:47:42 +0000 |
---|---|---|
committer | iphydf <iphydf@users.noreply.github.com> | 2016-12-22 10:26:59 +0000 |
commit | ce29c8e7ec91d95167b2dea3aee9fd1ae1aac254 (patch) | |
tree | a288df55c44e8edf816e6abbde19a70faef73394 /toxcore/onion_announce.c | |
parent | 7122d2e862e028a730478d88cd61557fbed16ebf (diff) |
Wrap all sodium/nacl functions in crypto_core.c.
Diffstat (limited to 'toxcore/onion_announce.c')
-rw-r--r-- | toxcore/onion_announce.c | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/toxcore/onion_announce.c b/toxcore/onion_announce.c index acde04a7..5d371a99 100644 --- a/toxcore/onion_announce.c +++ b/toxcore/onion_announce.c | |||
@@ -56,25 +56,25 @@ int create_announce_request(uint8_t *packet, uint16_t max_packet_length, const u | |||
56 | return -1; | 56 | return -1; |
57 | } | 57 | } |
58 | 58 | ||
59 | uint8_t plain[ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES + | 59 | uint8_t plain[ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_PUBLIC_KEY_SIZE + |
60 | ONION_ANNOUNCE_SENDBACK_DATA_LENGTH]; | 60 | ONION_ANNOUNCE_SENDBACK_DATA_LENGTH]; |
61 | memcpy(plain, ping_id, ONION_PING_ID_SIZE); | 61 | memcpy(plain, ping_id, ONION_PING_ID_SIZE); |
62 | memcpy(plain + ONION_PING_ID_SIZE, client_id, crypto_box_PUBLICKEYBYTES); | 62 | memcpy(plain + ONION_PING_ID_SIZE, client_id, CRYPTO_PUBLIC_KEY_SIZE); |
63 | memcpy(plain + ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES, data_public_key, crypto_box_PUBLICKEYBYTES); | 63 | memcpy(plain + ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE, data_public_key, CRYPTO_PUBLIC_KEY_SIZE); |
64 | memcpy(plain + ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES, &sendback_data, | 64 | memcpy(plain + ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_PUBLIC_KEY_SIZE, &sendback_data, |
65 | sizeof(sendback_data)); | 65 | sizeof(sendback_data)); |
66 | 66 | ||
67 | packet[0] = NET_PACKET_ANNOUNCE_REQUEST; | 67 | packet[0] = NET_PACKET_ANNOUNCE_REQUEST; |
68 | random_nonce(packet + 1); | 68 | random_nonce(packet + 1); |
69 | 69 | ||
70 | int len = encrypt_data(dest_client_id, secret_key, packet + 1, plain, sizeof(plain), | 70 | int len = encrypt_data(dest_client_id, secret_key, packet + 1, plain, sizeof(plain), |
71 | packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES); | 71 | packet + 1 + CRYPTO_NONCE_SIZE + CRYPTO_PUBLIC_KEY_SIZE); |
72 | 72 | ||
73 | if ((uint32_t)len + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES != ONION_ANNOUNCE_REQUEST_SIZE) { | 73 | if ((uint32_t)len + 1 + CRYPTO_NONCE_SIZE + CRYPTO_PUBLIC_KEY_SIZE != ONION_ANNOUNCE_REQUEST_SIZE) { |
74 | return -1; | 74 | return -1; |
75 | } | 75 | } |
76 | 76 | ||
77 | memcpy(packet + 1 + crypto_box_NONCEBYTES, public_key, crypto_box_PUBLICKEYBYTES); | 77 | memcpy(packet + 1 + CRYPTO_NONCE_SIZE, public_key, CRYPTO_PUBLIC_KEY_SIZE); |
78 | 78 | ||
79 | return ONION_ANNOUNCE_REQUEST_SIZE; | 79 | return ONION_ANNOUNCE_REQUEST_SIZE; |
80 | } | 80 | } |
@@ -101,19 +101,19 @@ int create_data_request(uint8_t *packet, uint16_t max_packet_length, const uint8 | |||
101 | } | 101 | } |
102 | 102 | ||
103 | packet[0] = NET_PACKET_ONION_DATA_REQUEST; | 103 | packet[0] = NET_PACKET_ONION_DATA_REQUEST; |
104 | memcpy(packet + 1, public_key, crypto_box_PUBLICKEYBYTES); | 104 | memcpy(packet + 1, public_key, CRYPTO_PUBLIC_KEY_SIZE); |
105 | memcpy(packet + 1 + crypto_box_PUBLICKEYBYTES, nonce, crypto_box_NONCEBYTES); | 105 | memcpy(packet + 1 + CRYPTO_PUBLIC_KEY_SIZE, nonce, CRYPTO_NONCE_SIZE); |
106 | 106 | ||
107 | uint8_t random_public_key[crypto_box_PUBLICKEYBYTES]; | 107 | uint8_t random_public_key[CRYPTO_PUBLIC_KEY_SIZE]; |
108 | uint8_t random_secret_key[crypto_box_SECRETKEYBYTES]; | 108 | uint8_t random_secret_key[CRYPTO_SECRET_KEY_SIZE]; |
109 | crypto_box_keypair(random_public_key, random_secret_key); | 109 | crypto_new_keypair(random_public_key, random_secret_key); |
110 | 110 | ||
111 | memcpy(packet + 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES, random_public_key, crypto_box_PUBLICKEYBYTES); | 111 | memcpy(packet + 1 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE, random_public_key, CRYPTO_PUBLIC_KEY_SIZE); |
112 | 112 | ||
113 | int len = encrypt_data(encrypt_public_key, random_secret_key, packet + 1 + crypto_box_PUBLICKEYBYTES, data, length, | 113 | int len = encrypt_data(encrypt_public_key, random_secret_key, packet + 1 + CRYPTO_PUBLIC_KEY_SIZE, data, length, |
114 | packet + 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES); | 114 | packet + 1 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE + CRYPTO_PUBLIC_KEY_SIZE); |
115 | 115 | ||
116 | if (1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + len != DATA_REQUEST_MIN_SIZE + | 116 | if (1 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE + CRYPTO_PUBLIC_KEY_SIZE + len != DATA_REQUEST_MIN_SIZE + |
117 | length) { | 117 | length) { |
118 | return -1; | 118 | return -1; |
119 | } | 119 | } |
@@ -204,12 +204,12 @@ static void generate_ping_id(const Onion_Announce *onion_a, uint64_t time, const | |||
204 | IP_Port ret_ip_port, uint8_t *ping_id) | 204 | IP_Port ret_ip_port, uint8_t *ping_id) |
205 | { | 205 | { |
206 | time /= PING_ID_TIMEOUT; | 206 | time /= PING_ID_TIMEOUT; |
207 | uint8_t data[crypto_box_KEYBYTES + sizeof(time) + crypto_box_PUBLICKEYBYTES + sizeof(ret_ip_port)]; | 207 | uint8_t data[CRYPTO_SYMMETRIC_KEY_SIZE + sizeof(time) + CRYPTO_PUBLIC_KEY_SIZE + sizeof(ret_ip_port)]; |
208 | memcpy(data, onion_a->secret_bytes, crypto_box_KEYBYTES); | 208 | memcpy(data, onion_a->secret_bytes, CRYPTO_SYMMETRIC_KEY_SIZE); |
209 | memcpy(data + crypto_box_KEYBYTES, &time, sizeof(time)); | 209 | memcpy(data + CRYPTO_SYMMETRIC_KEY_SIZE, &time, sizeof(time)); |
210 | memcpy(data + crypto_box_KEYBYTES + sizeof(time), public_key, crypto_box_PUBLICKEYBYTES); | 210 | memcpy(data + CRYPTO_SYMMETRIC_KEY_SIZE + sizeof(time), public_key, CRYPTO_PUBLIC_KEY_SIZE); |
211 | memcpy(data + crypto_box_KEYBYTES + sizeof(time) + crypto_box_PUBLICKEYBYTES, &ret_ip_port, sizeof(ret_ip_port)); | 211 | memcpy(data + CRYPTO_SYMMETRIC_KEY_SIZE + sizeof(time) + CRYPTO_PUBLIC_KEY_SIZE, &ret_ip_port, sizeof(ret_ip_port)); |
212 | crypto_hash_sha256(ping_id, data, sizeof(data)); | 212 | crypto_sha256(ping_id, data, sizeof(data)); |
213 | } | 213 | } |
214 | 214 | ||
215 | /* check if public key is in entries list | 215 | /* check if public key is in entries list |
@@ -231,7 +231,7 @@ static int in_entries(const Onion_Announce *onion_a, const uint8_t *public_key) | |||
231 | return -1; | 231 | return -1; |
232 | } | 232 | } |
233 | 233 | ||
234 | static uint8_t cmp_public_key[crypto_box_PUBLICKEYBYTES]; | 234 | static uint8_t cmp_public_key[CRYPTO_PUBLIC_KEY_SIZE]; |
235 | static int cmp_entry(const void *a, const void *b) | 235 | static int cmp_entry(const void *a, const void *b) |
236 | { | 236 | { |
237 | Onion_Announce_Entry entry1, entry2; | 237 | Onion_Announce_Entry entry1, entry2; |
@@ -296,13 +296,13 @@ static int add_to_entries(Onion_Announce *onion_a, IP_Port ret_ip_port, const ui | |||
296 | return -1; | 296 | return -1; |
297 | } | 297 | } |
298 | 298 | ||
299 | memcpy(onion_a->entries[pos].public_key, public_key, crypto_box_PUBLICKEYBYTES); | 299 | memcpy(onion_a->entries[pos].public_key, public_key, CRYPTO_PUBLIC_KEY_SIZE); |
300 | onion_a->entries[pos].ret_ip_port = ret_ip_port; | 300 | onion_a->entries[pos].ret_ip_port = ret_ip_port; |
301 | memcpy(onion_a->entries[pos].ret, ret, ONION_RETURN_3); | 301 | memcpy(onion_a->entries[pos].ret, ret, ONION_RETURN_3); |
302 | memcpy(onion_a->entries[pos].data_public_key, data_public_key, crypto_box_PUBLICKEYBYTES); | 302 | memcpy(onion_a->entries[pos].data_public_key, data_public_key, CRYPTO_PUBLIC_KEY_SIZE); |
303 | onion_a->entries[pos].time = unix_time(); | 303 | onion_a->entries[pos].time = unix_time(); |
304 | 304 | ||
305 | memcpy(cmp_public_key, onion_a->dht->self_public_key, crypto_box_PUBLICKEYBYTES); | 305 | memcpy(cmp_public_key, onion_a->dht->self_public_key, CRYPTO_PUBLIC_KEY_SIZE); |
306 | qsort(onion_a->entries, ONION_ANNOUNCE_MAX_ENTRIES, sizeof(Onion_Announce_Entry), cmp_entry); | 306 | qsort(onion_a->entries, ONION_ANNOUNCE_MAX_ENTRIES, sizeof(Onion_Announce_Entry), cmp_entry); |
307 | return in_entries(onion_a, public_key); | 307 | return in_entries(onion_a, public_key); |
308 | } | 308 | } |
@@ -315,15 +315,15 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t * | |||
315 | return 1; | 315 | return 1; |
316 | } | 316 | } |
317 | 317 | ||
318 | const uint8_t *packet_public_key = packet + 1 + crypto_box_NONCEBYTES; | 318 | const uint8_t *packet_public_key = packet + 1 + CRYPTO_NONCE_SIZE; |
319 | uint8_t shared_key[crypto_box_BEFORENMBYTES]; | 319 | uint8_t shared_key[CRYPTO_SHARED_KEY_SIZE]; |
320 | get_shared_key(&onion_a->shared_keys_recv, shared_key, onion_a->dht->self_secret_key, packet_public_key); | 320 | get_shared_key(&onion_a->shared_keys_recv, shared_key, onion_a->dht->self_secret_key, packet_public_key); |
321 | 321 | ||
322 | uint8_t plain[ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES + | 322 | uint8_t plain[ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_PUBLIC_KEY_SIZE + |
323 | ONION_ANNOUNCE_SENDBACK_DATA_LENGTH]; | 323 | ONION_ANNOUNCE_SENDBACK_DATA_LENGTH]; |
324 | int len = decrypt_data_symmetric(shared_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES, | 324 | int len = decrypt_data_symmetric(shared_key, packet + 1, packet + 1 + CRYPTO_NONCE_SIZE + CRYPTO_PUBLIC_KEY_SIZE, |
325 | ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + | 325 | ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_PUBLIC_KEY_SIZE + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + |
326 | crypto_box_MACBYTES, plain); | 326 | CRYPTO_MAC_SIZE, plain); |
327 | 327 | ||
328 | if ((uint32_t)len != sizeof(plain)) { | 328 | if ((uint32_t)len != sizeof(plain)) { |
329 | return 1; | 329 | return 1; |
@@ -337,10 +337,10 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t * | |||
337 | 337 | ||
338 | int index = -1; | 338 | int index = -1; |
339 | 339 | ||
340 | uint8_t *data_public_key = plain + ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES; | 340 | uint8_t *data_public_key = plain + ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE; |
341 | 341 | ||
342 | if (sodium_memcmp(ping_id1, plain, ONION_PING_ID_SIZE) == 0 | 342 | if (crypto_memcmp(ping_id1, plain, ONION_PING_ID_SIZE) == 0 |
343 | || sodium_memcmp(ping_id2, plain, ONION_PING_ID_SIZE) == 0) { | 343 | || crypto_memcmp(ping_id2, plain, ONION_PING_ID_SIZE) == 0) { |
344 | index = add_to_entries(onion_a, source, packet_public_key, data_public_key, | 344 | index = add_to_entries(onion_a, source, packet_public_key, data_public_key, |
345 | packet + (ANNOUNCE_REQUEST_SIZE_RECV - ONION_RETURN_3)); | 345 | packet + (ANNOUNCE_REQUEST_SIZE_RECV - ONION_RETURN_3)); |
346 | } else { | 346 | } else { |
@@ -351,7 +351,7 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t * | |||
351 | Node_format nodes_list[MAX_SENT_NODES]; | 351 | Node_format nodes_list[MAX_SENT_NODES]; |
352 | unsigned int num_nodes = get_close_nodes(onion_a->dht, plain + ONION_PING_ID_SIZE, nodes_list, 0, | 352 | unsigned int num_nodes = get_close_nodes(onion_a->dht, plain + ONION_PING_ID_SIZE, nodes_list, 0, |
353 | LAN_ip(source.ip) == 0, 1); | 353 | LAN_ip(source.ip) == 0, 1); |
354 | uint8_t nonce[crypto_box_NONCEBYTES]; | 354 | uint8_t nonce[CRYPTO_NONCE_SIZE]; |
355 | random_nonce(nonce); | 355 | random_nonce(nonce); |
356 | 356 | ||
357 | uint8_t pl[1 + ONION_PING_ID_SIZE + sizeof(nodes_list)]; | 357 | uint8_t pl[1 + ONION_PING_ID_SIZE + sizeof(nodes_list)]; |
@@ -370,7 +370,7 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t * | |||
370 | } | 370 | } |
371 | } else { | 371 | } else { |
372 | pl[0] = 1; | 372 | pl[0] = 1; |
373 | memcpy(pl + 1, onion_a->entries[index].data_public_key, crypto_box_PUBLICKEYBYTES); | 373 | memcpy(pl + 1, onion_a->entries[index].data_public_key, CRYPTO_PUBLIC_KEY_SIZE); |
374 | } | 374 | } |
375 | } | 375 | } |
376 | 376 | ||
@@ -386,19 +386,19 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t * | |||
386 | 386 | ||
387 | uint8_t data[ONION_ANNOUNCE_RESPONSE_MAX_SIZE]; | 387 | uint8_t data[ONION_ANNOUNCE_RESPONSE_MAX_SIZE]; |
388 | len = encrypt_data_symmetric(shared_key, nonce, pl, 1 + ONION_PING_ID_SIZE + nodes_length, | 388 | len = encrypt_data_symmetric(shared_key, nonce, pl, 1 + ONION_PING_ID_SIZE + nodes_length, |
389 | data + 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + crypto_box_NONCEBYTES); | 389 | data + 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + CRYPTO_NONCE_SIZE); |
390 | 390 | ||
391 | if (len != 1 + ONION_PING_ID_SIZE + nodes_length + crypto_box_MACBYTES) { | 391 | if (len != 1 + ONION_PING_ID_SIZE + nodes_length + CRYPTO_MAC_SIZE) { |
392 | return 1; | 392 | return 1; |
393 | } | 393 | } |
394 | 394 | ||
395 | data[0] = NET_PACKET_ANNOUNCE_RESPONSE; | 395 | data[0] = NET_PACKET_ANNOUNCE_RESPONSE; |
396 | memcpy(data + 1, plain + ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES, | 396 | memcpy(data + 1, plain + ONION_PING_ID_SIZE + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_PUBLIC_KEY_SIZE, |
397 | ONION_ANNOUNCE_SENDBACK_DATA_LENGTH); | 397 | ONION_ANNOUNCE_SENDBACK_DATA_LENGTH); |
398 | memcpy(data + 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH, nonce, crypto_box_NONCEBYTES); | 398 | memcpy(data + 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH, nonce, CRYPTO_NONCE_SIZE); |
399 | 399 | ||
400 | if (send_onion_response(onion_a->net, source, data, | 400 | if (send_onion_response(onion_a->net, source, data, |
401 | 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + crypto_box_NONCEBYTES + len, | 401 | 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + CRYPTO_NONCE_SIZE + len, |
402 | packet + (ANNOUNCE_REQUEST_SIZE_RECV - ONION_RETURN_3)) == -1) { | 402 | packet + (ANNOUNCE_REQUEST_SIZE_RECV - ONION_RETURN_3)) == -1) { |
403 | return 1; | 403 | return 1; |
404 | } | 404 | } |
@@ -424,9 +424,9 @@ static int handle_data_request(void *object, IP_Port source, const uint8_t *pack | |||
424 | return 1; | 424 | return 1; |
425 | } | 425 | } |
426 | 426 | ||
427 | uint8_t data[length - (crypto_box_PUBLICKEYBYTES + ONION_RETURN_3)]; | 427 | uint8_t data[length - (CRYPTO_PUBLIC_KEY_SIZE + ONION_RETURN_3)]; |
428 | data[0] = NET_PACKET_ONION_DATA_RESPONSE; | 428 | data[0] = NET_PACKET_ONION_DATA_RESPONSE; |
429 | memcpy(data + 1, packet + 1 + crypto_box_PUBLICKEYBYTES, length - (1 + crypto_box_PUBLICKEYBYTES + ONION_RETURN_3)); | 429 | memcpy(data + 1, packet + 1 + CRYPTO_PUBLIC_KEY_SIZE, length - (1 + CRYPTO_PUBLIC_KEY_SIZE + ONION_RETURN_3)); |
430 | 430 | ||
431 | if (send_onion_response(onion_a->net, onion_a->entries[index].ret_ip_port, data, sizeof(data), | 431 | if (send_onion_response(onion_a->net, onion_a->entries[index].ret_ip_port, data, sizeof(data), |
432 | onion_a->entries[index].ret) == -1) { | 432 | onion_a->entries[index].ret) == -1) { |