X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprotocol_key.c;h=bc02054d869e150b891aad10c895c53de1408277;hb=1cbddbd573d786f6b2bf9812dda89d1ea5b7e021;hp=06ce733df77c21129c473d100db354bf5a7c450a;hpb=5a132550deb58473285e5f91705d286aef47be71;p=tinc diff --git a/src/protocol_key.c b/src/protocol_key.c index 06ce733d..bc02054d 100644 --- a/src/protocol_key.c +++ b/src/protocol_key.c @@ -46,7 +46,7 @@ bool send_key_changed() { if(!mykeyused) return true; - return send_request(broadcast, "%d %lx %s", KEY_CHANGED, random(), myself->name); + return send_request(broadcast, "%d %x %s", KEY_CHANGED, rand(), myself->name); } bool key_changed_h(connection_t *c, char *request) { @@ -146,8 +146,7 @@ bool send_ans_key(node_t *to) { cp(); cipher_open_by_nid(&to->incipher, cipher_get_nid(&myself->incipher)); - digest_open_by_nid(&to->indigest, digest_get_nid(&myself->indigest)); - to->inmaclength = myself->inmaclength; + digest_open_by_nid(&to->indigest, digest_get_nid(&myself->indigest), digest_length(&myself->indigest)); to->incompression = myself->incompression; randomize(key, keylen); @@ -161,10 +160,11 @@ bool send_ans_key(node_t *to) { to->received_seqno = 0; memset(to->late, 0, sizeof(to->late)); - return send_request(to->nexthop->connection, "%d %s %s %s %d %d %d %d", ANS_KEY, + return send_request(to->nexthop->connection, "%d %s %s %s %d %d %zu %d", ANS_KEY, myself->name, to->name, key, cipher_get_nid(&to->incipher), - digest_get_nid(&to->indigest), to->inmaclength, + digest_get_nid(&to->indigest), + digest_length(&to->indigest), to->incompression); } @@ -228,14 +228,12 @@ bool ans_key_h(connection_t *c, char *request) { return false; } - from->outmaclength = maclength; - - if(!digest_open_by_nid(&from->outdigest, digest)) { + if(!digest_open_by_nid(&from->outdigest, digest, maclength)) { logger(LOG_ERR, _("Node %s (%s) uses unknown digest!"), from->name, from->hostname); return false; } - if(from->outmaclength > digest_length(&from->outdigest) || from->outmaclength < 0) { + if(maclength != digest_length(&from->outdigest)) { logger(LOG_ERR, _("Node %s (%s) uses bogus MAC length!"), from->name, from->hostname); return false; }