aboutsummaryrefslogtreecommitdiff
path: root/pack.c
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2023-02-11 23:21:00 +0000
committerrodri <rgl@antares-labs.eu>2023-02-11 23:21:00 +0000
commit62e75d8830eb56ab03bd4689d51ffd6d4150f461 (patch)
tree5c84e92fbb3df890adeed7ba5f06ecda95b6e83e /pack.c
parent775309861b51dd1f340d82074b7e9234f3e0675e (diff)
downloadmusw-62e75d8830eb56ab03bd4689d51ffd6d4150f461.tar.gz
musw-62e75d8830eb56ab03bd4689d51ffd6d4150f461.tar.bz2
musw-62e75d8830eb56ab03bd4689d51ffd6d4150f461.zip
implemented per-packet HMAC to avoid MITM tampering.
Diffstat (limited to 'pack.c')
-rw-r--r--pack.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/pack.c b/pack.c
index 4680d73..f1a9a0a 100644
--- a/pack.c
+++ b/pack.c
@@ -1,6 +1,8 @@
#include <u.h>
#include <libc.h>
#include <ip.h>
+#include <mp.h>
+#include <libsec.h>
#include <draw.h>
#include <geometry.h>
#include "dat.h"
@@ -91,6 +93,7 @@ vpack(uchar *p, int n, char *fmt, va_list a)
put4(p, F->seq), p += 4;
put4(p, F->ack), p += 4;
put2(p, F->len), p += 2;
+ memmove(p, F->sig, MD5dlen), p += MD5dlen;
if(p+F->len > e)
goto err;
@@ -161,6 +164,7 @@ vunpack(uchar *p, int n, char *fmt, va_list a)
F->seq = get4(p), p += 4;
F->ack = get4(p), p += 4;
F->len = get2(p), p += 2;
+ memmove(F->sig, p, MD5dlen), p += MD5dlen;
if(p+F->len > e)
goto err;