diff --git a/doc/spec/tor-spec.txt b/doc/spec/tor-spec.txt index 49745ff5b9..7023e3c446 100644 --- a/doc/spec/tor-spec.txt +++ b/doc/spec/tor-spec.txt @@ -293,11 +293,14 @@ see tor-design.pdf. The CircID for a CREATE cell is an arbitrarily chosen 2-byte integer, selected by the node (OP or OR) that sends the CREATE cell. To prevent - CircID collisions, when one OR sends a CREATE cell to another OR, it chooses + 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: if the sending OR has a lower key, it chooses a CircID with + identity keys: 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. + (An OP with no public key MAY choose any CircID it wishes, since an OP + never needs to process a CREATE cell.) + Public keys are compared numerically by modulus. As usual with DH, x and y MUST be generated randomly.