ESPHome 2026.3.0
Loading...
Searching...
No Matches
xxtea.cpp
Go to the documentation of this file.
1#include "xxtea.h"
2
3namespace esphome {
4namespace xxtea {
5
6static const uint32_t DELTA = 0x9e3779b9;
7#define MX ((((z >> 5) ^ (y << 2)) + ((y >> 3) ^ (z << 4))) ^ ((sum ^ y) + (k[(p ^ e) & 7] ^ z)))
8
9void encrypt(uint32_t *v, size_t n, const uint32_t *k) {
10 if (n == 0)
11 return;
12 uint32_t z, y, sum, e;
13 size_t p;
14 size_t q = 6 + 52 / n;
15 sum = 0;
16 z = v[n - 1];
17 while (q-- != 0) {
18 sum += DELTA;
19 e = (sum >> 2);
20 for (p = 0; p != n - 1; p++) {
21 y = v[p + 1];
22 z = v[p] += MX;
23 }
24 y = v[0];
25 z = v[n - 1] += MX;
26 }
27}
28
29void decrypt(uint32_t *v, size_t n, const uint32_t *k) {
30 if (n == 0)
31 return;
32 uint32_t z, y, sum, e;
33 size_t p;
34 size_t q = 6 + 52 / n;
35 sum = q * DELTA;
36 y = v[0];
37 while (q-- != 0) {
38 e = (sum >> 2);
39 for (p = n - 1; p != 0; p--) {
40 z = v[p - 1];
41 y = v[p] -= MX;
42 }
43 z = v[n - 1];
44 y = v[0] -= MX;
45 sum -= DELTA;
46 }
47}
48
49} // namespace xxtea
50} // namespace esphome
bool z
Definition msa3xx.h:1
void encrypt(uint32_t *v, size_t n, const uint32_t *k)
Encrypt a block of data in-place using XXTEA algorithm with 256-bit key.
Definition xxtea.cpp:9
void decrypt(uint32_t *v, size_t n, const uint32_t *k)
Decrypt a block of data in-place using XXTEA algorithm with 256-bit key.
Definition xxtea.cpp:29
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
static void uint32_t
uint16_t y
Definition tt21100.cpp:6