aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorAssaf Krauss <assaf.krauss@intel.com>2012-08-01 08:12:48 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-10-23 13:52:52 -0400
commit5d0d04e477c44993f995f35b728ce9dd57a4615e (patch)
tree4f6ce81d78efc9f139ec25bc9f3c56a193d88ec2 /net/mac80211
parent9a90bc81914ee77edcd6eb7e881639b7f7bf1667 (diff)
mac80211: expose AES-CMAC subkey calculation
Expose a function for the AES-CMAC subkey calculation to drivers. This is the first step of the AES-CMAC cipher key setup and may be required for CMAC hardware offloading. Signed-off-by: Assaf Krauss <assaf.krauss@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/aes_cmac.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/net/mac80211/aes_cmac.c b/net/mac80211/aes_cmac.c
index a04752e91023..493353534a0f 100644
--- a/net/mac80211/aes_cmac.c
+++ b/net/mac80211/aes_cmac.c
@@ -126,3 +126,20 @@ void ieee80211_aes_cmac_key_free(struct crypto_cipher *tfm)
126{ 126{
127 crypto_free_cipher(tfm); 127 crypto_free_cipher(tfm);
128} 128}
129
130void ieee80211_aes_cmac_calculate_k1_k2(struct ieee80211_key_conf *keyconf,
131 u8 *k1, u8 *k2)
132{
133 u8 l[AES_BLOCK_SIZE] = {};
134 struct ieee80211_key *key =
135 container_of(keyconf, struct ieee80211_key, conf);
136
137 crypto_cipher_encrypt_one(key->u.aes_cmac.tfm, l, l);
138
139 memcpy(k1, l, AES_BLOCK_SIZE);
140 gf_mulx(k1);
141
142 memcpy(k2, k1, AES_BLOCK_SIZE);
143 gf_mulx(k2);
144}
145EXPORT_SYMBOL(ieee80211_aes_cmac_calculate_k1_k2);