Commit e49d712b authored by Roger Dingledine's avatar Roger Dingledine
Browse files

if i'm a v3 authority, tell myself about my cert when i startup.

otherwise i'll keep asking other authorities for it, which probably
isn't the best way to get it. this made bootstrapping a new network
very hard.


svn:r13400
parent 55971c71
Loading
Loading
Loading
Loading
+12 −1
Changes for src/or/router.c: 12 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -387,6 +387,7 @@ init_keys(void)
  time_t now = time(NULL);
  trusted_dir_server_t *ds;
  int v3_digest_set = 0;
  authority_cert_t *cert = NULL;

  if (!key_lock)
    key_lock = tor_mutex_new();
@@ -431,7 +432,8 @@ init_keys(void)
              "Use tor-gencert to generate them. Dying.");
      return -1;
    }
    if (get_my_v3_authority_cert()) {
    cert = get_my_v3_authority_cert();
    if (cert) {
      crypto_pk_get_digest(get_my_v3_authority_cert()->identity_key,
                           v3_digest);
      v3_digest_set = 1;
@@ -585,6 +587,15 @@ init_keys(void)
    memcpy(ds->v3_identity_digest, v3_digest, DIGEST_LEN);
  }

  if (cert) { /* add my own cert to the list of known certs */
    log_info(LD_DIR, "adding my own v3 cert");
    if (trusted_dirs_load_certs_from_string(
          cert->cache_info.signed_descriptor_body, 0)<0) {
      log_warn(LD_DIR, "Unable to parse my own v3 cert! Failing.");
      return -1;
    }
  }

  return 0; /* success */
}