INNER CODE UNIT · Rust

argon2_finalize

brndnmtthws/dryoc · src/argon2/mod.rs:418

fn argon2_finalize(context: Argon2Context, instance: Argon2Instance) -> Result<(), Error> {
    let mut blockhash = Block::default();
    copy_block(
        &mut blockhash,
        &instance.region.memory[instance.lane_length.wrapping_sub(1) as usize],
    );

    /* XOR the last blocks */
    for l in 1..instance.lanes {
        let last_block_in_lane = (l * instance.lane_length + (instance.lane_length - 1)) as usize;
        xor_block(&mut blockhash, &instance.region.memory[last_block_in_lane]);
    }

    let mut blockhash_bytes = Zeroizing::new([0u8; ARGON2_BLOCK_SIZE]);
    store_block(&mut blockhash_bytes[..], &blockhash);
    blake2b::longhash(context.output, &blockhash_bytes[..])
}

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…