Gcm.ghash: def of bend-collections@1.0.0.0 Import: import bend-collections@1.0.0.0/src/crypto/aes/gcm.bend as Gcm Lines 101-109 of bend-collections@1.0.0.0/src/crypto/aes/gcm.bend: https://jend.leeeet.dev/read.txt?path=bend-collections@1.0.0.0/src/crypto/aes/gcm.bend&start_line=101&end_line=109 import Base # GHASH_H over the bytes, a last partial block padded with zero bytes. def ghash(+h: Block, +xs: List<&2, U32>, y: Block) -> Block: match xs: case x0 <> x1 <> x2 <> x3 <> x4 <> x5 <> x6 <> x7 <> x8 <> x9 <> x10 <> x11 <> x12 <> x13 <> x14 <> x15 <> rest: ghash(h, rest, absorb(h, y, [x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15])) case Nil{}: y case _: absorb(h, y, List.append(&2, U32, xs, zeros(Nat.sub(16n, List.length(&2, U32, xs))))) Uses (8): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List.append https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List.length https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.sub https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/aes/gcm.bend&name=Block https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/aes/gcm.bend&name=absorb https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/aes/gcm.bend&name=zeros