mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-19 01:42:33 +01:00
ie: introduce IE_AKM_IS_SAE macro
To prepare for FT over SAE, several case/if statements needed to include IE_RSN_AKM_SUITE_FT_OVER_SAE. Also a new macro was introduced to remove duplicate if statement code checking for both FT_OVER_SAE and SAE AKM's.
This commit is contained in:
parent
6b1c716324
commit
8064cb599a
@ -81,6 +81,7 @@ bool eapol_calculate_mic(enum ie_rsn_akm_suite akm, const uint8_t *kck,
|
|||||||
case EAPOL_KEY_DESCRIPTOR_VERSION_AKM_DEFINED:
|
case EAPOL_KEY_DESCRIPTOR_VERSION_AKM_DEFINED:
|
||||||
switch (akm) {
|
switch (akm) {
|
||||||
case IE_RSN_AKM_SUITE_SAE_SHA256:
|
case IE_RSN_AKM_SUITE_SAE_SHA256:
|
||||||
|
case IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256:
|
||||||
return cmac_aes(kck, 16, frame, frame_len, mic, 16);
|
return cmac_aes(kck, 16, frame, frame_len, mic, 16);
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@ -123,6 +124,7 @@ bool eapol_verify_mic(enum ie_rsn_akm_suite akm, const uint8_t *kck,
|
|||||||
case EAPOL_KEY_DESCRIPTOR_VERSION_AKM_DEFINED:
|
case EAPOL_KEY_DESCRIPTOR_VERSION_AKM_DEFINED:
|
||||||
switch (akm) {
|
switch (akm) {
|
||||||
case IE_RSN_AKM_SUITE_SAE_SHA256:
|
case IE_RSN_AKM_SUITE_SAE_SHA256:
|
||||||
|
case IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256:
|
||||||
checksum = l_checksum_new_cmac_aes(kck, 16);
|
checksum = l_checksum_new_cmac_aes(kck, 16);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -167,7 +169,7 @@ uint8_t *eapol_decrypt_key_data(enum ie_rsn_akm_suite akm, const uint8_t *kek,
|
|||||||
* type this will need to be expanded to handle the AKM types in
|
* type this will need to be expanded to handle the AKM types in
|
||||||
* its own switch.
|
* its own switch.
|
||||||
*/
|
*/
|
||||||
if (akm != IE_RSN_AKM_SUITE_SAE_SHA256)
|
if (!IE_AKM_IS_SAE(akm))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Fall through */
|
/* Fall through */
|
||||||
|
4
src/ie.h
4
src/ie.h
@ -252,6 +252,10 @@ enum ie_rsn_akm_suite {
|
|||||||
IE_RSN_AKM_SUITE_FT_OVER_8021X_SHA384 = 0x1000,
|
IE_RSN_AKM_SUITE_FT_OVER_8021X_SHA384 = 0x1000,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define IE_AKM_IS_SAE(akm) \
|
||||||
|
((akm == IE_RSN_AKM_SUITE_SAE_SHA256) || \
|
||||||
|
(akm == IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256))
|
||||||
|
|
||||||
struct ie_tlv_iter {
|
struct ie_tlv_iter {
|
||||||
unsigned int max;
|
unsigned int max;
|
||||||
unsigned int pos;
|
unsigned int pos;
|
||||||
|
@ -2510,7 +2510,7 @@ int netdev_connect(struct netdev *netdev, struct scan_bss *bss,
|
|||||||
if (netdev->connected)
|
if (netdev->connected)
|
||||||
return -EISCONN;
|
return -EISCONN;
|
||||||
|
|
||||||
if (hs->akm_suite == IE_RSN_AKM_SUITE_SAE_SHA256) {
|
if (IE_AKM_IS_SAE(hs->akm_suite)) {
|
||||||
netdev->sae_sm = sae_sm_new(hs, netdev_tx_sae_frame,
|
netdev->sae_sm = sae_sm_new(hs, netdev_tx_sae_frame,
|
||||||
netdev_sae_complete, netdev);
|
netdev_sae_complete, netdev);
|
||||||
} else {
|
} else {
|
||||||
|
@ -380,6 +380,9 @@ static enum ie_rsn_akm_suite select_akm_suite(struct network *network,
|
|||||||
if (info->akm_suites & IE_RSN_AKM_SUITE_8021X)
|
if (info->akm_suites & IE_RSN_AKM_SUITE_8021X)
|
||||||
return IE_RSN_AKM_SUITE_8021X;
|
return IE_RSN_AKM_SUITE_8021X;
|
||||||
} else if (security == SECURITY_PSK) {
|
} else if (security == SECURITY_PSK) {
|
||||||
|
if (info->akm_suites & IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256)
|
||||||
|
return IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256;
|
||||||
|
|
||||||
if (info->akm_suites & IE_RSN_AKM_SUITE_SAE_SHA256)
|
if (info->akm_suites & IE_RSN_AKM_SUITE_SAE_SHA256)
|
||||||
return IE_RSN_AKM_SUITE_SAE_SHA256;
|
return IE_RSN_AKM_SUITE_SAE_SHA256;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user