def cr.kb.ctr
bend-osdev-crypto@0.1.0.0 · kbkdf.bend:47
import bend-osdev-crypto@0.1.0.0/kbkdf.bend as Kbkdf
import Base
import bend-osdev-bytes@0.1.0.0/bytes.bend as B
47
48
49def cr.kb.ctr(~K: Data, ~compute: K -> B.Octets -> B.Octets, n: Nat, cur: List<&2, U32>, +k: K, +rlen: Nat, +fixed: B.Octets, +i: U32) -> List<&2, U32>:
50 match n:
51 case 0n:
52 Nil{}
53 case 1n+p:
54 match cur:
55 case Con{h, t}:
56 Con{h, cr.kb.ctr(~K, ~compute, p, t, k, rlen, fixed, i)}
57 case Nil{}:
58 +blk = B.Octets.to_list(compute(k, B.Octets.append(CrKbkdf.counter(rlen, U32.add(i, 1)), fixed)))
59 Con{cr.kb.head(blk), cr.kb.ctr(~K, ~compute, p, cr.kb.tail(blk), k, rlen, fixed, U32.add(i, 1))}