diff options
author | Assaf Krauss <assaf.krauss@intel.com> | 2012-08-01 08:12:48 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-10-23 13:52:52 -0400 |
commit | 5d0d04e477c44993f995f35b728ce9dd57a4615e (patch) | |
tree | 4f6ce81d78efc9f139ec25bc9f3c56a193d88ec2 /net/mac80211 | |
parent | 9a90bc81914ee77edcd6eb7e881639b7f7bf1667 (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.c | 17 |
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 | |||
130 | void 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 | } | ||
145 | EXPORT_SYMBOL(ieee80211_aes_cmac_calculate_k1_k2); | ||