Experimental, non-production relay support for testing
For testing, and for API completeness, it's a good idea for us to start building experimental relay support as part of the %"Arti 2.0.0: No need for a C client" milestone. This doesn't need to be a relay that we could put on the network, but it would be good at least to have support the server-side of the Tor protocols well enough that we could exercise the arti client code in-process.
Rough subtasks:
- Relay side of channel handshake (40h)
- Relay side of circuit handshake (mostly done, 12h)
- Handler-based architecture for handling cells that relays get on circuits and streams (may already be done as part of #352 (closed)) (est 16h)
- ORPort implementation (16h)
- Relay key management (24h)
- Relay descriptor generation (40h)
- Directory cache support (24h)
- Consensus diff generation, cacheing, usage (32h)
- DirPort support (16h)
- Relay side of circuit crypto (mostly done, 4h)
- Relay-cell forwarding on circuits. (40h)
- Exit support (24h)
- Exit policy support (24h)
Edited by Nick Mathewson