mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-25 15:10:48 +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 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. */
|
||||
const uint8_t *
|
||||
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,
|
||||
const ed25519_public_key_t *id);
|
||||
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);
|
||||
|
||||
int node_has_ipv6_addr(const node_t *node);
|
||||
|
|
Loading…
Add table
Reference in a new issue