mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-25 23:21:38 +01:00
nodelist: Add functions to check for HS v3 support
This introduces node_supports_v3_hsdir() and node_supports_ed25519_hs_intro() that checks the routerstatus_t of a node and if not present, checks the routerinfo_t. This is groundwork for proposal 224 service implementation in #20657. Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
parent
f6df433b91
commit
c17a04376d
2 changed files with 44 additions and 0 deletions
|
@ -707,6 +707,48 @@ node_supports_ed25519_link_authentication(const node_t *node)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Return true iff <b>node</b> supports the hidden service directory version
|
||||||
|
* 3 protocol (proposal 224). */
|
||||||
|
int
|
||||||
|
node_supports_v3_hsdir(const node_t *node)
|
||||||
|
{
|
||||||
|
tor_assert(node);
|
||||||
|
|
||||||
|
if (node->rs) {
|
||||||
|
return node->rs->supports_v3_hsdir;
|
||||||
|
}
|
||||||
|
if (node->ri) {
|
||||||
|
if (node->ri->protocol_list == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return protocol_list_supports_protocol(node->ri->protocol_list,
|
||||||
|
PRT_HSDIR, 2);
|
||||||
|
}
|
||||||
|
tor_assert_nonfatal_unreached_once();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return true iff <b>node</b> supports ed25519 authentication as an hidden
|
||||||
|
* service introduction point.*/
|
||||||
|
int
|
||||||
|
node_supports_ed25519_hs_intro(const node_t *node)
|
||||||
|
{
|
||||||
|
tor_assert(node);
|
||||||
|
|
||||||
|
if (node->rs) {
|
||||||
|
return node->rs->supports_ed25519_hs_intro;
|
||||||
|
}
|
||||||
|
if (node->ri) {
|
||||||
|
if (node->ri->protocol_list == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return protocol_list_supports_protocol(node->ri->protocol_list,
|
||||||
|
PRT_HSINTRO, 4);
|
||||||
|
}
|
||||||
|
tor_assert_nonfatal_unreached_once();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** Return the RSA ID key's SHA1 digest for the provided node. */
|
/** Return the RSA ID key's SHA1 digest for the provided node. */
|
||||||
const uint8_t *
|
const uint8_t *
|
||||||
node_get_rsa_id_digest(const node_t *node)
|
node_get_rsa_id_digest(const node_t *node)
|
||||||
|
|
|
@ -58,6 +58,8 @@ const ed25519_public_key_t *node_get_ed25519_id(const node_t *node);
|
||||||
int node_ed25519_id_matches(const node_t *node,
|
int node_ed25519_id_matches(const node_t *node,
|
||||||
const ed25519_public_key_t *id);
|
const ed25519_public_key_t *id);
|
||||||
int node_supports_ed25519_link_authentication(const node_t *node);
|
int node_supports_ed25519_link_authentication(const node_t *node);
|
||||||
|
int node_supports_v3_hsdir(const node_t *node);
|
||||||
|
int node_supports_ed25519_hs_intro(const node_t *node);
|
||||||
const uint8_t *node_get_rsa_id_digest(const node_t *node);
|
const uint8_t *node_get_rsa_id_digest(const node_t *node);
|
||||||
|
|
||||||
int node_has_ipv6_addr(const node_t *node);
|
int node_has_ipv6_addr(const node_t *node);
|
||||||
|
|
Loading…
Add table
Reference in a new issue