Lines Matching full:aad
989 * @brief Calculate the AAD required for this frame for AES-GCM/AES-CCM.
991 * The contents are described in 802.11-2020 12.5.3.3.3 (Construct AAD)
993 * (Construct AAD) (AES-GCM).
1011 * @param wh 802.11 frame to calculate the AAD over
1012 * @param aad AAD (additional authentication data) buffer
1013 * @param len The AAD buffer length in bytes.
1014 * @returns The number of AAD payload bytes (ignoring the first two
1015 * bytes, which are the AAD payload length in big-endian).
1018 ieee80211_crypto_init_aad(const struct ieee80211_frame *wh, uint8_t *aad, in ieee80211_crypto_init_aad() argument
1023 memset(aad, 0, len); in ieee80211_crypto_init_aad()
1026 * AAD for PV0 MPDUs: in ieee80211_crypto_init_aad()
1034 aad[0] = 0; /* AAD length >> 8 */ in ieee80211_crypto_init_aad()
1035 /* NB: aad[1] set below */ in ieee80211_crypto_init_aad()
1036 aad[2] = wh->i_fc[0] & 0x8f; /* see above for bitfields */ in ieee80211_crypto_init_aad()
1037 aad[3] = wh->i_fc[1] & 0xc7; /* see above for bitfields */ in ieee80211_crypto_init_aad()
1038 /* mask aad[3] b7 if frame is data frame w/ QoS control field */ in ieee80211_crypto_init_aad()
1040 aad[3] &= 0x7f; in ieee80211_crypto_init_aad()
1043 memcpy(aad + 4, wh->i_addr1, 3 * IEEE80211_ADDR_LEN); in ieee80211_crypto_init_aad()
1044 aad[22] = wh->i_seq[0] & IEEE80211_SEQ_FRAG_MASK; in ieee80211_crypto_init_aad()
1045 aad[23] = 0; /* all bits masked */ in ieee80211_crypto_init_aad()
1047 * Construct variable-length portion of AAD based in ieee80211_crypto_init_aad()
1053 IEEE80211_ADDR_COPY(aad + 24, in ieee80211_crypto_init_aad()
1059 aad[30] = qwh4->i_qos[0] & 0x0f;/* just priority bits */ in ieee80211_crypto_init_aad()
1060 aad[31] = 0; in ieee80211_crypto_init_aad()
1061 aad_len = aad[1] = 22 + IEEE80211_ADDR_LEN + 2; in ieee80211_crypto_init_aad()
1063 *(uint16_t *)&aad[30] = 0; in ieee80211_crypto_init_aad()
1064 aad_len = aad[1] = 22 + IEEE80211_ADDR_LEN; in ieee80211_crypto_init_aad()
1071 aad[24] = qwh->i_qos[0] & 0x0f; /* just priority bits */ in ieee80211_crypto_init_aad()
1072 aad[25] = 0; in ieee80211_crypto_init_aad()
1073 aad_len = aad[1] = 22 + 2; in ieee80211_crypto_init_aad()
1075 *(uint16_t *)&aad[24] = 0; in ieee80211_crypto_init_aad()
1076 aad_len = aad[1] = 22; in ieee80211_crypto_init_aad()
1078 *(uint16_t *)&aad[26] = 0; in ieee80211_crypto_init_aad()
1079 *(uint32_t *)&aad[28] = 0; in ieee80211_crypto_init_aad()