|
16 | 16 | #include <asm/unaligned.h> |
17 | 17 | #include <net/mac80211.h> |
18 | 18 | #include <crypto/aes.h> |
| 19 | +#include <crypto/algapi.h> |
19 | 20 |
|
20 | 21 | #include "ieee80211_i.h" |
21 | 22 | #include "michael.h" |
@@ -152,7 +153,7 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_rx_data *rx) |
152 | 153 | data_len = skb->len - hdrlen - MICHAEL_MIC_LEN; |
153 | 154 | key = &rx->key->conf.key[NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY]; |
154 | 155 | michael_mic(key, hdr, data, data_len, mic); |
155 | | - if (memcmp(mic, data + data_len, MICHAEL_MIC_LEN) != 0) |
| 156 | + if (crypto_memneq(mic, data + data_len, MICHAEL_MIC_LEN)) |
156 | 157 | goto mic_fail; |
157 | 158 |
|
158 | 159 | /* remove Michael MIC from payload */ |
@@ -1044,7 +1045,7 @@ ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx) |
1044 | 1045 | bip_aad(skb, aad); |
1045 | 1046 | ieee80211_aes_cmac(key->u.aes_cmac.tfm, aad, |
1046 | 1047 | skb->data + 24, skb->len - 24, mic); |
1047 | | - if (memcmp(mic, mmie->mic, sizeof(mmie->mic)) != 0) { |
| 1048 | + if (crypto_memneq(mic, mmie->mic, sizeof(mmie->mic))) { |
1048 | 1049 | key->u.aes_cmac.icverrors++; |
1049 | 1050 | return RX_DROP_UNUSABLE; |
1050 | 1051 | } |
@@ -1094,7 +1095,7 @@ ieee80211_crypto_aes_cmac_256_decrypt(struct ieee80211_rx_data *rx) |
1094 | 1095 | bip_aad(skb, aad); |
1095 | 1096 | ieee80211_aes_cmac_256(key->u.aes_cmac.tfm, aad, |
1096 | 1097 | skb->data + 24, skb->len - 24, mic); |
1097 | | - if (memcmp(mic, mmie->mic, sizeof(mmie->mic)) != 0) { |
| 1098 | + if (crypto_memneq(mic, mmie->mic, sizeof(mmie->mic))) { |
1098 | 1099 | key->u.aes_cmac.icverrors++; |
1099 | 1100 | return RX_DROP_UNUSABLE; |
1100 | 1101 | } |
@@ -1198,7 +1199,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct ieee80211_rx_data *rx) |
1198 | 1199 | if (ieee80211_aes_gmac(key->u.aes_gmac.tfm, aad, nonce, |
1199 | 1200 | skb->data + 24, skb->len - 24, |
1200 | 1201 | mic) < 0 || |
1201 | | - memcmp(mic, mmie->mic, sizeof(mmie->mic)) != 0) { |
| 1202 | + crypto_memneq(mic, mmie->mic, sizeof(mmie->mic))) { |
1202 | 1203 | key->u.aes_gmac.icverrors++; |
1203 | 1204 | return RX_DROP_UNUSABLE; |
1204 | 1205 | } |
|
0 commit comments