INNER CODE UNIT · C

full

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

    const size_t   full         = len - len % 32;
    const unsigned split        = operation == AEGIS_BULK_ABSORB    ? 0xff
                                  : operation == AEGIS_BULK_DECRYPT ? 0x77
                                                                    : 0;
    const int      complemented = operation != AEGIS_BULK_ABSORB;
    aes_block_t    x[8], y[8], r[8];
    size_t         i, j;

    if (full < 256) {
        return 0;
    }
    for (j = 0; j < 8; j++) {
        x[j] = complemented && (j == 3 || j == 7) ? vmvnq_u8(state[j]) : state[j];
        y[j] = vmovq_n_u8(0);
    }
    CRYPTO_ALIGN_LOOP(32)
    for (i = 0; i < full; i += 32) {
        aes_block_t m0 = operation == AEGIS_BULK_STREAM ? vmovq_n_u8(0) : AES_BLOCK_LOAD(src + i);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…