dirauth: Fix for calling routers unreachable for wrong ed25519

Previously the dirserv_orconn_tls_done() function would skip routers
when they advertised an ed25519 key but didn't present it during the
link handshake.  But that covers all versions between 0.2.7.2-alpha
and 0.2.9.x inclusive!

Fixes bug 21107; bugfix on 0.3.0.1-alpha.
This commit is contained in:
Nick Mathewson 2017-02-02 10:35:14 -05:00
parent d732409402
commit 0f79fb51e5
2 changed files with 7 additions and 0 deletions

6
changes/bug21107 Normal file
View File

@ -0,0 +1,6 @@
o Major bugfixes (directory authority):
- When deciding whether we have just found a router to be reachable,
do not penalize it for not having performed an Ed25519 link handshake
if it does not claim to support an Ed25519 handshake. Previously,
we would treat such relays as non-running.
Fixes bug 21107; bugfix on 0.2.3.1-alpha.

View File

@ -3191,6 +3191,7 @@ dirserv_orconn_tls_done(const tor_addr_t *addr,
ri = node->ri; ri = node->ri;
if (get_options()->AuthDirTestEd25519LinkKeys && if (get_options()->AuthDirTestEd25519LinkKeys &&
node_supports_ed25519_link_authentication(node) &&
ri->cache_info.signing_key_cert) { ri->cache_info.signing_key_cert) {
/* We allow the node to have an ed25519 key if we haven't been told one in /* We allow the node to have an ed25519 key if we haven't been told one in
* the routerinfo, but if we *HAVE* been told one in the routerinfo, it * the routerinfo, but if we *HAVE* been told one in the routerinfo, it