Implement all cell types for onion services

The cells needed for onion services are:

  • ESTABLISH_INTRO
  • INTRODUCE_ACK
  • INTRODUCE1
  • INTRODUCE2
  • ESTABLISH_RENDEZVOUS
  • RENDEZVOUS_ESTABLISHED
  • RENDEZVOUS1
  • RENDEZVOUS2

Encoding and decoding for these messages should all be implemented in tor-cell, as should encoding and decoding for any of their inner encrypted parts. But tor-cell should not actually handle the cryptography for these cells; our regular architecture would say that happened at a different level.

To get examples of these cells for testing, run a chutney network with Tor instrumented to dump all of its cells.

We should have a good answer here about #525 (closed) before we get too deeply involved.

Edited by Nick Mathewson