qcacmn: Correct keymgmt append order in rsnie
Correct keymgmt addition order in rsnie to match with hostapd order of addition. Added support to add new keymgmt values in rsnie. Change-Id: Ib96ed6b3986f6dd45ab8f926e7a4e4415aed507d CRs-Fixed: 2302389
This commit is contained in:

committed by
nshrivas

parent
d652f8ffde
commit
6e0a63ce63
@@ -47,6 +47,14 @@ const struct wlan_crypto_cipher *wlan_crypto_cipher_ops[WLAN_CRYPTO_CIPHER_MAX];
|
|||||||
WLAN_CRYPTO_ADDSELECTOR(frm,\
|
WLAN_CRYPTO_ADDSELECTOR(frm,\
|
||||||
wlan_crypto_rsn_cipher_to_suite(cipher))
|
wlan_crypto_rsn_cipher_to_suite(cipher))
|
||||||
|
|
||||||
|
#define WPA_ADD_KEYMGMT_TO_SUITE(frm, keymgmt)\
|
||||||
|
WLAN_CRYPTO_ADDSELECTOR(frm,\
|
||||||
|
wlan_crypto_wpa_keymgmt_to_suite(keymgmt))
|
||||||
|
|
||||||
|
#define RSN_ADD_KEYMGMT_TO_SUITE(frm, keymgmt)\
|
||||||
|
WLAN_CRYPTO_ADDSELECTOR(frm,\
|
||||||
|
wlan_crypto_rsn_keymgmt_to_suite(keymgmt))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_crypto_vdev_get_crypto_params - called by mlme to get crypto params
|
* wlan_crypto_vdev_get_crypto_params - called by mlme to get crypto params
|
||||||
* @vdev:vdev
|
* @vdev:vdev
|
||||||
@@ -2360,24 +2368,16 @@ uint8_t *wlan_crypto_build_wpaie(struct wlan_objmgr_vdev *vdev,
|
|||||||
|
|
||||||
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_IEEE8021X)) {
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_IEEE8021X)) {
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
WPA_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X);
|
||||||
wlan_crypto_wpa_keymgmt_to_suite(
|
|
||||||
WLAN_CRYPTO_KEY_MGMT_IEEE8021X));
|
|
||||||
} else if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_PSK)) {
|
} else if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_PSK)) {
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
WPA_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_PSK);
|
||||||
wlan_crypto_wpa_keymgmt_to_suite(
|
|
||||||
WLAN_CRYPTO_KEY_MGMT_PSK));
|
|
||||||
} else if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_CCKM)) {
|
} else if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_CCKM)) {
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
WPA_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_CCKM);
|
||||||
wlan_crypto_wpa_keymgmt_to_suite(
|
|
||||||
WLAN_CRYPTO_KEY_MGMT_CCKM));
|
|
||||||
} else {
|
} else {
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
WPA_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_NONE);
|
||||||
wlan_crypto_wpa_keymgmt_to_suite(
|
|
||||||
WLAN_CRYPTO_KEY_MGMT_NONE));
|
|
||||||
}
|
}
|
||||||
/* calculate element length */
|
/* calculate element length */
|
||||||
iebuf[1] = frm - iebuf - 2;
|
iebuf[1] = frm - iebuf - 2;
|
||||||
@@ -2458,58 +2458,90 @@ uint8_t *wlan_crypto_build_rsnie(struct wlan_objmgr_vdev *vdev,
|
|||||||
WLAN_CRYPTO_ADDSHORT(frm, 0);
|
WLAN_CRYPTO_ADDSHORT(frm, 0);
|
||||||
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_CCKM)) {
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_CCKM)) {
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_CCKM);
|
||||||
wlan_crypto_rsn_keymgmt_to_suite(
|
/* Other key mgmt should not be added after CCKM */
|
||||||
WLAN_CRYPTO_KEY_MGMT_CCKM));
|
goto add_rsn_caps;
|
||||||
} else {
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_IEEE8021X)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X);
|
||||||
|
}
|
||||||
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_PSK)) {
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_PSK)) {
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_PSK);
|
||||||
wlan_crypto_rsn_keymgmt_to_suite(
|
|
||||||
WLAN_CRYPTO_KEY_MGMT_PSK));
|
|
||||||
}
|
}
|
||||||
if (HAS_KEY_MGMT(crypto_params,
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X)) {
|
||||||
WLAN_CRYPTO_KEY_MGMT_IEEE8021X)) {
|
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
RSN_ADD_KEYMGMT_TO_SUITE(frm,
|
||||||
wlan_crypto_rsn_keymgmt_to_suite(
|
WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X);
|
||||||
WLAN_CRYPTO_KEY_MGMT_IEEE8021X));
|
|
||||||
}
|
|
||||||
if (HAS_KEY_MGMT(crypto_params,
|
|
||||||
WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X)) {
|
|
||||||
selcnt[0]++;
|
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
|
||||||
wlan_crypto_rsn_keymgmt_to_suite(
|
|
||||||
WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X));
|
|
||||||
}
|
}
|
||||||
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_FT_PSK)) {
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_FT_PSK)) {
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_FT_PSK);
|
||||||
wlan_crypto_rsn_keymgmt_to_suite(
|
|
||||||
WLAN_CRYPTO_KEY_MGMT_FT_PSK));
|
|
||||||
}
|
}
|
||||||
if (HAS_KEY_MGMT(crypto_params,
|
if (HAS_KEY_MGMT(crypto_params,
|
||||||
WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SHA256)) {
|
WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SHA256)) {
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
RSN_ADD_KEYMGMT_TO_SUITE(frm,
|
||||||
wlan_crypto_rsn_keymgmt_to_suite(
|
WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SHA256);
|
||||||
WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SHA256));
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_PSK_SHA256)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_PSK_SHA256);
|
||||||
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_SAE)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_SAE);
|
||||||
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_FT_SAE)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_FT_SAE);
|
||||||
}
|
}
|
||||||
if (HAS_KEY_MGMT(crypto_params,
|
if (HAS_KEY_MGMT(crypto_params,
|
||||||
WLAN_CRYPTO_KEY_MGMT_PSK_SHA256)) {
|
WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B)) {
|
||||||
|
uint32_t kmgmt = WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B;
|
||||||
|
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, kmgmt);
|
||||||
wlan_crypto_rsn_keymgmt_to_suite(
|
}
|
||||||
WLAN_CRYPTO_KEY_MGMT_PSK_SHA256));
|
if (HAS_KEY_MGMT(crypto_params,
|
||||||
|
WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B_192)) {
|
||||||
|
uint32_t kmgmt = WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B_192;
|
||||||
|
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, kmgmt);
|
||||||
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256);
|
||||||
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_FILS_SHA384)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA384);
|
||||||
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA256)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm,
|
||||||
|
WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA256);
|
||||||
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA384)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm,
|
||||||
|
WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA384);
|
||||||
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_OWE)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_OWE);
|
||||||
|
}
|
||||||
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_DPP)) {
|
||||||
|
selcnt[0]++;
|
||||||
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_DPP);
|
||||||
}
|
}
|
||||||
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_OSEN)) {
|
if (HAS_KEY_MGMT(crypto_params, WLAN_CRYPTO_KEY_MGMT_OSEN)) {
|
||||||
selcnt[0]++;
|
selcnt[0]++;
|
||||||
WLAN_CRYPTO_ADDSELECTOR(frm,
|
RSN_ADD_KEYMGMT_TO_SUITE(frm, WLAN_CRYPTO_KEY_MGMT_OSEN);
|
||||||
wlan_crypto_rsn_keymgmt_to_suite(
|
|
||||||
WLAN_CRYPTO_KEY_MGMT_OSEN));
|
|
||||||
}
|
}
|
||||||
}
|
add_rsn_caps:
|
||||||
|
|
||||||
WLAN_CRYPTO_ADDSHORT(frm, crypto_params->rsn_caps);
|
WLAN_CRYPTO_ADDSHORT(frm, crypto_params->rsn_caps);
|
||||||
/* optional capabilities */
|
/* optional capabilities */
|
||||||
if (crypto_params->rsn_caps & WLAN_CRYPTO_RSN_CAP_MFP_ENABLED) {
|
if (crypto_params->rsn_caps & WLAN_CRYPTO_RSN_CAP_MFP_ENABLED) {
|
||||||
|
Reference in New Issue
Block a user