[torspec/master] Tweak the create2/extend2 proposal.

commit 6755dce7bb84780e4cf5e87b0a17a0471710a2fe Author: Nick Mathewson <nickm@torproject.org> Date: Thu Mar 22 11:07:55 2012 -0400 Tweak the create2/extend2 proposal. The main changes are: - To change the identifier format from ascii names to enumerated values, as with the rest of Tor. - To split up link specifiers so they can work better with IPv6 and proposal 186. --- proposals/xxx-new-create-and-extend-cells.txt | 49 ++++++++++++++++--------- 1 files changed, 31 insertions(+), 18 deletions(-) diff --git a/proposals/xxx-new-create-and-extend-cells.txt b/proposals/xxx-new-create-and-extend-cells.txt index 512eb45..01748e3 100644 --- a/proposals/xxx-new-create-and-extend-cells.txt +++ b/proposals/xxx-new-create-and-extend-cells.txt @@ -18,28 +18,28 @@ Overview and Motivation: Design: - FIXME - allocate command ID numbers (non-RELAY commands for CREATE2 and CREATED2; RELAY commands for EXTEND2 and EXTENDED2) + FIXME - allocate command ID numbers (non-RELAY commands for CREATE2 and + CREATED2; RELAY commands for EXTEND2 and EXTENDED2) The CREATE2 cell contains the following payload: - Handshake type length [1 byte] - Handshake type [variable] + Handshake type [2 bytes] Handshake data length [2 bytes] Handshake data [variable] The relay payload for an EXTEND2 relay cell contains the following payload: - Link target specifier type length [1 byte] - Link target specifier type [variable] - Link target specifier length [2 bytes] - Link target specifier [variable] - Handshake type length [1 byte] - Handshake type [variable] + Number of link specifiers [1 byte] + N times: + Link specifier type [1 byte] + Link specifier length [1 byte] + Link specifier [variable] + Handshake type [2 bytes] Handshake data length [2 bytes] Handshake data [variable] - The CREATED2 cell and EXTENDED2 relay cell contain the following + The CREATED2 cell and EXTENDED2 relay cell both contain the following payload: Handshake data length [2 bytes] @@ -50,7 +50,7 @@ Design: When a relay X receives an EXTEND2 relay cell: * X finds or opens a link to the relay Y using the link target - specifier in the EXTEND2 relay cell; if X fails to open a link, it + specifiers in the EXTEND2 relay cell; if X fails to open a link, it replies with a TRUNCATED relay cell. (FIXME: what do we do now?) * X copies the handshake type and data into a CREATE2 cell and sends @@ -64,16 +64,29 @@ Design: cell and sends it along the circuit to the OP. - A link target specifier of type “legacy” contains the following - data: +Link target specifiers: - Relay IP address (FIXME: byte order?) [4 bytes] - Relay OR port (FIXME: byte order?) [2 bytes] - Relay identity key SHA-1 digest [20 bytes] + The list of link target specifiers must include at least one address and + at least one identity fingerprint, in a format that the extending node is + known to recognize. - These values are processed as section 5.1 of tor-spec.txt specifies - for the current EXTEND relay cell. + The extending node MUST NOT accept the connection unless at least one + identity matches, and should follow the current rules for making sure that + addresses match. + [00] IPv4 address + A four-byte IPv4 address plus two-byte ORPort + [01] IPv6 address + A sixteen-byte IPv6 address plus two-byte ORPort + [02] Legacy identity + A 20-byte SHA1 identity fingerprint. At most one may be listed. + + As always, values are sent in network (big-endian) order. + +Legacy handshake type: + + The current "onionskin" handshake type is defined to be handshake type + [00 00], or "legacy". The first (client->relay) message in a handshake of type “legacy” contains the following data:
participants (1)
-
nickm@torproject.org