@@ -754,10 +754,23 @@ bool handshake_state_get_pmkid(struct handshake_state *s, uint8_t *out_pmkid)
* preauthentication, the AKM has not yet been negotiated. In this
* case, the HMAC-SHA1-128 based derivation is used for the PMKID
* calculation."
+ *
+ * 802.11-2020 Table 9-151 defines the hashing algorithm to use
+ * for various AKM's. SHA256 should be used for the following
+ * AKM's (for this API context):
+ *
+ * 00-0F-AC:3 (FT-8021X)
+ * 00-0F-AC:4 (FT-PSK)
+ * 00-0F-AC:5 (8021X-SHA256)
+ * 00-0F-AC:6 (PSK-SHA256)
+ *
+ * (Note SAE/FILS were left out as they generate their own PMKID)
*/
if (s->akm_suite & (IE_RSN_AKM_SUITE_8021X_SHA256 |
- IE_RSN_AKM_SUITE_PSK_SHA256))
+ IE_RSN_AKM_SUITE_PSK_SHA256 |
+ IE_RSN_AKM_SUITE_FT_OVER_8021X |
+ IE_RSN_AKM_SUITE_FT_USING_PSK))
sha = L_CHECKSUM_SHA256;
else
sha = L_CHECKSUM_SHA1;