mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Bugfixes in fetching certificates for a consensus: fetch tor/keys/fp/X, not tor/keys/X. Also, count signatures where no certificate is known as "missing a certificate" not as "unknown authority."
svn:r11805
This commit is contained in:
parent
c7981e669f
commit
f1d4e3477b
@ -725,11 +725,13 @@ networkstatus_check_consensus_signature(networkstatus_vote_t *consensus,
|
||||
authority_cert_get_by_digests(voter->identity_digest,
|
||||
voter->signing_key_digest);
|
||||
if (! cert) {
|
||||
if (!trusteddirserver_get_by_v3_auth_digest(voter->identity_digest))
|
||||
if (!trusteddirserver_get_by_v3_auth_digest(voter->identity_digest)) {
|
||||
smartlist_add(unrecognized, voter);
|
||||
else
|
||||
++n_unknown;
|
||||
} else {
|
||||
smartlist_add(need_certs_from, voter);
|
||||
++n_unknown;
|
||||
++n_missing_key;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (networkstatus_check_voter_signature(consensus, voter, cert) < 0) {
|
||||
|
@ -318,12 +318,16 @@ authority_certs_fetch_missing(networkstatus_vote_t *status)
|
||||
|
||||
{
|
||||
smartlist_t *fps = smartlist_create();
|
||||
smartlist_add(fps, tor_strdup("fp/"));
|
||||
SMARTLIST_FOREACH(missing_digests, const char *, d, {
|
||||
char *fp = tor_malloc(HEX_DIGEST_LEN+1);
|
||||
char *fp = tor_malloc(HEX_DIGEST_LEN+2);
|
||||
base16_encode(fp, HEX_DIGEST_LEN+1, d, DIGEST_LEN);
|
||||
fp[HEX_DIGEST_LEN] = '+';
|
||||
fp[HEX_DIGEST_LEN+1] = '\0';
|
||||
smartlist_add(fps, fp);
|
||||
});
|
||||
resource = smartlist_join_strings(fps, "+", 0, NULL);
|
||||
resource = smartlist_join_strings(fps, "", 0, NULL);
|
||||
resource[strlen(resource)-1] = '\0';
|
||||
SMARTLIST_FOREACH(fps, char *, cp, tor_free(cp));
|
||||
smartlist_free(fps);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user