def init_go

bend-collections-laws-crypto@1.0.0.0 · src/crypto/argon2/argon2.bend:307

import bend-collections-laws-crypto@1.0.0.0/src/crypto/argon2/argon2.bend as Argon2
import Base
import bend-collections-laws-crypto@1.0.0.0/src/crypto/argon2/memory.bend as M

307# B[l][0] = H'^1024(H0 || LE32(0) || LE32(l)), B[l][1] = H'^1024(H0 || LE32(1) || LE32(l)).
308def init_go(n: Nat, +l: Nat, +q: Nat, +hh: List<&2, U32>, a: Array<U32>) -> Array<U32>:
309  match n:
310    case 0n:
311      a
312    case 1n+rest:
313      +b0 = block_of(hprime(1024n, cat(hh, cat(le32(0n), le32(l)))))
314      +b1 = block_of(hprime(1024n, cat(hh, cat(le32(1n), le32(l)))))
315      init_go(rest, Nat.add(l, 1n), q, hh, M.set(Nat.add(Nat.mul(l, q), 1n), b1, M.set(Nat.mul(l, q), b0, a)))

Uses (11)

Used by (5)