def hash
bend-collections-laws-crypto@1.0.0.0 · spec/crypto/argon2/argon2.bend:101
import bend-collections-laws-crypto@1.0.0.0/spec/crypto/argon2/argon2.bend as Argon2
import Base
import bend-collections-laws-crypto@1.0.0.0/src/crypto/blake/blake2b/types.bend as T
import bend-collections-laws-crypto@1.0.0.0/spec/crypto/blake/blake2b.bend as B
101
102
103def hash(+nn: Nat, +bs: List<&2, U32>) -> List<&2, U32>:
104 +ll = List.length(&2, U32, bs)
105 +n = Nat.div(Nat.sub(ll, 1n), 128n)
106 List.take(&2, U32, chain_bytes(B.blocks(n, 0, Nat.sub(ll, Nat.mul(n, 128n)), T.C{0, 0, 0, 0}, (pack(bs), initial(U32.from_nat(nn))))), nn)