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# the step undone
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)}

Uses (6)

Used by (4)