Browse Source

Rename all RELAY_* cell types to RELAY_COMMAND_*.

Karsten Loesing 15 years ago
parent
commit
f6e0dc2a6e
1 changed files with 54 additions and 46 deletions
  1. 54 46
      doc/spec/rend-spec.txt

+ 54 - 46
doc/spec/rend-spec.txt

@@ -104,14 +104,14 @@
 0.3. Constants and new cell types
 0.3. Constants and new cell types
 
 
   Relay cell types
   Relay cell types
-      32 -- RELAY_ESTABLISH_INTRO
-      33 -- RELAY_ESTABLISH_RENDEZVOUS
-      34 -- RELAY_INTRODUCE1
-      35 -- RELAY_INTRODUCE2
-      36 -- RELAY_RENDEZVOUS1
-      37 -- RELAY_RENDEZVOUS2
-      38 -- RELAY_INTRO_ESTABLISHED
-      39 -- RELAY_RENDEZVOUS_ESTABLISHED
+      32 -- RELAY_COMMAND_ESTABLISH_INTRO
+      33 -- RELAY_COMMAND_ESTABLISH_RENDEZVOUS
+      34 -- RELAY_COMMAND_INTRODUCE1
+      35 -- RELAY_COMMAND_INTRODUCE2
+      36 -- RELAY_COMMAND_RENDEZVOUS1
+      37 -- RELAY_COMMAND_RENDEZVOUS2
+      38 -- RELAY_COMMAND_INTRO_ESTABLISHED
+      39 -- RELAY_COMMAND_RENDEZVOUS_ESTABLISHED
       40 -- RELAY_COMMAND_INTRODUCE_ACK
       40 -- RELAY_COMMAND_INTRODUCE_ACK
 
 
 0.4. Version overview
 0.4. Version overview
@@ -406,7 +406,7 @@
    The OP establishes a new introduction circuit to each introduction
    The OP establishes a new introduction circuit to each introduction
    point.  These circuits MUST NOT be used for anything but hidden service
    point.  These circuits MUST NOT be used for anything but hidden service
    introduction.  To establish the introduction, Bob sends a
    introduction.  To establish the introduction, Bob sends a
-   RELAY_ESTABLISH_INTRO cell, containing:
+   RELAY_COMMAND_ESTABLISH_INTRO cell, containing:
 
 
         KL   Key length                             [2 octets]
         KL   Key length                             [2 octets]
         PK   Introduction public key                [KL octets]
         PK   Introduction public key                [KL octets]
@@ -429,15 +429,19 @@
    check fails, the OP discards the cell; otherwise, it associates the
    check fails, the OP discards the cell; otherwise, it associates the
    circuit with Bob's public key, and dissociates any other circuits
    circuit with Bob's public key, and dissociates any other circuits
    currently associated with PK.  On success, the OR sends Bob a
    currently associated with PK.  On success, the OR sends Bob a
-   RELAY_INTRO_ESTABLISHED cell with an empty payload.
-
-   Bob's OP does not include its own public key in the RELAY_ESTABLISH_INTRO
-   cell, but the public key of a freshly generated introduction key pair.
-   The OP also includes these fresh public keys in the v2 hidden service
-   descriptor together with the other introduction point information. The
-   reason is that the introduction point does not need to and therefore
-   should not know for which hidden service it works, so as to prevent it
-   from tracking the hidden service's activity.
+   RELAY_COMMAND_INTRO_ESTABLISHED cell with an empty payload.
+
+   Bob's OP uses either Bob's public key or a freshly generated, single-use
+   service key in the RELAY_COMMAND_ESTABLISH_INTRO cell, depending on the
+   configured hidden service descriptor version.  The public key is used for
+   v0 descriptors, the service key for v2 descriptors.  In the latter case, the
+   service keys of all introduction points are included in the v2 hidden
+   service descriptor together with the other introduction point information.
+   The reason is that the introduction point does not need to and therefore
+   should not know for which hidden service it works, so as to prevent it from
+   tracking the hidden service's activity.  If the hidden service is configured
+   to publish both v0 and v2 descriptors, two separate sets of introduction
+   points are established.
 
 
 1.4. Bob's OP advertises his service descriptor(s).
 1.4. Bob's OP advertises his service descriptor(s).
 
 
@@ -551,7 +555,7 @@
    and Alice's OP does not have an established circuit to that service,
    and Alice's OP does not have an established circuit to that service,
    the OP builds a rendezvous circuit.  It does this by establishing
    the OP builds a rendezvous circuit.  It does this by establishing
    a circuit to a randomly chosen OR, and sending a
    a circuit to a randomly chosen OR, and sending a
