def ccm.cbcmac
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
43# CBC-MAC of whole blocks, from x
44def ccm.cbcmac(~K: Data, ~enc: K -> M.CmBlock -> M.CmBlock, +k: K, bs: List<&2, M.CmBlock>, x: M.CmBlock) -> M.CmBlock:
45 match bs:
46 case Nil{}:
47 x
48 case Con{b, t}:
49 ccm.cbcmac(~K, ~enc, k, t, enc(k, M.CmBlock.xor(x, b)))