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)}

Uses (6)

Used by (4)