summaryrefslogtreecommitdiff
path: root/src/or/dirauth/dirvote.c
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2018-05-01 08:58:57 -0400
committerDavid Goulet <dgoulet@torproject.org>2018-05-01 10:07:09 -0400
commit15e8ce39379fde7b6cddb4b06b3d8e01fadd4867 (patch)
treec83d02466d49a08eebb274100a59e01872cb9f2c /src/or/dirauth/dirvote.c
parent43bba89656cce89964f260d46f2550ab9af00c9e (diff)
downloadtor-15e8ce39379fde7b6cddb4b06b3d8e01fadd4867.tar.gz
tor-15e8ce39379fde7b6cddb4b06b3d8e01fadd4867.zip
Move back dirvote_authority_cert_dup to dirvote.c
Originally, it was made public outside of the dirauth module but it is no longer needed. In doing so, we put it back in dirvote.c and reverted its name to the original one: dirvote_authority_cert_dup() --> authority_cert_dup() Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/or/dirauth/dirvote.c')
-rw-r--r--src/or/dirauth/dirvote.c26
1 files changed, 25 insertions, 1 deletions
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
@@ -95,6 +95,30 @@ 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
+ * <b>cert</b>. */
+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. */