Add new `knock' protocol.
* Add a new option to the `ADD' command giving the knock string to
send.
* Add new protocol messages `token-rq', `token', and `knock', which
together allow a possibly unknown peer to collect a single-use
token (`token-rq' and `token') which it can use to identify itself,
and use this to introduce itself to its (presumably) static
peer (`knock'). This last message can either provoke a `KNOCK'
notification to a service, or initiate key-exchange using a
piggybacked `pre-challenge', possibly after having updated the
peer's address.
* Update the `connect' service to collect the necessary knock strings
from the peer database, and to respond to `KNOCK' notifications.
* Update the Wireshark dissector to recognize and dissect the new
messages. (The `cap.knock' file sneakily includes a message from
the future, to be dissected in a later modification.)
17 files changed: