diff --git a/src/or/dirauth/dirvote.c b/src/or/dirauth/dirvote.c index 683cfdfcac..dc978f26e9 100644 --- a/src/or/dirauth/dirvote.c +++ b/src/or/dirauth/dirvote.c @@ -94,6 +94,30 @@ static void dirvote_clear_votes(int all_votes); static int dirvote_compute_consensuses(void); static int dirvote_publish_consensus(void); +/* ===== + * Certificate functions + * ===== */ + +/** Allocate and return a new authority_cert_t with the same contents as + * cert. */ +STATIC authority_cert_t * +authority_cert_dup(authority_cert_t *cert) +{ + authority_cert_t *out = tor_malloc(sizeof(authority_cert_t)); + tor_assert(cert); + + memcpy(out, cert, sizeof(authority_cert_t)); + /* Now copy pointed-to things. */ + out->cache_info.signed_descriptor_body = + tor_strndup(cert->cache_info.signed_descriptor_body, + cert->cache_info.signed_descriptor_len); + out->cache_info.saved_location = SAVED_NOWHERE; + out->identity_key = crypto_pk_dup_key(cert->identity_key); + out->signing_key = crypto_pk_dup_key(cert->signing_key); + + return out; +} + /* ===== * Voting * =====*/ @@ -4472,7 +4496,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, v3_out->voters = smartlist_new(); smartlist_add(v3_out->voters, voter); - v3_out->cert = dirvote_authority_cert_dup(cert); + v3_out->cert = authority_cert_dup(cert); v3_out->routerstatus_list = routerstatuses; /* Note: networkstatus_digest is unset; it won't get set until we actually * format the vote. */ diff --git a/src/or/dirauth/dirvote.h b/src/or/dirauth/dirvote.h index 59cfd6b999..2c3b1a1cf0 100644 --- a/src/or/dirauth/dirvote.h +++ b/src/or/dirauth/dirvote.h @@ -202,6 +202,8 @@ vote_microdesc_hash_t *dirvote_format_all_microdesc_vote_lines( */ #ifdef DIRVOTE_PRIVATE +/* Cert manipulation */ +STATIC authority_cert_t *authority_cert_dup(authority_cert_t *cert); STATIC int32_t dirvote_get_intermediate_param_value( const smartlist_t *param_list, const char *keyword, diff --git a/src/or/dirvote_common.c b/src/or/dirvote_common.c index 9d2c867c83..a28a441d64 100644 --- a/src/or/dirvote_common.c +++ b/src/or/dirvote_common.c @@ -193,27 +193,3 @@ dirvote_get_voter_sig_by_alg(const networkstatus_voter_info_t *voter, return NULL; } -/* ===== - * Certificate functions - * ===== */ - -/** Allocate and return a new authority_cert_t with the same contents as - * cert. */ -authority_cert_t * -dirvote_authority_cert_dup(authority_cert_t *cert) -{ - authority_cert_t *out = tor_malloc(sizeof(authority_cert_t)); - tor_assert(cert); - - memcpy(out, cert, sizeof(authority_cert_t)); - /* Now copy pointed-to things. */ - out->cache_info.signed_descriptor_body = - tor_strndup(cert->cache_info.signed_descriptor_body, - cert->cache_info.signed_descriptor_len); - out->cache_info.saved_location = SAVED_NOWHERE; - out->identity_key = crypto_pk_dup_key(cert->identity_key); - out->signing_key = crypto_pk_dup_key(cert->signing_key); - - return out; -} - diff --git a/src/or/dirvote_common.h b/src/or/dirvote_common.h index 07e6259377..857b8497ee 100644 --- a/src/or/dirvote_common.h +++ b/src/or/dirvote_common.h @@ -62,8 +62,5 @@ document_signature_t *dirvote_get_voter_sig_by_alg( const networkstatus_voter_info_t *voter, digest_algorithm_t alg); -/* Cert manipulation */ -authority_cert_t *dirvote_authority_cert_dup(authority_cert_t *cert); - #endif /* TOR_DIRVOTE_COMMON_H */ diff --git a/src/test/test_dir_common.c b/src/test/test_dir_common.c index 8c6d99ccec..02d3295ca6 100644 --- a/src/test/test_dir_common.c +++ b/src/test/test_dir_common.c @@ -307,7 +307,7 @@ dir_common_construct_vote_1(networkstatus_t **vote, authority_cert_t *cert, * Set up a vote; generate it; try to parse it. */ smartlist_add((*vote)->voters, voter); - (*vote)->cert = dirvote_authority_cert_dup(cert); + (*vote)->cert = authority_cert_dup(cert); smartlist_split_string((*vote)->net_params, "circuitwindow=101 foo=990", NULL, 0, 0); *n_vrs = 0; @@ -356,7 +356,7 @@ dir_common_construct_vote_2(networkstatus_t **vote, authority_cert_t *cert, * Set up a vote; generate it; try to parse it. */ smartlist_add((*vote)->voters, voter); - (*vote)->cert = dirvote_authority_cert_dup(cert); + (*vote)->cert = authority_cert_dup(cert); if (! (*vote)->net_params) (*vote)->net_params = smartlist_new(); smartlist_split_string((*vote)->net_params, @@ -407,7 +407,7 @@ dir_common_construct_vote_3(networkstatus_t **vote, authority_cert_t *cert, * Set up a vote; generate it; try to parse it. */ smartlist_add((*vote)->voters, voter); - (*vote)->cert = dirvote_authority_cert_dup(cert); + (*vote)->cert = authority_cert_dup(cert); smartlist_split_string((*vote)->net_params, "circuitwindow=80 foo=660", NULL, 0, 0); /* add routerstatuses */