Commit f2c68bcf authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Make preliminary list of tasks for rendezvous service


svn:r1368
parent cc844eee
Loading
Loading
Loading
Loading
+42 −6
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ Short-term:
        - Add '[...truncated]' or similar to truncated log entries (like the directory
          in connection_dir_process_inbuf()).
        . Make logs handle it better when writing to them fails.
        - leave server descriptor out of directory if it's too old
        o leave server descriptor out of directory if it's too old
        o Rename ACI to circID
        o integrate rep_ok functions, see what breaks
        - update tor faq
@@ -88,6 +88,47 @@ Short-term:
        o Audit users of connnection_remove and connection_free outside of
          main.c; many should use mark_for_close instead.

Rendezvous service:
        o Design and specify protocol
        - Possible preliminary refactoring:
            - Should we break circuits up into "circuit-with-cpath" and
              "circuit-without-cpath"?
            - We need a way to tag circuits as special-purpose circuits for:
                - Connecting from Bob's OP to the introduction point
                - Sending introduction requests from the IPoint to Bob
                - Connecting from Alice to the rendezvous point for Bob
                - Connecting from Bob to the rendezvous point for Alice
                - Waiting at a rendezvous point to be joined
                - Joined to another circuit at the rendezvous point.
              (We should also enumerate all the states that these operations
              can be in.)
        - Code to configure hidden services
        - Service descriptors
            - OPs need to maintain identity keys for hidden services [NM]
            - Code to generate and parse service descriptors [NM]
        - Advertisement
            - Generate y.onion hostnames [NM]
            - Code to do an HTTP connection over Tor from within Tor.
            - Publish service descriptors to directory
            - Directory accepts and remembers service descriptors, and
              delivers them as requested
            - Code for OPs to retrieve (and cache?) service descriptors
        - Rendezvous
            - Code as needed to generate and parse all rendezvous-related
              cell types, and do all handshaking.
            - ORs implement introduction points
            - OPs with hidden services establish introduction points
            - ORs implement rendezvous points
            - OPs notice y.onion URLs, and:
                - Retrieve service descriptors
                - Establish rendezvous points
                - Send introduction requests to introduction points
        - Communication
            - OPs remember which circuits are used for which rendezvous
              points, and can look up circuits by location-hidden service
            - OPs send/handle BEGIN cells for location-hidden services
            - End-to-end communication for location-hidden services

On-going
        . Better comments for functions!
        . Go through log messages, reduce confusing error messages.
@@ -127,11 +168,6 @@ NICK . Handle half-open connections
                o Find an ftp proxy? wget --passive
                D Wait until there are packet redirectors for Linux
                . Get socks4a support into Mozilla
        . Develop rendezvous points
                X Handle socks commands other than connect, eg, bind?
                o Design
                - Spec
                - Implement
        . Tests
                o Testing harness/infrastructure
                D System tests (how?)