]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Consensus method 18: Add a base64 ID digest to the microdesc
authorNick Mathewson <nickm@torproject.org>
Mon, 5 May 2014 15:28:25 +0000 (11:28 -0400)
committerNick Mathewson <nickm@torproject.org>
Mon, 5 May 2014 15:31:24 +0000 (11:31 -0400)
This is a stopgap measure to make sure that microdescriptors never
collide; see bug 11743.

src/or/dirvote.c
src/or/dirvote.h

index 4d3ee9cdb35d9766e331f0342c1aa0fa31506bf1..8b51306d15d2670e41c63b95c66057e064fdf46a 100644 (file)
@@ -3588,6 +3588,12 @@ dirvote_create_microdescriptor(const routerinfo_t *ri, int consensus_method)
     tor_free(p6);
   }
 
+  if (consensus_method >= MIN_METHOD_FOR_ID_HASH_IN_MD) {
+    char idbuf[BASE64_DIGEST_LEN+1];
+    digest_to_base64(idbuf, ri->cache_info.identity_digest);
+    smartlist_add_asprintf(chunks, "id %s\n", idbuf);
+  }
+
   output = smartlist_join_strings(chunks, "", 0, NULL);
 
   {
@@ -3657,7 +3663,8 @@ static const struct consensus_method_range_t {
   {MIN_METHOD_FOR_MICRODESC, MIN_METHOD_FOR_A_LINES - 1},
   {MIN_METHOD_FOR_A_LINES, MIN_METHOD_FOR_P6_LINES - 1},
   {MIN_METHOD_FOR_P6_LINES, MIN_METHOD_FOR_NTOR_KEY - 1},
-  {MIN_METHOD_FOR_NTOR_KEY, MAX_SUPPORTED_CONSENSUS_METHOD},
+  {MIN_METHOD_FOR_NTOR_KEY, MIN_METHOD_FOR_ID_HASH_IN_MD - 1},
+  {MIN_METHOD_FOR_ID_HASH_IN_MD,  MAX_SUPPORTED_CONSENSUS_METHOD},
   {-1, -1}
 };
 
index 3a4951a95f259da24966d728e2b3cf9513e4196f..20825792104807549a25d07a9f8422067a0064cc 100644 (file)
@@ -22,7 +22,7 @@
 #define MIN_VOTE_INTERVAL 300
 
 /** The highest consensus method that we currently support. */
-#define MAX_SUPPORTED_CONSENSUS_METHOD 17
+#define MAX_SUPPORTED_CONSENSUS_METHOD 18
 
 /** Lowest consensus method that contains a 'directory-footer' marker */
 #define MIN_METHOD_FOR_FOOTER 9
  * Unmeasured=1 flag for unmeasured bandwidths */
 #define MIN_METHOD_TO_CLIP_UNMEASURED_BW 17
 
+/** Lowest consensus method that ensures that authorities output an
+ * Unmeasured=1 flag for unmeasured bandwidths */
+#define MIN_METHOD_FOR_ID_HASH_IN_MD 18
+
 /** Default bandwidth to clip unmeasured bandwidths to using method >=
  * MIN_METHOD_TO_CLIP_UNMEASURED_BW */
 #define DEFAULT_MAX_UNMEASURED_BW_KB 20