]> git.meshlink.io Git - meshlink/blobdiff - src/protocol_key.c
Merge branch 'master' into 1.1
[meshlink] / src / protocol_key.c
index 06ce733df77c21129c473d100db354bf5a7c450a..60e9d73691b7c6993effaf99ca317bcadf11a3a4 100644 (file)
@@ -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;
        }