Skip to main content

table_combine_kernel

Function table_combine_kernel 

Source
pub fn table_combine_kernel(
    words: [TableWords; 32],
    key: [b8; 64],
    mix: bool,
) -> [b8; 64]
Expand description

Combine one round’s 64 table words: rotated XOR per column plus the key.

Row out of rotl(T0[x], 8·row) is byte (out − row) mod 4 of T0[x].

Inputs: the 64 table words read last cycle, the round’s 64-byte key, and mix (apply the word mix after this round). Output: the 64-byte state after the whole AES round. Combinational: each output byte is a 5-input XOR (four table bytes and one key byte). The “rotation” is only a choice of which byte of each word to wire in; it costs nothing.

  column c of lane l, output row o:
    out[o] = key[o] ⊕ T0[x0].byte(o) ⊕ T0[x1].byte(o−1) ⊕ T0[x2].byte(o−2) ⊕ T0[x3].byte(o−3)
                                                  (row offsets taken mod 4)