V3 onion services: client-and-service side implementation
This is the ticket for tracking our progress implementing the client side of V3 onion service support in arti. We will need at least the following:
- Descriptor Encoding
-
Encoding/Decoding (est 24h) #683 (closed) -
Cryptography and Validation (est 24h) #684 (closed), #685 (closed)
- Directory Support
-
Descriptor outer layer decoding (1) (est 8h) -
Ring implementation (time period, SRV) (est 16h) #686 (closed), #687 (closed) -
Storage/Caching (est 16h) #689 (closed)
- Circuits #688 (closed), #691 (closed)
-
Introduction (ESTABLISH_INTRO, INTRO_ESTABLISHED and INTRODUCE) (est 8h) -
Rendezvous (ESTABLISH_RENDEZVOUS, RENDEZVOUS, RENDEZVOUS_ESTABLISHED) (est 8h) -
HSDir (upload and fetch) (est 12h)
- Client #690 (closed), #692 (closed), #693 (closed), #694 (closed)
-
Introduction (INTRODUCE, INTRODUCE_ACK) (est 20h) -
Rendezvous circuit crypto (ntor handshake) (est 30h) -
Descriptor fetch/cache (est 30h) #689 (closed) -
HSDir cache (est 30h) -
Intro point state cache (est 24h) #695 (closed) -
Client authorization (est 36h) #696 (closed) -
Rate limiting -
Introduction attempts per intro point
-
- Service #698 (closed)
-
Ephemeral ( ADD/DEL_ONION
) #700 (closed) -
Cryptography (key blinding and derivation) (est 8h more; mostly done) -
Configuration (est 24h) #699 (closed) -
Building descriptor (with client auth) (est 36h) -
Events logic (est 30h) #697 (closed) -
Establishing intro points -
Expiring/Rotating intro points -
Descriptor rotation
-
-
Responding to an INTRODUCTION (establish rendezvous) (est 16h) #697 (closed) -
Rate limiting -
Introduction circuit retries (in C: get_max_intro_circ_per_period()
) #723 (closed)
-