INNER CODE UNIT · C

prev

aegis-aead/libaegis · src/aegis128l/aegis128l_neon_sha3.c:93

            const size_t prev = (j + 7) % 8;

            if (complemented && (prev == 3 || prev == 7)) {
                r[j] = vaesmcq_u8(vaeseq_u8(x[prev], vmovq_n_u8(255)));
            } else if (split & (1U << prev)) {
                r[j] = vaesmcq_u8(vaeseq_u8(x[prev], y[prev]));
            } else {
                r[j] = vaesmcq_u8(vaeseq_u8(vmovq_n_u8(0), x[prev]));
            }
        }
        for (j = 0; j < 8; j++) {
            if (split & (1U << j)) {
                x[j] = AES_BLOCK_XOR(x[j], y[j]);
            }
        }
        if (operation != AEGIS_BULK_ABSORB) {
            aes_block_t z0 = vbcaxq_u8(AES_BLOCK_XOR3(m0, x[6], x[1]), x[2], x[3]);
            aes_block_t z1 = vbcaxq_u8(AES_BLOCK_XOR3(m1, x[5], x[2]), x[6], x[7]);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…