commit 7af62db0b06aac937b8f349bd667ad20a9776f79
Author: Isis Lovecruft <isis(a)torproject.org>
Date: Thu Dec 14 00:51:52 2017 +0000
prop#249: Add link specifiers and a section on new subprotocol numbers.
---
proposals/249-large-create-cells.txt | 63 ++++++++++++++++++++++++++++++++++--
1 file changed, 61 insertions(+), 2 deletions(-)
diff --git a/proposals/249-large-create-cells.txt b/proposals/249-large-create-cells.txt
index cbdc436..072cffa 100644
--- a/proposals/249-large-create-cells.txt
+++ b/proposals/249-large-create-cells.txt
@@ -110,8 +110,12 @@ Status: Open
EXTEND2 {
nspec = 2;
- { node ID for Y, taking 22 bytes. }
- { node address for Y, taking 8 bytes }
+ lstype = [0x01 || 0x02]; (IPv4 or IPv6 node address)
+ lslen = [0x04 || 0x16];
+ lspec = { node address for Y, taking 8 bytes or 16 bytes};
+ lstype = 0x03; (An ed25519 node identity)
+ lslen = 32;
+ lspen = { ed25519 node ID for Y, taking 32 bytes }
htype = {whatever the handshake type is.}
hlen = 2000
hdata = { the first 462 bytes of the handshake }
@@ -157,6 +161,61 @@ Status: Open
Relays MAY send CREATE2V and CREATED2V cells to relays that don't
support them, since unrecognized cell types are ignored.
+6.1. New Subprotocols and Subprotocol Versions
+
+ This proposal introduces, following prop#264, the following new
+ subprotocol numbers and their uses.
+
+6.1.1. Relay Subprotocol
+
+ "Relay 3" -- The OP supports all of "Relay 2", plus support for CREATE2V
+ and CREATED2V cells and their above specification for link-layer
+ authentication specifiers.
+
+6.1.2. Link Subprotocol
+
+ "Link 5": The OP supports all of "Link 1-4", plus support for the new
+ EXTEND2 semantics. Namely, it understands that an EXTEND2 cell whose
+ "hlen" field is greater than 505 will be followed by further "hdata"
+ in fragmented EXTEND2 cells which MUST follow. It also understands
+ that the following combination of EXTEND2 payload specifiers
+ indicates that the cell is a continuation of the earlier payload
+ portions:
+
+ nspec = 0;
+ htype = 0xffff;
+ hlen = 0;
+
+6.1.3. Handshake Subprotocol
+
+ Additionally, we introduce a new subprotocol, "Handshake" and the
+ following number assignments for previously occuring instances:
+
+ "Handshake 1" -- The OP supports the TAP handshake.
+
+ "Handshake 2" -- The OP supports the ntor handshake.
+
+ We also reserve the following assignments for future use:
+
+ "Handshake 3" -- The OP supports the "hybrid+null" ntor-like handshake
+ from prop#269.
+
+ "Handshake 4" -- The OP supports a(n as yet unspecified) post-quantum
+ secure hybrid handshake, that is, the "hybrid+null" handshake from
+ "Handshake 3", except with "null" part replaced with another (as yet
+ unspecified) protocol to be composed with the ntor-like ECDH-based
+ handshake.
+
+ Further handshakes MUST be specified with "Handshake" subprotocol
+ numbers, and MUST NOT be specified with "Relay" subprotocol numbers. The
+ "Relay" subprotocol SHALL be used in the future to denote changes to
+ handshake protocol handling of CREATE* and EXTEND* cells, i.e. CREATE,
+ CREATED, CREATE_FAST, CREATED_FAST, CREATE2, CREATED2, CREATE2V,
+ CREATED2V, EXTEND, EXTENDED, EXTEND2, and EXTENDED2.
+
+ Thus, "Handshake 1" is taken to be synonymous with "Relay 1", and
+ likewise "Handshake 2" is with "Relay 2".
+
7. Resource management issues
This feature requires relays and clients to buffer EXTEND2 cell