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 */