aboutsummaryrefslogtreecommitdiff
path: root/tor-spec.txt
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-02-13 09:03:58 -0500
committerNick Mathewson <nickm@torproject.org>2018-02-13 09:05:25 -0500
commitef91cd6a595128847c991eb875d105b850d60fcf (patch)
tree1d1bc59cb44462e815238c71bab5504a1760aca2 /tor-spec.txt
parent2223efd9e717f30b9a04079e8a5f9af88bbd6d19 (diff)
downloadtorspec-ef91cd6a595128847c991eb875d105b850d60fcf.tar.gz
torspec-ef91cd6a595128847c991eb875d105b850d60fcf.zip
Small tweaks to clarify recognized even more
Diffstat (limited to 'tor-spec.txt')
-rw-r--r--tor-spec.txt32
1 files changed, 16 insertions, 16 deletions
diff --git a/tor-spec.txt b/tor-spec.txt
index 7aba3da..13691b7 100644
--- a/tor-spec.txt
+++ b/tor-spec.txt
@@ -1443,22 +1443,22 @@ see tor-design.pdf.
other nodes in the circuit back to the originator. Commands marked
as either can be sent either by the originator or other nodes.
- The 'recognized' field is used for a simple indication for if the
- cell still encrypted or not. When sending cells the unencrypted
- 'recognized' MUST be set to zero. When receiving and decrypting
- cells the 'recognized' MAY be zero if we're the endpoint the cell
- is destined for (there's a 1/2^32 chance of encrypted bytes
- coincidently being zero), and non-zero otherwise.
-
- When 'recognized' in an unencrypted relay payload is zero the
- 'digest' field is computed as the first four bytes of the running
- digest of all the bytes that have been destined for this hop of
- the circuit or originated from this hop of the circuit, seeded from
- Df or Db respectively (obtained in section 5.2 above), and including
- this RELAY cell's entire payload (taken with the digest field set to
- zero).
-
- When the 'recognized' field of a RELAY cell is zero, and the digest
+ The 'recognized' field is used for a simple indication for if the cell
+ still encrypted or not. When sending cells, the unencrypted 'recognized'
+ MUST be set to zero.
+
+ When receiving and decrypting cells the 'recognized' will always be
+ zero if we're the endpoint that the cell is destined for. For cells
+ that we should relay, the 'recognized' field will usually be nonzero,
+ but will accidentally be zero with P=2^-32.
+
+ When handling a relay cell, if the 'recognized' in field in a
+ decrypted relay payload is zero, the 'digest' field is computed as
+ the first four bytes of the running digest of all the bytes that have
+ been destined for this hop of the circuit or originated from this hop
+ of the circuit, seeded from Df or Db respectively (obtained in
+ section 5.2 above), and including this RELAY cell's entire payload
+ (taken with the digest field set to zero). If the digest
is correct, the cell is considered "recognized" for the purposes of
decryption (see section 5.5 above).