diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2017-02-06 10:49:27 +0000 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2017-02-08 09:19:17 +0100 |
commit | fe8de3da13bdbcbe8b583a3bbadf677da0f04f83 (patch) | |
tree | b57055b47f24bf61bab71eed776f258974d6b6f4 /net/mac80211/aes_cmac.h | |
parent | b699b71d82e77203be43bda5ff1b72516f129581 (diff) | |
download | op-kernel-dev-fe8de3da13bdbcbe8b583a3bbadf677da0f04f83.zip op-kernel-dev-fe8de3da13bdbcbe8b583a3bbadf677da0f04f83.tar.gz |
mac80211: fils_aead: Use crypto api CMAC shash rather than bare cipher
Switch the FILS AEAD code to use a cmac(aes) shash instantiated by the
crypto API rather than reusing the open coded implementation in
aes_cmac_vector(). This makes the code more understandable, and allows
platforms to implement cmac(aes) in a more secure (*) and efficient way
than is typically possible when using the AES cipher directly.
So replace the crypto_cipher by a crypto_shash, and update the aes_s2v()
routine to call the shash interface directly.
* In particular, the generic table based AES implementation is sensitive
to known-plaintext timing attacks on the key, to which AES based MAC
algorithms are especially vulnerable, given that their plaintext is not
usually secret. Time invariant alternatives are available (e.g., based
on SIMD algorithms), but may incur a setup cost that is prohibitive when
operating on a single block at a time, which is why they don't usually
expose the cipher API.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/aes_cmac.h')
-rw-r--r-- | net/mac80211/aes_cmac.h | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/net/mac80211/aes_cmac.h b/net/mac80211/aes_cmac.h index c827e1d..3702041 100644 --- a/net/mac80211/aes_cmac.h +++ b/net/mac80211/aes_cmac.h @@ -11,10 +11,6 @@ #include <linux/crypto.h> -void gf_mulx(u8 *pad); -void aes_cmac_vector(struct crypto_cipher *tfm, size_t num_elem, - const u8 *addr[], const size_t *len, u8 *mac, - size_t mac_len); struct crypto_cipher *ieee80211_aes_cmac_key_setup(const u8 key[], size_t key_len); void ieee80211_aes_cmac(struct crypto_cipher *tfm, const u8 *aad, |