INNER CODE UNIT · Rust
argon2_fill_first_blocks
brndnmtthws/dryoc · src/argon2/mod.rs:731
fn argon2_fill_first_blocks(
mut blockhash: Zeroizing<[u8; ARGON2_PREHASH_SEED_LENGTH]>,
instance: &mut Argon2Instance,
) -> Result<(), Error> {
let mut blockhash_bytes = Zeroizing::new([0u8; ARGON2_BLOCK_SIZE]);
for l in 0..instance.lanes {
blockhash[ARGON2_PREHASH_DIGEST_LENGTH..(ARGON2_PREHASH_DIGEST_LENGTH + 4)]
.copy_from_slice(&[0, 0, 0, 0]);
blockhash[(ARGON2_PREHASH_DIGEST_LENGTH + 4)..(ARGON2_PREHASH_DIGEST_LENGTH + 8)]
.copy_from_slice(&l.to_le_bytes());
blake2b::longhash(&mut blockhash_bytes[..], &blockhash[..])?;
load_block(
&mut instance.region.memory[(l * instance.lane_length) as usize],
&blockhash_bytes[..],
);