-   RELAY_ESTABLISH_RENDEZVOUS cell to that OR.  The body of that cell
+   RELAY_COMMAND_ESTABLISH_RENDEZVOUS cell to that OR.  The body of that cell
    contains:
    contains:
 
 
         RC   Rendezvous cookie    [20 octets]
         RC   Rendezvous cookie    [20 octets]
@@ -561,9 +565,9 @@
    The rendezvous cookie is an arbitrary 20-byte value, chosen randomly by
    The rendezvous cookie is an arbitrary 20-byte value, chosen randomly by
    Alice's OP.
    Alice's OP.
 
 
-   Upon receiving a RELAY_ESTABLISH_RENDEZVOUS cell, the OR associates the
-   RC with the circuit that sent it.  It replies to Alice with an empty
-   RELAY_RENDEZVOUS_ESTABLISHED cell to indicate success.
+   Upon receiving a RELAY_COMMAND_ESTABLISH_RENDEZVOUS cell, the OR associates
+   the RC with the circuit that sent it.  It replies to Alice with an empty
+   RELAY_COMMAND_RENDEZVOUS_ESTABLISHED cell to indicate success.
 
 
    Alice's OP MUST NOT use the circuit which sent the cell for any purpose
    Alice's OP MUST NOT use the circuit which sent the cell for any purpose
    other than rendezvous with the given location-hidden service.
    other than rendezvous with the given location-hidden service.
@@ -571,7 +575,7 @@
 1.8. Introduction: from Alice's OP to Introduction Point
 1.8. Introduction: from Alice's OP to Introduction Point
 
 
    Alice builds a separate circuit to one of Bob's chosen introduction
    Alice builds a separate circuit to one of Bob's chosen introduction
-   points, and sends it a RELAY_INTRODUCE1 cell containing:
+   points, and sends it a RELAY_COMMAND_INTRODUCE1 cell containing:
 
 
        Cleartext
        Cleartext
           PK_ID  Identifier for Bob's PK      [20 octets]
           PK_ID  Identifier for Bob's PK      [20 octets]
@@ -601,7 +605,7 @@
 
 
    The hybrid encryption to Bob's PK works just like the hybrid
    The hybrid encryption to Bob's PK works just like the hybrid
    encryption in CREATE cells (see tor-spec). Thus the payload of the
    encryption in CREATE cells (see tor-spec). Thus the payload of the
-   version 0 RELAY_INTRODUCE1 cell on the wire will contain
+   version 0 RELAY_COMMAND_INTRODUCE1 cell on the wire will contain
    20+42+16+20+20+128=246 bytes, and the version 1 and version 2
    20+42+16+20+20+128=246 bytes, and the version 1 and version 2
    introduction formats have other sizes.
    introduction formats have other sizes.
 
 
@@ -612,7 +616,7 @@
 
 
    If Alice has downloaded a v2 descriptor, she uses the contained public
    If Alice has downloaded a v2 descriptor, she uses the contained public
    key ("service-key") instead of Bob's public key to create the
    key ("service-key") instead of Bob's public key to create the
-   RELAY_INTRODUCE1 cell as described above.
+   RELAY_COMMAND_INTRODUCE1 cell as described above.
 
 
 1.8.1. Other introduction formats we don't use.
 1.8.1. Other introduction formats we don't use.
 
 
@@ -637,24 +641,27 @@
 
 
    If the Introduction Point recognizes PK_ID as a public key which has
    If the Introduction Point recognizes PK_ID as a public key which has
    established a circuit for introductions as in 1.3 above, it sends the body
    established a circuit for introductions as in 1.3 above, it sends the body
-   of the cell in a new RELAY_INTRODUCE2 cell down the corresponding circuit.
-   (If the PK_ID is unrecognized, the RELAY_INTRODUCE1 cell is discarded.)
-
-   After sending the RELAY_INTRODUCE2 cell, the OR replies to Alice with an
-   empty RELAY_COMMAND_INTRODUCE_ACK cell.  If no RELAY_INTRODUCE2 cell can
-   be sent, the OR replies to Alice with a non-empty cell to indicate an
-   error.  (The semantics of the cell body may be determined later; the
-   current implementation sends a single '1' byte on failure.)
-
-   When Bob's OP receives the RELAY_INTRODUCE2 cell, it decrypts it with
-   the private key for the corresponding hidden service, and extracts the
+   of the cell in a new RELAY_COMMAND_INTRODUCE2 cell down the corresponding
+   circuit. (If the PK_ID is unrecognized, the RELAY_COMMAND_INTRODUCE1 cell is
+   discarded.)
+
+   After sending the RELAY_COMMAND_INTRODUCE2 cell, the OR replies to Alice
+   with an empty RELAY_COMMAND_INTRODUCE_ACK cell.  If no
+   RELAY_COMMAND_INTRODUCE2 cell can be sent, the OR replies to Alice with a
+   non-empty cell to indicate an error.  (The semantics of the cell body may be
+   determined later; the current implementation sends a single '1' byte on
+   failure.)
+
+   When Bob's OP receives the RELAY_COMMAND_INTRODUCE2 cell, it decrypts it
+   with the private key for the corresponding hidden service, and extracts the
    rendezvous point's nickname, the rendezvous cookie, and the value of g^x
    rendezvous point's nickname, the rendezvous cookie, and the value of g^x
    chosen by Alice.
    chosen by Alice.
 
 
 1.10. Rendezvous
 1.10. Rendezvous
 
 
    Bob's OP builds a new Tor circuit ending at Alice's chosen rendezvous
    Bob's OP builds a new Tor circuit ending at Alice's chosen rendezvous
