def ccm.ctrb
import bend-osdev-cipher-modes@0.1.0.0/ccm.bend as Ccmimport Base
import bend-osdev-cipher-modes@0.1.0.0/cipher_modes.bend as M
66# CTR on whole blocks: b_j xor S_(i+j)
67def ccm.ctrb(~K: Data, ~enc: K -> M.CmBlock -> M.CmBlock, +k: K, bs: List<&2, M.CmBlock>, +a0: M.CmBlock, +i: U32) -> List<&2, M.CmBlock>:
68 match bs:
69 case Nil{}:
70 Nil{}
71 case Con{b, rest}:
72 Con{M.CmBlock.xor(b, enc(k, ccm.ai(a0, i))), ccm.ctrb(~K, ~enc, k, rest, a0, U32.add(i, 1))}