Hi Karsten & Damian,
Extending stem to implement #2768 seems a good option to start with; I looked at the Java code and felt doing it in stem should not be complicated. However, I need some suggestions for the choice of Python cryptography API, since I haven't used any before. A simple Google search says PyCrypto. I believe you have an answer, Damian.
Cheers, Beck
Quoting Karsten Loesing karsten@torproject.org:
[Moving this thread to tor-dev as suggested by Damian in separate mail.]
Hi Damian, hi Beck,
There are quite a few options.
How about extending stem to implement #2768? There's already Java code for verifying server descriptors and consensuses in metrics-tasks.git [0]. On stem's side this requires parsing the crypto parts of server descriptors, consensuses, and certificates. If the network statuses aren't there yet, starting with server descriptors should be fine. And once there's verification code for server descriptors and consensuses, there are more things to verify in Tor's various descriptors.
Another option would be to write the parsing code for extra-info descriptors including all the stats. Once we have consensuses, server descriptors, and extra-info descriptors in stem, we can start writing a Python version of Onionoo [1], the service that provides the data for Atlas [2].
Let me know if you need more options or more input on these.
Thanks, Karsten
[0] https://gitweb.torproject.org/metrics-tasks.git/tree/HEAD:/task-2768