diff options
author | Roger Dingledine <arma@torproject.org> | 2008-02-06 12:39:25 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2008-02-06 12:39:25 +0000 |
commit | e49d712b8a2a5e7fe75f6f229bc2ab6b175b82e4 (patch) | |
tree | ae5d6190e75becf5ceae3e764c943959b96d93cd /src/or/router.c | |
parent | 55971c71b610491aab250bd1240089dd2bf8ed0a (diff) | |
download | tor-e49d712b8a2a5e7fe75f6f229bc2ab6b175b82e4.tar.gz tor-e49d712b8a2a5e7fe75f6f229bc2ab6b175b82e4.zip |
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
Diffstat (limited to 'src/or/router.c')
-rw-r--r-- | src/or/router.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/or/router.c b/src/or/router.c index a24a6dfe7a..f4a1a9fb8b 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -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 */ } |