1 #ifndef LIBGARBLE_GARBLE_GATE_STANDARD_H 2 #define LIBGARBLE_GARBLE_GATE_STANDARD_H 17 block HA, HB, tmp, tweak, val;
28 tmp = a + b ?
garble_xor(table[2*a+b-1], val) : val;
29 AES_ecb_encrypt_blks(&val, 1, key);
55 block tweak, blocks[4], keys[4], mask[4];
56 block newToken, newToken2;
57 block *label0, *label1;
73 memcpy(mask, keys,
sizeof mask);
74 AES_ecb_encrypt_blks(keys, 4, key);
80 newToken = mask[2 * lsb0 + lsb1];
97 if (2*lsb0 + lsb1 != 0)
98 table[2*lsb0 + lsb1 -1] =
garble_xor(blocks[0], mask[0]);
99 if (2*lsb0 + 1-lsb1 != 0)
100 table[2*lsb0 + 1-lsb1-1] =
garble_xor(blocks[1], mask[1]);
101 if (2*(1-lsb0) + lsb1 != 0)
102 table[2*(1-lsb0) + lsb1-1] =
garble_xor(blocks[2], mask[2]);
103 if (2*(1-lsb0) + (1-lsb1) != 0)
104 table[2*(1-lsb0) + (1-lsb1)-1] =
garble_xor(blocks[3], mask[3]);
#define garble_lsb(x)
Definition: block.h:15
#define garble_zero_block()
Definition: block.h:11
#define garble_make_block(X, Y)
Definition: block.h:16
__m128i block
Definition: block.h:8
#define garble_equal(x, y)
Definition: block.h:12
garble_gate_type_e
Definition: garble.h:25
#define garble_double(B)
Definition: block.h:17
#define garble_xor(x, y)
Definition: block.h:10