INNER CODE UNIT · Rust

xor_block

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

fn xor_block(dst: &mut Block, src: &Block) {
    for i in 0..(dst.v.len()) {
        dst.v[i] ^= src.v[i];
    }
}

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[..])?;

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…