Lines Matching full:aad

315  * Calculate AAD for CCMP/GCMP, returning qos_tid since we
318 static u8 ccmp_gcmp_aad(struct sk_buff *skb, u8 *aad, bool spp_amsdu) in ccmp_gcmp_aad() argument
357 /* AAD (extra authenticate-only data) / masked 802.11 header in ccmp_gcmp_aad()
359 put_unaligned_be16(len_a, &aad[0]); in ccmp_gcmp_aad()
360 put_unaligned(mask_fc, (__le16 *)&aad[2]); in ccmp_gcmp_aad()
361 memcpy(&aad[4], &hdr->addrs, 3 * ETH_ALEN); in ccmp_gcmp_aad()
364 aad[22] = *((u8 *) &hdr->seq_ctrl) & 0x0f; in ccmp_gcmp_aad()
365 aad[23] = 0; in ccmp_gcmp_aad()
368 memcpy(&aad[24], hdr->addr4, ETH_ALEN); in ccmp_gcmp_aad()
369 aad[30] = qos_tid; in ccmp_gcmp_aad()
370 aad[31] = 0; in ccmp_gcmp_aad()
372 memset(&aad[24], 0, ETH_ALEN + IEEE80211_QOS_CTL_LEN); in ccmp_gcmp_aad()
373 aad[24] = qos_tid; in ccmp_gcmp_aad()
379 static void ccmp_special_blocks(struct sk_buff *skb, u8 *pn, u8 *b_0, u8 *aad, in ccmp_special_blocks() argument
383 u8 qos_tid = ccmp_gcmp_aad(skb, aad, spp_amsdu); in ccmp_special_blocks()
436 u8 aad[CCM_AAD_LEN]; in ccmp_encrypt_skb() local
490 ccmp_special_blocks(skb, pn, b_0, aad, in ccmp_encrypt_skb()
492 return ieee80211_aes_ccm_encrypt(key->u.ccmp.tfm, b_0, aad, pos, len, in ccmp_encrypt_skb()
566 u8 aad[2 * AES_BLOCK_SIZE]; in ieee80211_crypto_ccmp_decrypt() local
569 ccmp_special_blocks(skb, pn, b_0, aad, in ieee80211_crypto_ccmp_decrypt()
573 key->u.ccmp.tfm, b_0, aad, in ieee80211_crypto_ccmp_decrypt()
594 static void gcmp_special_blocks(struct sk_buff *skb, u8 *pn, u8 *j_0, u8 *aad, in gcmp_special_blocks() argument
602 ccmp_gcmp_aad(skb, aad, spp_amsdu); in gcmp_special_blocks()
636 u8 aad[GCM_AAD_LEN]; in gcmp_encrypt_skb() local
691 gcmp_special_blocks(skb, pn, j_0, aad, in gcmp_encrypt_skb()
693 return ieee80211_aes_gcm_encrypt(key->u.gcmp.tfm, j_0, aad, pos, len, in gcmp_encrypt_skb()
762 u8 aad[2 * AES_BLOCK_SIZE]; in ieee80211_crypto_gcmp_decrypt() local
765 gcmp_special_blocks(skb, pn, j_0, aad, in ieee80211_crypto_gcmp_decrypt()
769 key->u.gcmp.tfm, j_0, aad, in ieee80211_crypto_gcmp_decrypt()
791 static void bip_aad(struct sk_buff *skb, u8 *aad) in bip_aad() argument
796 /* BIP AAD: FC(masked) || A1 || A2 || A3 */ in bip_aad()
803 put_unaligned(mask_fc, (__le16 *) &aad[0]); in bip_aad()
805 memcpy(aad + 2, &hdr->addrs, 3 * ETH_ALEN); in bip_aad()
837 u8 aad[20]; in ieee80211_crypto_aes_cmac_encrypt() local
867 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_encrypt()
870 * MIC = AES-128-CMAC(IGTK, AAD || Management Frame Body || MMIE, 64) in ieee80211_crypto_aes_cmac_encrypt()
872 ieee80211_aes_cmac(key->u.aes_cmac.tfm, aad, in ieee80211_crypto_aes_cmac_encrypt()
885 u8 aad[20]; in ieee80211_crypto_aes_cmac_256_encrypt() local
915 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_256_encrypt()
917 /* MIC = AES-256-CMAC(IGTK, AAD || Management Frame Body || MMIE, 128) in ieee80211_crypto_aes_cmac_256_encrypt()
919 ieee80211_aes_cmac_256(key->u.aes_cmac.tfm, aad, in ieee80211_crypto_aes_cmac_256_encrypt()
932 u8 aad[20], mic[8], ipn[6]; in ieee80211_crypto_aes_cmac_decrypt() local
958 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_decrypt()
959 ieee80211_aes_cmac(key->u.aes_cmac.tfm, aad, in ieee80211_crypto_aes_cmac_decrypt()
982 u8 aad[20], mic[16], ipn[6]; in ieee80211_crypto_aes_cmac_256_decrypt() local
1008 bip_aad(skb, aad); in ieee80211_crypto_aes_cmac_256_decrypt()
1009 ieee80211_aes_cmac_256(key->u.aes_cmac.tfm, aad, in ieee80211_crypto_aes_cmac_256_decrypt()
1033 u8 aad[GMAC_AAD_LEN]; in ieee80211_crypto_aes_gmac_encrypt() local
1064 bip_aad(skb, aad); in ieee80211_crypto_aes_gmac_encrypt()
1070 /* MIC = AES-GMAC(IGTK, AAD || Management Frame Body || MMIE, 128) */ in ieee80211_crypto_aes_gmac_encrypt()
1071 if (ieee80211_aes_gmac(key->u.aes_gmac.tfm, aad, nonce, in ieee80211_crypto_aes_gmac_encrypt()
1085 u8 aad[GMAC_AAD_LEN], *mic, ipn[6], nonce[GMAC_NONCE_LEN]; in ieee80211_crypto_aes_gmac_decrypt() local
1111 bip_aad(skb, aad); in ieee80211_crypto_aes_gmac_decrypt()
1119 if (ieee80211_aes_gmac(key->u.aes_gmac.tfm, aad, nonce, in ieee80211_crypto_aes_gmac_decrypt()