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]);