def tea.unop
bend-osdev-legacy-ciphers@0.1.0.0 · tea.bend:64
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
64
65def tea.unop(o: LcTeaOp, b: L.LcBlock64) -> L.LcBlock64:
66 match o:
67 case LcTeaY{s, ka, kb}:
68 match b:
69 case L.LcBlock64{y, +z}:
70 L.LcBlock64{U32.sub(y, tea.g(z, s, ka, kb)), z}
71 case LcTeaZ{s, ka, kb}:
72 match b:
73 case L.LcBlock64{+y, z}:
74 L.LcBlock64{y, U32.sub(z, tea.g(y, s, ka, kb))}
75 case LcXteaY{c}:
76 match b:
77 case L.LcBlock64{y, +z}:
78 L.LcBlock64{U32.sub(y, xtea.g(z, c)), z}
79 case LcXteaZ{c}:
80 match b:
81 case L.LcBlock64{+y, z}:
82 L.LcBlock64{y, U32.sub(z, xtea.g(y, c))}
83 case LcTeaBswap{}:
84 match b:
85 case L.LcBlock64{y, z}:
86 L.LcBlock64{L.lc.bswap.bits(y), L.lc.bswap.bits(z)}