OSDN Git Service

target/riscv: Use existing lookup tables for MixColumns
authorArd Biesheuvel <ardb@kernel.org>
Mon, 31 Jul 2023 08:40:43 +0000 (10:40 +0200)
committerAlistair Francis <alistair.francis@wdc.com>
Mon, 11 Sep 2023 01:45:54 +0000 (11:45 +1000)
commit9ea17007c4ae4420ccd917eb300c7db49483a5b8
tree9c207d8afbb2d7e1936b02f29b692b78d65defd6
parent4cc9f284d5971ecd8055d26ef74c23ef0be8b8f5
target/riscv: Use existing lookup tables for MixColumns

The AES MixColumns and InvMixColumns operations are relatively
expensive 4x4 matrix multiplications in GF(2^8), which is why C
implementations usually rely on precomputed lookup tables rather than
performing the calculations on demand.

Given that we already carry those tables in QEMU, we can just grab the
right value in the implementation of the RISC-V AES32 instructions. Note
that the tables in question are permuted according to the respective
Sbox, so we can omit the Sbox lookup as well in this case.

Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Philippe Mathieu-Daudé <philmd@linaro.org>
Cc: Zewen Ye <lustrew@foxmail.com>
Cc: Weiwei Li <liweiwei@iscas.ac.cn>
Cc: Junqiang Wang <wangjunqiang@iscas.ac.cn>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20230731084043.1791984-1-ardb@kernel.org>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
crypto/aes.c
include/crypto/aes.h
target/riscv/crypto_helper.c