|
@@ -573,6 +573,7 @@ int router_dump_router_to_string(char *s, int maxlen, routerinfo_t *router,
|
|
|
char digest[20];
|
|
|
char signature[128];
|
|
|
char published[32];
|
|
|
+ char fingerprint[FINGERPRINT_LEN+1];
|
|
|
struct in_addr in;
|
|
|
int onion_pkeylen, identity_pkeylen;
|
|
|
int written;
|
|
@@ -590,6 +591,12 @@ int router_dump_router_to_string(char *s, int maxlen, routerinfo_t *router,
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
+ /* record our fingerprint, so we can include it in the descriptor */
|
|
|
+ if (crypto_pk_get_fingerprint(router->identity_pkey, fingerprint)<0) {
|
|
|
+ log_fn(LOG_ERR, "Error computing fingerprint");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
/* PEM-encode the onion key */
|
|
|
if(crypto_pk_write_public_key_to_string(router->onion_pkey,
|
|
|
&onion_pkey,&onion_pkeylen)<0) {
|
|
@@ -613,6 +620,7 @@ int router_dump_router_to_string(char *s, int maxlen, routerinfo_t *router,
|
|
|
"router %s %s %d %d %d\n"
|
|
|
"platform %s\n"
|
|
|
"published %s\n"
|
|
|
+ "opt fingerprint %s\n"
|
|
|
"opt uptime %ld\n"
|
|
|
"bandwidth %d %d %d\n"
|
|
|
"onion-key\n%s"
|
|
@@ -627,6 +635,7 @@ int router_dump_router_to_string(char *s, int maxlen, routerinfo_t *router,
|
|
|
router->is_trusted_dir ? router->dir_port : 0,
|
|
|
router->platform,
|
|
|
published,
|
|
|
+ fingerprint,
|
|
|
stats_n_seconds_uptime,
|
|
|
(int) router->bandwidthrate,
|
|
|
(int) router->bandwidthburst,
|