def cr.hkdf.blocks

bend-osdev-crypto@0.1.0.0 · hkdf.bend:24

import bend-osdev-crypto@0.1.0.0/hkdf.bend as Hkdf
import Base
import bend-osdev-bytes@0.1.0.0/bytes.bend as B
import bend-osdev-crypto@0.1.0.0/hmac.bend as Hm

24# T(i) .. T(i+n-1), last first, onto acc (prev is T(i-1), ctr the byte i)
25def cr.hkdf.blocks(~digest: B.Octets -> B.Octets, n: Nat, +kk: Hm.CrHmacKey, +info: B.Octets, prev: B.Octets, +ctr: U32, acc: List<&2, B.Octets>) -> List<&2, B.Octets>:
26  match n:
27    case 0n:
28      acc
29    case 1n+p:
30      +t = Hm.CrHmac.mac(~digest, kk, B.Octets.append(prev, B.Octets.append(info, B.Octets.of_list([ctr]))))
31      cr.hkdf.blocks(~digest, p, kk, info, t, U32.add(ctr, 1), Con{t, acc})

Uses (9)

Used by (1)