summaryrefslogtreecommitdiff
path: root/toxcore/onion.c
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2014-04-21 16:51:36 -0400
committerirungentoo <irungentoo@gmail.com>2014-04-21 16:51:36 -0400
commit9c6a8432ce7298766669d1e6a966b5493971afb7 (patch)
tree8fd98c412610cbcf3fa8b7c28e0a5efbe02bad77 /toxcore/onion.c
parent1603ca974eae3fe0d94b597103f04acfb96fcab0 (diff)
Crypto related cleanups.
Moved Bunch of functions from net_crypto to crypto_core. decrypt_data_fast and decrypt_data_symmetric were the same thing therefore, removed decrypt_data_fast. Replaced all the crypto_secretbox_* defines with the equivalent crypto_box_* one. New define: crypto_box_KEYBYTES that is equal to crypto_box_BEFORENMBYTES.
Diffstat (limited to 'toxcore/onion.c')
-rw-r--r--toxcore/onion.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/toxcore/onion.c b/toxcore/onion.c
index ccb729f3..8603de0a 100644
--- a/toxcore/onion.c
+++ b/toxcore/onion.c
@@ -111,7 +111,7 @@ int send_onion_packet(Networking_Core *net, Onion_Path *path, IP_Port dest, uint
111 memcpy(step2, &path->ip_port3, sizeof(IP_Port)); 111 memcpy(step2, &path->ip_port3, sizeof(IP_Port));
112 memcpy(step2 + sizeof(IP_Port), path->public_key3, crypto_box_PUBLICKEYBYTES); 112 memcpy(step2 + sizeof(IP_Port), path->public_key3, crypto_box_PUBLICKEYBYTES);
113 113
114 int len = encrypt_data_fast(path->shared_key3, nonce, step1, sizeof(step1), 114 int len = encrypt_data_symmetric(path->shared_key3, nonce, step1, sizeof(step1),
115 step2 + sizeof(IP_Port) + crypto_box_PUBLICKEYBYTES); 115 step2 + sizeof(IP_Port) + crypto_box_PUBLICKEYBYTES);
116 116
117 if ((uint32_t)len != sizeof(IP_Port) + length + crypto_box_MACBYTES) 117 if ((uint32_t)len != sizeof(IP_Port) + length + crypto_box_MACBYTES)
@@ -120,7 +120,7 @@ int send_onion_packet(Networking_Core *net, Onion_Path *path, IP_Port dest, uint
120 uint8_t step3[sizeof(IP_Port) + SEND_BASE * 2 + length]; 120 uint8_t step3[sizeof(IP_Port) + SEND_BASE * 2 + length];
121 memcpy(step3, &path->ip_port2, sizeof(IP_Port)); 121 memcpy(step3, &path->ip_port2, sizeof(IP_Port));
122 memcpy(step3 + sizeof(IP_Port), path->public_key2, crypto_box_PUBLICKEYBYTES); 122 memcpy(step3 + sizeof(IP_Port), path->public_key2, crypto_box_PUBLICKEYBYTES);
123 len = encrypt_data_fast(path->shared_key2, nonce, step2, sizeof(step2), 123 len = encrypt_data_symmetric(path->shared_key2, nonce, step2, sizeof(step2),
124 step3 + sizeof(IP_Port) + crypto_box_PUBLICKEYBYTES); 124 step3 + sizeof(IP_Port) + crypto_box_PUBLICKEYBYTES);
125 125
126 if ((uint32_t)len != sizeof(IP_Port) + SEND_BASE + length + crypto_box_MACBYTES) 126 if ((uint32_t)len != sizeof(IP_Port) + SEND_BASE + length + crypto_box_MACBYTES)
@@ -131,7 +131,7 @@ int send_onion_packet(Networking_Core *net, Onion_Path *path, IP_Port dest, uint
131 memcpy(packet + 1, nonce, crypto_box_NONCEBYTES); 131 memcpy(packet + 1, nonce, crypto_box_NONCEBYTES);
132 memcpy(packet + 1 + crypto_box_NONCEBYTES, path->public_key1, crypto_box_PUBLICKEYBYTES); 132 memcpy(packet + 1 + crypto_box_NONCEBYTES, path->public_key1, crypto_box_PUBLICKEYBYTES);
133 133
134 len = encrypt_data_fast(path->shared_key1, nonce, step3, sizeof(step3), 134 len = encrypt_data_symmetric(path->shared_key1, nonce, step3, sizeof(step3),
135 packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES); 135 packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES);
136 136
137 if ((uint32_t)len != sizeof(IP_Port) + SEND_BASE * 2 + length + crypto_box_MACBYTES) 137 if ((uint32_t)len != sizeof(IP_Port) + SEND_BASE * 2 + length + crypto_box_MACBYTES)
@@ -175,7 +175,7 @@ static int handle_send_initial(void *object, IP_Port source, uint8_t *packet, ui
175 uint8_t plain[MAX_ONION_SIZE]; 175 uint8_t plain[MAX_ONION_SIZE];
176 uint8_t shared_key[crypto_box_BEFORENMBYTES]; 176 uint8_t shared_key[crypto_box_BEFORENMBYTES];
177 get_shared_key(&onion->shared_keys_1, shared_key, onion->dht->self_secret_key, packet + 1 + crypto_box_NONCEBYTES); 177 get_shared_key(&onion->shared_keys_1, shared_key, onion->dht->self_secret_key, packet + 1 + crypto_box_NONCEBYTES);
178 int len = decrypt_data_fast(shared_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES, 178 int len = decrypt_data_symmetric(shared_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES,
179 length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES), plain); 179 length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES), plain);
180 180
181 if ((uint32_t)len != length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES)) 181 if ((uint32_t)len != length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES))
@@ -198,12 +198,12 @@ int onion_send_1(Onion *onion, uint8_t *plain, uint32_t len, IP_Port source, uin
198 uint8_t *ret_part = data + data_len; 198 uint8_t *ret_part = data + data_len;
199 new_nonce(ret_part); 199 new_nonce(ret_part);
200 len = encrypt_data_symmetric(onion->secret_symmetric_key, ret_part, (uint8_t *)&source, sizeof(IP_Port), 200 len = encrypt_data_symmetric(onion->secret_symmetric_key, ret_part, (uint8_t *)&source, sizeof(IP_Port),
201 ret_part + crypto_secretbox_NONCEBYTES); 201 ret_part + crypto_box_NONCEBYTES);
202 202
203 if (len != sizeof(IP_Port) + crypto_secretbox_MACBYTES) 203 if (len != sizeof(IP_Port) + crypto_box_MACBYTES)
204 return 1; 204 return 1;
205 205
206 data_len += crypto_secretbox_NONCEBYTES + len; 206 data_len += crypto_box_NONCEBYTES + len;
207 207
208 if ((uint32_t)sendpacket(onion->net, send_to, data, data_len) != data_len) 208 if ((uint32_t)sendpacket(onion->net, send_to, data, data_len) != data_len)
209 return 1; 209 return 1;
@@ -226,7 +226,7 @@ static int handle_send_1(void *object, IP_Port source, uint8_t *packet, uint32_t
226 uint8_t plain[MAX_ONION_SIZE]; 226 uint8_t plain[MAX_ONION_SIZE];
227 uint8_t shared_key[crypto_box_BEFORENMBYTES]; 227 uint8_t shared_key[crypto_box_BEFORENMBYTES];
228 get_shared_key(&onion->shared_keys_2, shared_key, onion->dht->self_secret_key, packet + 1 + crypto_box_NONCEBYTES); 228 get_shared_key(&onion->shared_keys_2, shared_key, onion->dht->self_secret_key, packet + 1 + crypto_box_NONCEBYTES);
229 int len = decrypt_data_fast(shared_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES, 229 int len = decrypt_data_symmetric(shared_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES,
230 length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_1), plain); 230 length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_1), plain);
231 231
232 if ((uint32_t)len != length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_1 + crypto_box_MACBYTES)) 232 if ((uint32_t)len != length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_1 + crypto_box_MACBYTES))
@@ -247,12 +247,12 @@ static int handle_send_1(void *object, IP_Port source, uint8_t *packet, uint32_t
247 memcpy(ret_data, &source, sizeof(IP_Port)); 247 memcpy(ret_data, &source, sizeof(IP_Port));
248 memcpy(ret_data + sizeof(IP_Port), packet + (length - RETURN_1), RETURN_1); 248 memcpy(ret_data + sizeof(IP_Port), packet + (length - RETURN_1), RETURN_1);
249 len = encrypt_data_symmetric(onion->secret_symmetric_key, ret_part, ret_data, sizeof(ret_data), 249 len = encrypt_data_symmetric(onion->secret_symmetric_key, ret_part, ret_data, sizeof(ret_data),
250 ret_part + crypto_secretbox_NONCEBYTES); 250 ret_part + crypto_box_NONCEBYTES);
251 251
252 if (len != RETURN_2 - crypto_secretbox_NONCEBYTES) 252 if (len != RETURN_2 - crypto_box_NONCEBYTES)
253 return 1; 253 return 1;
254 254
255 data_len += crypto_secretbox_NONCEBYTES + len; 255 data_len += crypto_box_NONCEBYTES + len;
256 256
257 if ((uint32_t)sendpacket(onion->net, send_to, data, data_len) != data_len) 257 if ((uint32_t)sendpacket(onion->net, send_to, data, data_len) != data_len)
258 return 1; 258 return 1;
@@ -275,7 +275,7 @@ static int handle_send_2(void *object, IP_Port source, uint8_t *packet, uint32_t
275 uint8_t plain[MAX_ONION_SIZE]; 275 uint8_t plain[MAX_ONION_SIZE];
276 uint8_t shared_key[crypto_box_BEFORENMBYTES]; 276 uint8_t shared_key[crypto_box_BEFORENMBYTES];
277 get_shared_key(&onion->shared_keys_3, shared_key, onion->dht->self_secret_key, packet + 1 + crypto_box_NONCEBYTES); 277 get_shared_key(&onion->shared_keys_3, shared_key, onion->dht->self_secret_key, packet + 1 + crypto_box_NONCEBYTES);
278 int len = decrypt_data_fast(shared_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES, 278 int len = decrypt_data_symmetric(shared_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES,
279 length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_2), plain); 279 length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_2), plain);
280 280
281 if ((uint32_t)len != length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_2 + crypto_box_MACBYTES)) 281 if ((uint32_t)len != length - (1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + RETURN_2 + crypto_box_MACBYTES))
@@ -294,9 +294,9 @@ static int handle_send_2(void *object, IP_Port source, uint8_t *packet, uint32_t
294 memcpy(ret_data, &source, sizeof(IP_Port)); 294 memcpy(ret_data, &source, sizeof(IP_Port));
295 memcpy(ret_data + sizeof(IP_Port), packet + (length - RETURN_2), RETURN_2); 295 memcpy(ret_data + sizeof(IP_Port), packet + (length - RETURN_2), RETURN_2);
296 len = encrypt_data_symmetric(onion->secret_symmetric_key, ret_part, ret_data, sizeof(ret_data), 296 len = encrypt_data_symmetric(onion->secret_symmetric_key, ret_part, ret_data, sizeof(ret_data),
297 ret_part + crypto_secretbox_NONCEBYTES); 297 ret_part + crypto_box_NONCEBYTES);
298 298
299 if (len != RETURN_3 - crypto_secretbox_NONCEBYTES) 299 if (len != RETURN_3 - crypto_box_NONCEBYTES)
300 return 1; 300 return 1;
301 301
302 data_len += RETURN_3; 302 data_len += RETURN_3;
@@ -321,8 +321,8 @@ static int handle_recv_3(void *object, IP_Port source, uint8_t *packet, uint32_t
321 change_symmetric_key(onion); 321 change_symmetric_key(onion);
322 322
323 uint8_t plain[sizeof(IP_Port) + RETURN_2]; 323 uint8_t plain[sizeof(IP_Port) + RETURN_2];
324 int len = decrypt_data_symmetric(onion->secret_symmetric_key, packet + 1, packet + 1 + crypto_secretbox_NONCEBYTES, 324 int len = decrypt_data_symmetric(onion->secret_symmetric_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES,
325 sizeof(IP_Port) + RETURN_2 + crypto_secretbox_MACBYTES, plain); 325 sizeof(IP_Port) + RETURN_2 + crypto_box_MACBYTES, plain);
326 326
327 if ((uint32_t)len != sizeof(plain)) 327 if ((uint32_t)len != sizeof(plain))
328 return 1; 328 return 1;
@@ -355,8 +355,8 @@ static int handle_recv_2(void *object, IP_Port source, uint8_t *packet, uint32_t
355 change_symmetric_key(onion); 355 change_symmetric_key(onion);
356 356
357 uint8_t plain[sizeof(IP_Port) + RETURN_1]; 357 uint8_t plain[sizeof(IP_Port) + RETURN_1];
358 int len = decrypt_data_symmetric(onion->secret_symmetric_key, packet + 1, packet + 1 + crypto_secretbox_NONCEBYTES, 358 int len = decrypt_data_symmetric(onion->secret_symmetric_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES,
359 sizeof(IP_Port) + RETURN_1 + crypto_secretbox_MACBYTES, plain); 359 sizeof(IP_Port) + RETURN_1 + crypto_box_MACBYTES, plain);
360 360
361 if ((uint32_t)len != sizeof(plain)) 361 if ((uint32_t)len != sizeof(plain))
362 return 1; 362 return 1;
@@ -390,8 +390,8 @@ static int handle_recv_1(void *object, IP_Port source, uint8_t *packet, uint32_t
390 390
391 IP_Port send_to; 391 IP_Port send_to;
392 392
393 int len = decrypt_data_symmetric(onion->secret_symmetric_key, packet + 1, packet + 1 + crypto_secretbox_NONCEBYTES, 393 int len = decrypt_data_symmetric(onion->secret_symmetric_key, packet + 1, packet + 1 + crypto_box_NONCEBYTES,
394 sizeof(IP_Port) + crypto_secretbox_MACBYTES, (uint8_t *) &send_to); 394 sizeof(IP_Port) + crypto_box_MACBYTES, (uint8_t *) &send_to);
395 395
396 if ((uint32_t)len != sizeof(IP_Port)) 396 if ((uint32_t)len != sizeof(IP_Port))
397 return 1; 397 return 1;