INNER CODE UNIT · C

m0

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

        aes_block_t m0 = operation == AEGIS_BULK_STREAM ? vmovq_n_u8(0) : AES_BLOCK_LOAD(src + i);
        aes_block_t m1 =
            operation == AEGIS_BULK_STREAM ? vmovq_n_u8(0) : AES_BLOCK_LOAD(src + i + 16);

        for (j = 0; j < 8; j++) {
            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]);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…