This is something I spotted while working on AES in various modes for ARM and arm64. The mac80211 aes_cmac code reimplements the CMAC algorithm based on the core AES cipher, which is rather restrictive in how platforms can satisfy the dependency on this algorithm. For instance, SIMD implementations may have a considerable setup time, which cannot be amortized over the entire input when calling into the crypto API one block at a time. Also, it prevents the use of more secure fixed time implementations, since not all AES drivers expose the cipher interface. So switch aes_cmac to use a cmac(aes) shash. Before updating the aes_cmac code in patch #2, the FILS AEAD code is moved to using a cmac(aes) shash supplied by the crypto API so that we can remove the open coded version entirely in the second patch. v3: - use more idiomatic SHASH_DESC_ON_STACK to allocate the shash descriptors - replace compound literal zero vectors with explicitly defined ones - drop a redundant memcpy() in #2 Ard Biesheuvel (2): mac80211: fils_aead: Use crypto api CMAC shash rather than bare cipher mac80211: aes-cmac: switch to shash CMAC driver net/mac80211/Kconfig | 1 + net/mac80211/aes_cmac.c | 126 ++++---------------- net/mac80211/aes_cmac.h | 15 +-- net/mac80211/fils_aead.c | 74 +++++------- net/mac80211/key.h | 2 +- 5 files changed, 66 insertions(+), 152 deletions(-) -- 2.7.4