summaryrefslogtreecommitdiff
path: root/libs/libtox/src/toxcore/onion.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/libtox/src/toxcore/onion.h')
-rw-r--r--libs/libtox/src/toxcore/onion.h165
1 files changed, 0 insertions, 165 deletions
diff --git a/libs/libtox/src/toxcore/onion.h b/libs/libtox/src/toxcore/onion.h
deleted file mode 100644
index e81b3a52ae..0000000000
--- a/libs/libtox/src/toxcore/onion.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Implementation of the onion part of docs/Prevent_Tracking.txt
- */
-
-/*
- * Copyright © 2016-2017 The TokTok team.
- * Copyright © 2013 Tox project.
- *
- * This file is part of Tox, the free peer to peer instant messenger.
- *
- * Tox is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Tox is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Tox. If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef ONION_H
-#define ONION_H
-
-#include "DHT.h"
-
-typedef struct {
- DHT *dht;
- Networking_Core *net;
- uint8_t secret_symmetric_key[CRYPTO_SYMMETRIC_KEY_SIZE];
- uint64_t timestamp;
-
- Shared_Keys shared_keys_1;
- Shared_Keys shared_keys_2;
- Shared_Keys shared_keys_3;
-
- int (*recv_1_function)(void *, IP_Port, const uint8_t *, uint16_t);
- void *callback_object;
-} Onion;
-
-#define ONION_MAX_PACKET_SIZE 1400
-
-#define ONION_RETURN_1 (CRYPTO_NONCE_SIZE + SIZE_IPPORT + CRYPTO_MAC_SIZE)
-#define ONION_RETURN_2 (CRYPTO_NONCE_SIZE + SIZE_IPPORT + CRYPTO_MAC_SIZE + ONION_RETURN_1)
-#define ONION_RETURN_3 (CRYPTO_NONCE_SIZE + SIZE_IPPORT + CRYPTO_MAC_SIZE + ONION_RETURN_2)
-
-#define ONION_SEND_BASE (CRYPTO_PUBLIC_KEY_SIZE + SIZE_IPPORT + CRYPTO_MAC_SIZE)
-#define ONION_SEND_3 (CRYPTO_NONCE_SIZE + ONION_SEND_BASE + ONION_RETURN_2)
-#define ONION_SEND_2 (CRYPTO_NONCE_SIZE + ONION_SEND_BASE*2 + ONION_RETURN_1)
-#define ONION_SEND_1 (CRYPTO_NONCE_SIZE + ONION_SEND_BASE*3)
-
-#define ONION_MAX_DATA_SIZE (ONION_MAX_PACKET_SIZE - (ONION_SEND_1 + 1))
-#define ONION_RESPONSE_MAX_DATA_SIZE (ONION_MAX_PACKET_SIZE - (1 + ONION_RETURN_3))
-
-#define ONION_PATH_LENGTH 3
-
-typedef struct {
- uint8_t shared_key1[CRYPTO_SHARED_KEY_SIZE];
- uint8_t shared_key2[CRYPTO_SHARED_KEY_SIZE];
- uint8_t shared_key3[CRYPTO_SHARED_KEY_SIZE];
-
- uint8_t public_key1[CRYPTO_PUBLIC_KEY_SIZE];
- uint8_t public_key2[CRYPTO_PUBLIC_KEY_SIZE];
- uint8_t public_key3[CRYPTO_PUBLIC_KEY_SIZE];
-
- IP_Port ip_port1;
- uint8_t node_public_key1[CRYPTO_PUBLIC_KEY_SIZE];
-
- IP_Port ip_port2;
- uint8_t node_public_key2[CRYPTO_PUBLIC_KEY_SIZE];
-
- IP_Port ip_port3;
- uint8_t node_public_key3[CRYPTO_PUBLIC_KEY_SIZE];
-
- uint32_t path_num;
-} Onion_Path;
-
-/* Create a new onion path.
- *
- * Create a new onion path out of nodes (nodes is a list of ONION_PATH_LENGTH nodes)
- *
- * new_path must be an empty memory location of atleast Onion_Path size.
- *
- * return -1 on failure.
- * return 0 on success.
- */
-int create_onion_path(const DHT *dht, Onion_Path *new_path, const Node_format *nodes);
-
-/* Dump nodes in onion path to nodes of length num_nodes;
- *
- * return -1 on failure.
- * return 0 on success.
- */
-int onion_path_to_nodes(Node_format *nodes, unsigned int num_nodes, const Onion_Path *path);
-
-/* Create a onion packet.
- *
- * Use Onion_Path path to create packet for data of length to dest.
- * Maximum length of data is ONION_MAX_DATA_SIZE.
- * packet should be at least ONION_MAX_PACKET_SIZE big.
- *
- * return -1 on failure.
- * return length of created packet on success.
- */
-int create_onion_packet(uint8_t *packet, uint16_t max_packet_length, const Onion_Path *path, IP_Port dest,
- const uint8_t *data, uint16_t length);
-
-
-/* Create a onion packet to be sent over tcp.
- *
- * Use Onion_Path path to create packet for data of length to dest.
- * Maximum length of data is ONION_MAX_DATA_SIZE.
- * packet should be at least ONION_MAX_PACKET_SIZE big.
- *
- * return -1 on failure.
- * return length of created packet on success.
- */
-int create_onion_packet_tcp(uint8_t *packet, uint16_t max_packet_length, const Onion_Path *path, IP_Port dest,
- const uint8_t *data, uint16_t length);
-
-/* Create and send a onion packet.
- *
- * Use Onion_Path path to send data of length to dest.
- * Maximum length of data is ONION_MAX_DATA_SIZE.
- *
- * return -1 on failure.
- * return 0 on success.
- */
-int send_onion_packet(Networking_Core *net, const Onion_Path *path, IP_Port dest, const uint8_t *data, uint16_t length);
-
-/* Create and send a onion response sent initially to dest with.
- * Maximum length of data is ONION_RESPONSE_MAX_DATA_SIZE.
- *
- * return -1 on failure.
- * return 0 on success.
- */
-int send_onion_response(Networking_Core *net, IP_Port dest, const uint8_t *data, uint16_t length, const uint8_t *ret);
-
-/* Function to handle/send received decrypted versions of the packet sent with send_onion_packet.
- *
- * return 0 on success.
- * return 1 on failure.
- *
- * Used to handle these packets that are received in a non traditional way (by TCP for example).
- *
- * Source family must be set to something else than TOX_AF_INET6 or TOX_AF_INET so that the callback gets called
- * when the response is received.
- */
-int onion_send_1(const Onion *onion, const uint8_t *plain, uint16_t len, IP_Port source, const uint8_t *nonce);
-
-/* Set the callback to be called when the dest ip_port doesn't have TOX_AF_INET6 or TOX_AF_INET as the family.
- *
- * Format: function(void *object, IP_Port dest, uint8_t *data, uint16_t length)
- */
-void set_callback_handle_recv_1(Onion *onion, int (*function)(void *, IP_Port, const uint8_t *, uint16_t),
- void *object);
-
-Onion *new_onion(DHT *dht);
-
-void kill_onion(Onion *onion);
-
-
-#endif