-   point, and sends a RELAY_RENDEZVOUS1 cell along this circuit, containing:
+   point, and sends a RELAY_COMMAND_RENDEZVOUS1 cell along this circuit,
+   containing:
        RC       Rendezvous cookie  [20 octets]
        RC       Rendezvous cookie  [20 octets]
        g^y      Diffie-Hellman     [128 octets]
        g^y      Diffie-Hellman     [128 octets]
        KH       Handshake digest   [20 octets]
        KH       Handshake digest   [20 octets]
@@ -662,7 +669,7 @@
    (Bob's OP MUST NOT use this circuit for any other purpose.)
    (Bob's OP MUST NOT use this circuit for any other purpose.)
 
 
    If the RP recognizes RC, it relays the rest of the cell down the
    If the RP recognizes RC, it relays the rest of the cell down the
-   corresponding circuit in a RELAY_RENDEZVOUS2 cell, containing:
+   corresponding circuit in a RELAY_COMMAND_RENDEZVOUS2 cell, containing:
 
 
        g^y      Diffie-Hellman     [128 octets]
        g^y      Diffie-Hellman     [128 octets]
        KH       Handshake digest   [20 octets]
        KH       Handshake digest   [20 octets]
@@ -670,10 +677,10 @@
    (If the RP does not recognize the RC, it discards the cell and
    (If the RP does not recognize the RC, it discards the cell and
    tears down the circuit.)
    tears down the circuit.)
 
 
-   When Alice's OP receives a RELAY_RENDEZVOUS2 cell on a circuit which
-   has sent a RELAY_ESTABLISH_RENDEZVOUS cell but which has not yet received
-   a reply, it uses g^y and H(g^xy) to complete the handshake as in the Tor
-   circuit extend process: they establish a 60-octet string as
+   When Alice's OP receives a RELAY_COMMAND_RENDEZVOUS2 cell on a circuit which
+   has sent a RELAY_COMMAND_ESTABLISH_RENDEZVOUS cell but which has not yet
+   received a reply, it uses g^y and H(g^xy) to complete the handshake as in
+   the Tor circuit extend process: they establish a 60-octet string as
        K = SHA1(g^xy | [00]) | SHA1(g^xy | [01]) | SHA1(g^xy | [02])
        K = SHA1(g^xy | [00]) | SHA1(g^xy | [01]) | SHA1(g^xy | [02])
    and generate
    and generate
        KH = K[0..15]
        KH = K[0..15]
@@ -692,7 +699,7 @@
 1.11. Creating streams
 1.11. Creating streams
 
 
    To open TCP connections to Bob's location-hidden service, Alice's OP sends
    To open TCP connections to Bob's location-hidden service, Alice's OP sends
-   a RELAY_BEGIN cell along the established circuit, using the special
+   a RELAY_COMMAND_BEGIN cell along the established circuit, using the special
    address "", and a chosen port.  Bob's OP chooses a destination IP and
    address "", and a chosen port.  Bob's OP chooses a destination IP and
    port, based on the configuration of the service connected to the circuit,
    port, based on the configuration of the service connected to the circuit,
    and opens a TCP stream.  From then on, Bob's OP treats the stream as an
    and opens a TCP stream.  From then on, Bob's OP treats the stream as an
@@ -700,9 +707,10 @@
    [ Except he doesn't include addr in the connected cell or the end
    [ Except he doesn't include addr in the connected cell or the end
      cell. -RD]
      cell. -RD]
 
 
-   Alice MAY send multiple RELAY_BEGIN cells along the circuit, to open
-   multiple streams to Bob.  Alice SHOULD NOT send RELAY_BEGIN cells for any
-   other address along her circuit to Bob; if she does, Bob MUST reject them.
+   Alice MAY send multiple RELAY_COMMAND_BEGIN cells along the circuit, to open
+   multiple streams to Bob.  Alice SHOULD NOT send RELAY_COMMAND_BEGIN cells
+   for any other address along her circuit to Bob; if she does, Bob MUST reject
+   them.
 
 
 2. Authentication and authorization.
 2. Authentication and authorization.