These names are slightly shorter and a bit more descriptive IMO, and
now (when they are still fresh) is the best time to rename these
keys.
`hs_intro_tid` becomes `hs_ipt_sid`: It is a _session identifier_
key used with an _introduction point_. Using `ipt` here emphasizes
that it is not part of the introduction _handshake_.
`hs_intro_ntor` becomes `hss_ntor`. The extra "s" means it is owned
by the service. Renaming "intro" here removes the implication that
it is held by or used by the introduction point.
`onion_ntor` becomes `ntor`: There is no such thing as an ntor key
that is not an onion key.
It looks like C tor doesn't include a final newline in the middle
layer of its onion service descriptors. That made arti reject them
the first time I tried to parse one! Here I document this behavior,
and tell other implementations what to do.
* The syntax `IN [a,b]` means that a and b are the only valid options,
which isn't what we want to say here.
* I'm changing the hostname tag to 0, which is the same as we have for
RESOLVED cells.
* Introduce the notion of Argument, which is relied on in the
rest of the document, but not defined here formally.
Spec changes implied by this diff:
* Forbid the arguments from containing form feeds, carriage returns,
and vertical tabs.
* Forbid trailing whitespace after the last argument. I'm not sure
whether this is correct, but it seems anomalous to permit it for
only for keyword lines with arguments, and not anywhere else.
In particular, give these formal names which contain "hs" (since they
are part of the hidden service protocol, and not any other kind of
authentication or authorisation scheme), and "N" to indicate that they
are hash-generated nonces, not passwords.
Change the references in the formulae, which it really seems to me
ought to refer to the formal names.
We have never actually generated an Item with multiple Objects.
What's more, neither the C tor implementation nor Arti actually
supports parsing such and item.
In param-spec, not all of the parameters for onion services had
their ranges and defaults listed; I've added those from the code.
Also I clarified the units for hsdir_interval, which were not
intuitively obvious.
This commit fixes an ambitious formulation within the definition of the
VERSIONS cells. It says, that a VERSIONS cell with an odd number of
bytes is invalid. This statement is not true, because the CircID (2
bytes for VERSIONS cells), Command (1 byte) and Length (2 byte) make up
5 bytes, which is an odd number. Adding an odd number to an even number
of bytes (the payload in this case) always results in an odd number.
- Allow a gap between inflight and cwnd before declaring the cwnd not full.
- Parameterize how often a cwnd must be full
- Clean up vegas algorithm for variable scoping and clarity
All supported versions for relays on the Tor network support v3
onion services. As such, we can mark the sections about "how do I
use an 0.2.9.x relay as my intro/rend point?" as obsolete.