X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprotocol_key.c;h=60e9d73691b7c6993effaf99ca317bcadf11a3a4;hb=075e6828a7533e7daa790225f17aa6bb39703278;hp=06ce733df77c21129c473d100db354bf5a7c450a;hpb=5a132550deb58473285e5f91705d286aef47be71;p=tinc diff --git a/src/protocol_key.c b/src/protocol_key.c index 06ce733d..60e9d736 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); @@ -164,7 +163,8 @@ bool send_ans_key(node_t *to) { return send_request(to->nexthop->connection, "%d %s %s %s %d %d %d %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; }