]> git.meshlink.io Git - meshlink/commitdiff
Actually implement sptps_verify_datagram(), so try_mac() works.
authorGuus Sliepen <guus@meshlink.io>
Fri, 8 Aug 2014 09:52:13 +0000 (11:52 +0200)
committerGuus Sliepen <guus@meshlink.io>
Fri, 8 Aug 2014 09:52:13 +0000 (11:52 +0200)
src/sptps.c

index e03b18a8b12e498182ee16b04deb37f337d90be1..917b1e209c45cb641e8aa72ef4176b675497199c 100644 (file)
@@ -374,9 +374,14 @@ bool sptps_verify_datagram(sptps_t *s, const void *data, size_t len) {
        if(!s->instate || len < 21)
                return error(s, EIO, "Received short packet");
 
-       // TODO: just decrypt without updating the replay window
+       uint32_t seqno;
+       memcpy(&seqno, data, 4);
+       seqno = ntohl(seqno);
+       // TODO: check whether seqno makes sense, to avoid CPU intensive decrypt
 
-       return true;
+       char buffer[len];
+       size_t outlen;
+       return chacha_poly1305_decrypt(s->incipher, seqno, data + 4, len - 4, buffer, &outlen);
 }
 
 // Receive incoming data, datagram version.