diff options
author | Nick Mathewson <nickm@torproject.org> | 2014-10-16 13:26:42 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2014-10-16 13:26:42 -0400 |
commit | fb91d647acdf0560fc7479d72eeea52e4e6ff41d (patch) | |
tree | 500121c7c6c5b1b2cf3ee27d85f4cec6651853c6 /src/or/onion_fast.c | |
parent | ab4b29625db720817f9af502199ebf1ee3ac5af7 (diff) | |
download | tor-fb91d647acdf0560fc7479d72eeea52e4e6ff41d.tar.gz tor-fb91d647acdf0560fc7479d72eeea52e4e6ff41d.zip |
Downgrade 'invalid result from curve25519 handshake: 4' warning
Also, refactor the way we handle failed handshakes so that this
warning doesn't propagate itself to "onion_skin_client_handshake
failed" and "circuit_finish_handshake failed" and
"connection_edge_process_relay_cell (at origin) failed."
Resolves warning from 9635.
Diffstat (limited to 'src/or/onion_fast.c')
-rw-r--r-- | src/or/onion_fast.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/or/onion_fast.c b/src/or/onion_fast.c index 38b62decc3..30f60e8e42 100644 --- a/src/or/onion_fast.c +++ b/src/or/onion_fast.c @@ -92,7 +92,8 @@ int fast_client_handshake(const fast_handshake_state_t *handshake_state, const uint8_t *handshake_reply_out,/*DIGEST_LEN*2 bytes*/ uint8_t *key_out, - size_t key_out_len) + size_t key_out_len, + const char **msg_out) { uint8_t tmp[DIGEST_LEN+DIGEST_LEN]; uint8_t *out; @@ -104,13 +105,14 @@ fast_client_handshake(const fast_handshake_state_t *handshake_state, out_len = key_out_len+DIGEST_LEN; out = tor_malloc(out_len); if (crypto_expand_key_material_TAP(tmp, sizeof(tmp), out, out_len)) { - log_warn(LD_CIRC, "Failed to expand key material"); + if (msg_out) + *msg_out = "Failed to expand key material"; goto done; } if (tor_memneq(out, handshake_reply_out+DIGEST_LEN, DIGEST_LEN)) { /* H(K) does *not* match. Something fishy. */ - log_warn(LD_PROTOCOL,"Digest DOES NOT MATCH on fast handshake. " - "Bug or attack."); + if (msg_out) + *msg_out = "Digest DOES NOT MATCH on fast handshake. Bug or attack."; goto done; } memcpy(key_out, out+DIGEST_LEN, key_out_len); |