def t_blocks

bend-collections@1.0.0.0 · spec/crypto/hkdf.bend:21

import bend-collections@1.0.0.0/spec/crypto/hkdf.bend as Hkdf
import Base
import bend-collections@1.0.0.0/spec/crypto/hmac.bend as HMAC

21# 2.3 Step 2: Expand. T(0) = empty string; for i = 1..N,
22#   T(i) = HMAC-Hash(PRK, T(i-1) | info | the octet i).
23# t_blocks(n, prk, info, T(i), i) is T(i+1) | ... | T(i+n).
24def t_blocks(n: Nat, +prk: List<&2, U32>, +info: List<&2, U32>, prev: List<&2, U32>, +i: Nat) -> List<&2, U32>:
25  match n:
26    case 0n:
27      Nil{}
28    case 1n+p:
29      +t = HMAC.hmac(prk, List.append(&2, U32, prev,
30        List.append(&2, U32, info, [U32.from_nat(1n+i)])))
31      List.append(&2, U32, t, t_blocks(p, prk, info, t, 1n+i))

Uses (6)

Used by (1)