mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
prop224: Improve comments and tests for ed25519 keys in IPs/RPs.
Also make sure we are not gonna advertise the ed25519 key of an intro point that doesn't support it.
This commit is contained in:
parent
273638288d
commit
8bac50d755
@ -405,7 +405,8 @@ get_rp_extend_info(const smartlist_t *link_specifiers,
|
||||
}
|
||||
} SMARTLIST_FOREACH_END(ls);
|
||||
|
||||
/* IPv4, legacy ID and ed25519 are mandatory. */
|
||||
/* IPv4, legacy ID are mandatory for rend points.
|
||||
* ed25519 keys and ipv6 are optional for rend points */
|
||||
if (!have_v4 || !have_legacy_id) {
|
||||
goto done;
|
||||
}
|
||||
|
@ -2510,6 +2510,7 @@ hs_desc_link_specifier_new(const extend_info_t *info, uint8_t type)
|
||||
memcpy(ls->u.legacy_id, info->identity_digest, sizeof(ls->u.legacy_id));
|
||||
break;
|
||||
case LS_ED25519_ID:
|
||||
/* ed25519 keys are optional for intro points */
|
||||
if (ed25519_public_key_is_zero(&info->ed_identity)) {
|
||||
goto err;
|
||||
}
|
||||
|
@ -405,7 +405,7 @@ service_intro_point_new(const extend_info_t *ei, unsigned int is_legacy)
|
||||
}
|
||||
smartlist_add(ip->base.link_specifiers, ls);
|
||||
|
||||
/* ed25519 identity key is optional */
|
||||
/* ed25519 identity key is optional for intro points */
|
||||
ls = hs_desc_link_specifier_new(ei, LS_ED25519_ID);
|
||||
if (ls) {
|
||||
smartlist_add(ip->base.link_specifiers, ls);
|
||||
@ -1411,6 +1411,14 @@ pick_intro_point(unsigned int direct_conn, smartlist_t *exclude_nodes)
|
||||
if (BUG(info == NULL)) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Let's do a basic sanity check here so that we don't end up advertising the
|
||||
* ed25519 identity key of relays that don't actually support the link
|
||||
* protocol */
|
||||
if (!node_supports_ed25519_link_authentication(node)) {
|
||||
tor_assert_nonfatal(ed25519_public_key_is_zero(&info->ed_identity));
|
||||
}
|
||||
|
||||
/* Create our objects and populate them with the node information. */
|
||||
ip = service_intro_point_new(info, !node_supports_ed25519_hs_intro(node));
|
||||
if (ip == NULL) {
|
||||
|
Loading…
Reference in New Issue
Block a user