commit 3540da456b70c46d7601101b73c57439c455ff73 Author: Nick Mathewson nickm@torproject.org Date: Tue Sep 19 09:35:22 2017 -0400
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. --- tor-spec.txt | 15 ++++++++------- 1 file 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.