def ad.ae.ego
bend-osdev-aead@0.1.0.0 · aegis128.bend:174
import bend-osdev-aead@0.1.0.0/aegis128.bend as Aegis128
import Base
import bend-osdev-bytes@0.1.0.0/bytes.bend as B
import bend-osdev-aead@0.1.0.0/aesround.bend as R
174def ad.ae.ego(xs: List<&2, U32>, +sb: R.AdSbox, +r: AdAegisRun, acc: List<&2, U32>) -> AdAegisOut:
175 match xs:
176 case Nil{}:
177 AdAegisOut{r, ad.ae.rev(acc, Nil{})}
178 case Con{+x, t}:
179 ad.ae.ego(t, sb, ad.ae.step(sb, r, B.byte(x)), Con{B.byte(U32.xor(x, ad.ae.zhead(r))), acc})