mirror of https://github.com/xemu-project/xemu.git
crypto: Add aesdec_ISB_ISR_AK_IMC
Add a primitive for InvSubBytes + InvShiftRows + AddRoundKey + InvMixColumns. Acked-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
15ff15982a
commit
28e91474ce
14
crypto/aes.c
14
crypto/aes.c
|
@ -1542,6 +1542,20 @@ void aesdec_ISB_ISR_IMC_AK_genrev(AESState *r, const AESState *st,
|
||||||
aesdec_ISB_ISR_IMC_AK_swap(r, st, rk, true);
|
aesdec_ISB_ISR_IMC_AK_swap(r, st, rk, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void aesdec_ISB_ISR_AK_IMC_gen(AESState *ret, const AESState *st,
|
||||||
|
const AESState *rk)
|
||||||
|
{
|
||||||
|
aesdec_ISB_ISR_AK_gen(ret, st, rk);
|
||||||
|
aesdec_IMC_gen(ret, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
void aesdec_ISB_ISR_AK_IMC_genrev(AESState *ret, const AESState *st,
|
||||||
|
const AESState *rk)
|
||||||
|
{
|
||||||
|
aesdec_ISB_ISR_AK_genrev(ret, st, rk);
|
||||||
|
aesdec_IMC_genrev(ret, ret);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Expand the cipher key into the encryption key schedule.
|
* Expand the cipher key into the encryption key schedule.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -23,6 +23,9 @@ void aesdec_IMC_accel(AESState *, const AESState *, bool)
|
||||||
void aesdec_ISB_ISR_AK_accel(AESState *, const AESState *,
|
void aesdec_ISB_ISR_AK_accel(AESState *, const AESState *,
|
||||||
const AESState *, bool)
|
const AESState *, bool)
|
||||||
QEMU_ERROR("unsupported accel");
|
QEMU_ERROR("unsupported accel");
|
||||||
|
void aesdec_ISB_ISR_AK_IMC_accel(AESState *, const AESState *,
|
||||||
|
const AESState *, bool)
|
||||||
|
QEMU_ERROR("unsupported accel");
|
||||||
void aesdec_ISB_ISR_IMC_AK_accel(AESState *, const AESState *,
|
void aesdec_ISB_ISR_IMC_AK_accel(AESState *, const AESState *,
|
||||||
const AESState *, bool)
|
const AESState *, bool)
|
||||||
QEMU_ERROR("unsupported accel");
|
QEMU_ERROR("unsupported accel");
|
||||||
|
|
|
@ -119,6 +119,27 @@ static inline void aesdec_ISB_ISR_AK(AESState *r, const AESState *st,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Perform InvSubBytes + InvShiftRows + AddRoundKey + InvMixColumns.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void aesdec_ISB_ISR_AK_IMC_gen(AESState *ret, const AESState *st,
|
||||||
|
const AESState *rk);
|
||||||
|
void aesdec_ISB_ISR_AK_IMC_genrev(AESState *ret, const AESState *st,
|
||||||
|
const AESState *rk);
|
||||||
|
|
||||||
|
static inline void aesdec_ISB_ISR_AK_IMC(AESState *r, const AESState *st,
|
||||||
|
const AESState *rk, bool be)
|
||||||
|
{
|
||||||
|
if (HAVE_AES_ACCEL) {
|
||||||
|
aesdec_ISB_ISR_AK_IMC_accel(r, st, rk, be);
|
||||||
|
} else if (HOST_BIG_ENDIAN == be) {
|
||||||
|
aesdec_ISB_ISR_AK_IMC_gen(r, st, rk);
|
||||||
|
} else {
|
||||||
|
aesdec_ISB_ISR_AK_IMC_genrev(r, st, rk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform InvSubBytes + InvShiftRows + InvMixColumns + AddRoundKey.
|
* Perform InvSubBytes + InvShiftRows + InvMixColumns + AddRoundKey.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue