<div dir="ltr">Hello to the TOR dev team!<div><br><div><div>My name is Eli, I'm a high school student from Israel and I'm currently trying to implement a TOR Client in Python.</div><div><div>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.<br></div><div><br></div><div>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.</div><div><br></div><div>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:</div><div><br></div><div>Apr 14 12:24:51.166 [warn] Received create cell with unexpected circ_id 1. Closing.<br></div><div><br></div></div></div><div>To my understanding, the problem here is that the circuit id I have chosen is not valid.</div><div><br></div><div>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".</div><div><br></div><div>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?</div><div>In other words, what is the "signing key" made up of, and how can I get the information that its made of?</div><div><br></div><div>The bottom line is I need to find out what valid circuit ID's I can send to OR's.</div><div><br></div><div>I am having a lot of fun doing this project so far and I hope to hear back from anyone who has an answer :)</div><div><br></div><div>Thanks in advance!</div><div>Eli</div></div></div>