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# H^nn(bs): BLAKE2b with an nn-byte digest, 1 <= nn <= 64: the first nn bytes
102# of h after the dd = max(1, ceil(ll / 128)) blocks.
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)

Uses (15)

Used by (7)