On Tue, Apr 14, 2020 at 9:13 AM Eli Vakrat <[email protected]> wrote: > > Hello to the TOR dev team! > > My name is Eli, I'm a high school student from Israel and I'm currently > trying to implement a TOR Client in Python. > Currently, my project is configured so that the python client (OP) has its > guard node set as my local machine (which is running a downloaded version of > TOR). I do this for debugging purposes so that if I send a malformed cell as > the implemented client, I can read the debug log that the OR generates and > see what I did wrong. > > As I am writing this, I have successfully been able to make a v3 "in > protocol" handshake by sending the proper VERSIONS and NETINFO cells that the > OR has accepted. > > Right now, I am working on getting the CREATE cell to work (with the TAP > handshake), and when I send the cell to the OR It sends a DESTROY cell with > the following message in the debug log: > > Apr 14 12:24:51.166 [warn] Received create cell with unexpected circ_id 1. > Closing. > > To my understanding, the problem here is that the circuit id I have chosen is > not valid. > > I read from the tor spec that there is a range of acceptable circuit id's for > each relay and it can be found in the long term 1024 bit RSA "signing key". > > My question to you all is, how can I extract that range for the circuit ID's > (along with any other relevant information) from the signing key? > In other words, what is the "signing key" made up of, and how can I get the > information that its made of? > > The bottom line is I need to find out what valid circuit ID's I can send to > OR's. > > I am having a lot of fun doing this project so far and I hope to hear back > from anyone who has an answer :)
Hi! This looks like a cool project. So, it was only the earlier versions of Tor that chose circuit IDs based on RSA keys. In link protocol version 4 or higher (as negotiated by the VERSIONS cell), you can use any circuit ID that starts with a 1 bit: "In link protocol version 4 or higher, whichever node initiated the connection sets its MSB to 1, and whichever node didn't initiate the connection sets its MSB to 0." Hoping this helps, -- Nick _______________________________________________ tor-dev mailing list [email protected] https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev
