Add a function to get an ed25519 ID from a routerinfo.

This commit is contained in:
Nick Mathewson 2020-10-15 10:20:42 -04:00
parent bb249a221f
commit 93e7661fef
2 changed files with 20 additions and 0 deletions

View File

@ -13,6 +13,7 @@
#include "feature/nodelist/nodelist.h" #include "feature/nodelist/nodelist.h"
#include "feature/nodelist/routerinfo.h" #include "feature/nodelist/routerinfo.h"
#include "feature/nodelist/torcert.h"
#include "feature/nodelist/node_st.h" #include "feature/nodelist/node_st.h"
#include "feature/nodelist/routerinfo_st.h" #include "feature/nodelist/routerinfo_st.h"
@ -75,6 +76,21 @@ router_get_all_orports(const routerinfo_t *ri)
return node_get_all_orports(&fake_node); return node_get_all_orports(&fake_node);
} }
/** Return the Ed25519 identity key for this routerinfo, or NULL if it
* doesn't have one. */
const ed25519_public_key_t *
routerinfo_get_ed25519_id(const routerinfo_t *ri)
{
if (BUG(! ri))
return NULL;
const tor_cert_t *cert = ri->cache_info.signing_key_cert;
if (cert && ! ed25519_public_key_is_zero(&cert->signing_key))
return &cert->signing_key;
else
return NULL;
}
/** Given a router purpose, convert it to a string. Don't call this on /** Given a router purpose, convert it to a string. Don't call this on
* ROUTER_PURPOSE_UNKNOWN: The whole point of that value is that we don't * ROUTER_PURPOSE_UNKNOWN: The whole point of that value is that we don't
* know its string representation. */ * know its string representation. */

View File

@ -18,6 +18,10 @@ int router_get_orport(const routerinfo_t *router,
int router_has_orport(const routerinfo_t *router, int router_has_orport(const routerinfo_t *router,
const tor_addr_port_t *orport); const tor_addr_port_t *orport);
struct ed25519_public_key_t;
const struct ed25519_public_key_t *routerinfo_get_ed25519_id(
const routerinfo_t *ri);
smartlist_t *router_get_all_orports(const routerinfo_t *ri); smartlist_t *router_get_all_orports(const routerinfo_t *ri);
const char *router_purpose_to_string(uint8_t p); const char *router_purpose_to_string(uint8_t p);