summaryrefslogtreecommitdiff
path: root/docs/Hardening_docs.txt
blob: c5de6ade6e1b6ba1a7063eeebf429456c478b585 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Hardening request packets are sent as crypto request packets (see crypto docs.)
NOTE: currently only get nodes requests are tested in the code which is why there is only one test (more will be added soon.)

All hardening requests must contain exactly 768 bytes of data. (The data sent must be padded with zeros if it is smaller than that.)

1. Get the information (IP_port, client_id) of the node we want to test.
2. Find a couple random nodes that is not that node (one for each test.)
3. Send crypto request packets to each of these random nodes with the data being:

[byte with value: 02 (get nodes test request)][struct Node_format (the node to test.)][client_id(32 bytes) the id to query the node with.][padding]

4. The random node receives a packet.
-The packet is a get nodes test request:
    send a get_node request to that node with the id to query in the request.
    when a send_node response is received, send the following response to the person who sent us the get nodes test request packet:
        [byte with value: 03 (get nodes test response)][client_id(32 bytes): the id of the tested node][The list of nodes it responded with in IPv6 Node format (struct Node_Format)]
    PROTIP: (get node requests and response contain an encrypted part that you can use to store information so that you don't 
             have to store in your memory where/if to send back the response from the send node)

5. Receive the test responses.
-If the test(s) pass (the nodes behave in a satisfactory manner), make these nodes have priority over those who don't pass the test(s).