def mix_column
bend-collections-laws-crypto@1.0.0.0 · src/crypto/aes/aes.bend:26
import bend-collections-laws-crypto@1.0.0.0/src/crypto/aes/aes.bend as Aes
import Base
import bend-collections-laws-crypto@1.0.0.0/src/crypto/aes/types.bend as T
import bend-collections-laws-crypto@1.0.0.0/src/crypto/aes/sbox.bend as B
26def mix_column(w: T.Quad) -> T.Quad:
27 match w:
28 case T.W{+a, +b, +c, +d}:
29 T.W{U32.xor(U32.xor(U32.xor(B.xtime(a), B.mul3(b)), c), d),
30 U32.xor(U32.xor(U32.xor(a, B.xtime(b)), B.mul3(c)), d),
31 U32.xor(U32.xor(U32.xor(a, b), B.xtime(c)), B.mul3(d)),
32 U32.xor(U32.xor(U32.xor(B.mul3(a), b), c), B.xtime(d))}