diff --git a/src/crypto.h b/src/crypto.h index e19c4665..7b97e25b 100644 --- a/src/crypto.h +++ b/src/crypto.h @@ -41,6 +41,10 @@ enum crypto_akm { CRYPTO_AKM_TDLS = 0x000fac07, CRYPTO_AKM_SAE_SHA256 = 0x000fac08, CRYPTO_AKM_FT_OVER_SAE_SHA256 = 0x000fac09, + CRYPTO_AKM_AP_PEER_KEY_SHA256 = 0x000fac0a, + CRYPTO_AKM_8021X_SUITE_B_SHA256 = 0x000fac0b, + CRYPTO_AKM_8021X_SUITE_B_SHA384 = 0x000fac0c, + CRYPTO_AKM_FT_OVER_8021X_SHA384 = 0x000fac0d, }; /* Min & Max reported by crypto_cipher_key_len when ignoring WEP */ diff --git a/src/ie.c b/src/ie.c index d5477d62..f0166f05 100644 --- a/src/ie.c +++ b/src/ie.c @@ -447,6 +447,18 @@ static int ie_parse_akm_suite(const uint8_t *data, case 9: *out = IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256; return 0; + case 10: + *out = IE_RSN_AKM_SUITE_AP_PEER_KEY_SHA256; + return 0; + case 11: + *out = IE_RSN_AKM_SUITE_8021X_SUITE_B_SHA256; + return 0; + case 12: + *out = IE_RSN_AKM_SUITE_8021X_SUITE_B_SHA384; + return 0; + case 13: + *out = IE_RSN_AKM_SUITE_FT_OVER_8021X_SHA384; + return 0; default: return -ENOENT; } @@ -779,6 +791,14 @@ static bool ie_build_rsn_akm_suite(uint8_t *data, enum ie_rsn_akm_suite suite) RETURN_AKM(data, ieee_oui, 8); case IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256: RETURN_AKM(data, ieee_oui, 9); + case IE_RSN_AKM_SUITE_AP_PEER_KEY_SHA256: + RETURN_AKM(data, ieee_oui, 10); + case IE_RSN_AKM_SUITE_8021X_SUITE_B_SHA256: + RETURN_AKM(data, ieee_oui, 11); + case IE_RSN_AKM_SUITE_8021X_SUITE_B_SHA384: + RETURN_AKM(data, ieee_oui, 12); + case IE_RSN_AKM_SUITE_FT_OVER_8021X_SHA384: + RETURN_AKM(data, ieee_oui, 13); } return false; diff --git a/src/ie.h b/src/ie.h index ac55e3d9..72974a26 100644 --- a/src/ie.h +++ b/src/ie.h @@ -246,6 +246,10 @@ enum ie_rsn_akm_suite { IE_RSN_AKM_SUITE_TDLS = 0x0040, IE_RSN_AKM_SUITE_SAE_SHA256 = 0x0080, IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256 = 0x0100, + IE_RSN_AKM_SUITE_AP_PEER_KEY_SHA256 = 0x0200, + IE_RSN_AKM_SUITE_8021X_SUITE_B_SHA256 = 0x0400, + IE_RSN_AKM_SUITE_8021X_SUITE_B_SHA384 = 0x0800, + IE_RSN_AKM_SUITE_FT_OVER_8021X_SHA384 = 0x1000, }; struct ie_tlv_iter { diff --git a/src/netdev.c b/src/netdev.c index 9f008e4e..f33b0768 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -2173,6 +2173,14 @@ static unsigned int ie_rsn_akm_suite_to_nl80211(enum ie_rsn_akm_suite akm) return CRYPTO_AKM_SAE_SHA256; case IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256: return CRYPTO_AKM_FT_OVER_SAE_SHA256; + case IE_RSN_AKM_SUITE_AP_PEER_KEY_SHA256: + return CRYPTO_AKM_AP_PEER_KEY_SHA256; + case IE_RSN_AKM_SUITE_8021X_SUITE_B_SHA256: + return CRYPTO_AKM_8021X_SUITE_B_SHA256; + case IE_RSN_AKM_SUITE_8021X_SUITE_B_SHA384: + return CRYPTO_AKM_8021X_SUITE_B_SHA384; + case IE_RSN_AKM_SUITE_FT_OVER_8021X_SHA384: + return CRYPTO_AKM_FT_OVER_8021X_SHA384; } return 0;