Declare a LINKAUTH subprotocol version for #15055 (ed link handshake)

Closes ticket 20552.
This commit is contained in:
Nick Mathewson 2016-11-03 10:01:40 -04:00
parent 1eef543f9d
commit b7a1e793e6
4 changed files with 11 additions and 1 deletions

4
changes/feature20552 Normal file
View File

@ -0,0 +1,4 @@
o Minor features (ed25519 link handshake):
- Advertise support for the ed25519 link handshake using the
subprotocol-versions mechanism, so that clients can tell which
relays can identity themselves by Ed25519 ID.

View File

@ -2247,6 +2247,10 @@ typedef struct routerstatus_t {
* accept EXTEND2 cells */ * accept EXTEND2 cells */
unsigned int supports_extend2_cells:1; unsigned int supports_extend2_cells:1;
/** True iff this router has a protocol list that allows it to negotiate
* ed25519 identity keys on a link handshake. */
unsigned int supports_ed25519_link_handshake:1;
unsigned int has_bandwidth:1; /**< The vote/consensus had bw info */ unsigned int has_bandwidth:1; /**< The vote/consensus had bw info */
unsigned int has_exitsummary:1; /**< The vote/consensus had exit summaries */ unsigned int has_exitsummary:1; /**< The vote/consensus had exit summaries */
unsigned int bw_is_unmeasured:1; /**< This is a consensus entry, with unsigned int bw_is_unmeasured:1; /**< This is a consensus entry, with

View File

@ -292,7 +292,7 @@ protover_get_supported_protocols(void)
"HSIntro=3 " "HSIntro=3 "
"HSRend=1-2 " "HSRend=1-2 "
"Link=1-4 " "Link=1-4 "
"LinkAuth=1 " "LinkAuth=1,3 "
"Microdesc=1-2 " "Microdesc=1-2 "
"Relay=1-2"; "Relay=1-2";
} }

View File

@ -2962,6 +2962,8 @@ routerstatus_parse_entry_from_string(memarea_t *area,
rs->protocols_known = 1; rs->protocols_known = 1;
rs->supports_extend2_cells = rs->supports_extend2_cells =
protocol_list_supports_protocol(tok->args[0], PRT_RELAY, 2); protocol_list_supports_protocol(tok->args[0], PRT_RELAY, 2);
rs->supports_ed25519_link_handshake =
protocol_list_supports_protocol(tok->args[0], PRT_LINKAUTH, 3);
} }
if ((tok = find_opt_by_keyword(tokens, K_V))) { if ((tok = find_opt_by_keyword(tokens, K_V))) {
tor_assert(tok->n_args == 1); tor_assert(tok->n_args == 1);