From 27412ef03d8f64215fadf0a7c68cb0d81755c0f6 Mon Sep 17 00:00:00 2001 From: schneider Date: Tue, 19 Jul 2011 00:51:07 +0200 Subject: [PATCH] basic: added cbc-mac with xxtea for messages with n*4 words --- firmware/basic/xxtea.c | 14 ++++++++++++++ firmware/basic/xxtea.h | 1 + 2 files changed, 15 insertions(+) diff --git a/firmware/basic/xxtea.c b/firmware/basic/xxtea.c index c768d85..91e0316 100644 --- a/firmware/basic/xxtea.c +++ b/firmware/basic/xxtea.c @@ -37,6 +37,20 @@ void htonlp(uint32_t *v, uint8_t n) } } +void xxtea_cbcmac(uint32_t mac[4], uint32_t *data, uint32_t len, uint32_t key[4]) +{ + if( len & 0x03 ) + return; + mac[0]=0;mac[1]=0;mac[2]=0;mac[3]=0; + for(int i=0; i>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (k[(p&3)^e] ^ z))) diff --git a/firmware/basic/xxtea.h b/firmware/basic/xxtea.h index e8b99c9..4a08ce6 100644 --- a/firmware/basic/xxtea.h +++ b/firmware/basic/xxtea.h @@ -1,6 +1,7 @@ #ifndef _XXTEA_H_ #define _XXTEA_H_ +void xxtea_cbcmac(uint32_t mac[4], uint32_t *data, uint32_t len, uint32_t key[4]); void xxtea_encode_words(uint32_t *v, int n, uint32_t const k[4]); void xxtea_decode_words(uint32_t *v, int n, uint32_t const k[4]);