def tea.op
bend-osdev-legacy-ciphers@0.1.0.0 · tea.bend:41
import bend-osdev-legacy-ciphers@0.1.0.0/tea.bend as Tea
import Base
import bend-osdev-legacy-ciphers@0.1.0.0/legacy_ciphers.bend as L
41def tea.op(o: LcTeaOp, b: L.LcBlock64) -> L.LcBlock64:
42 match o:
43 case LcTeaY{s, ka, kb}:
44 match b:
45 case L.LcBlock64{y, +z}:
46 L.LcBlock64{U32.add(y, tea.g(z, s, ka, kb)), z}
47 case LcTeaZ{s, ka, kb}:
48 match b:
49 case L.LcBlock64{+y, z}:
50 L.LcBlock64{y, U32.add(z, tea.g(y, s, ka, kb))}
51 case LcXteaY{c}:
52 match b:
53 case L.LcBlock64{y, +z}:
54 L.LcBlock64{U32.add(y, xtea.g(z, c)), z}
55 case LcXteaZ{c}:
56 match b:
57 case L.LcBlock64{+y, z}:
58 L.LcBlock64{y, U32.add(z, xtea.g(y, c))}
59 case LcTeaBswap{}:
60 match b:
61 case L.LcBlock64{y, z}:
62 L.LcBlock64{L.lc.bswap.bits(y), L.lc.bswap.bits(z)}