def absorb
import bend-collections@1.0.0.0/spec/crypto/poly1305.bend as Poly1305import Base
105# for each block: n = le_bytes_to_num(block | [0x01]); a += n; a = (r * a) % p
106def absorb(bs: List<&2, List<&2, U32>>, +r: Nat, a: Nat) -> Nat:
107 match bs:
108 case Nil{}: a
109 case b <> rest:
110 +n = le_num(List.append(&2, U32, b, [1]))
111 absorb(rest, r, modp(Nat.mul(r, Nat.add(a, n))))