aboutsummaryrefslogtreecommitdiff
path: root/tor-spec.txt
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-09-19 09:35:22 -0400
committerNick Mathewson <nickm@torproject.org>2017-09-19 09:35:22 -0400
commit3540da456b70c46d7601101b73c57439c455ff73 (patch)
treed4e6d304d0cc73d95d15de1fbdb6394bcebfde45 /tor-spec.txt
parent609abee7106061d6edd859847eb67f1945f1474b (diff)
downloadtorspec-3540da456b70c46d7601101b73c57439c455ff73.tar.gz
torspec-3540da456b70c46d7601101b73c57439c455ff73.zip
Correct our description of circID MSB logic
In protocol <= 3 we allowed OPs to set the circID msb however they wanted. We don't do that any more in >= 4. Closes ticket 22882.
Diffstat (limited to 'tor-spec.txt')
-rw-r--r--tor-spec.txt15
1 files changed, 8 insertions, 7 deletions
diff --git a/tor-spec.txt b/tor-spec.txt
index f7bd546..4d572ec 100644
--- a/tor-spec.txt
+++ b/tor-spec.txt
@@ -792,18 +792,19 @@ see tor-design.pdf.
To prevent CircID collisions, when one node sends a CREATE cell to
another, it chooses from only one half of the possible values based
- on the ORs' public identity keys. In link protocol version 3 or
- lower, if the sending node has a lower key, it chooses a CircID with
- an MSB of 0; otherwise, it chooses a CircID with an MSB of 1. (Public
- keys are compared numerically by modulus.)
+ on the ORs' public identity keys.
+
+ In link protocol version 3 or lower, if the sending node has a lower
+ key, it chooses a CircID with an MSB of 0; otherwise, it chooses a
+ CircID with an MSB of 1. (Public keys are compared numerically by
+ modulus.) With protocol version 3 or lower, a client with no public key
+ MAY choose any CircID it wishes, since clients never need to process a
+ CREATE cell.
In link protocol version 4 or higher, whichever node initiated the
connection sets its MSB to 1, and whichever node didn't initiate the
connection sets its MSB to 0.
- (An OP with no public key MAY choose any CircID it wishes, since an OP
- never needs to process a CREATE cell.)
-
The CircID value 0 is specifically reserved for cells that do not
belong to any circuit: CircID 0 must not be used for circuits. No
other CircID value, including 0x8000 or 0x80000000, is reserved.