DPP: Allow version number to be overridden for testing purposes
"SET dpp_version_override <ver>" can now be used to request wpa_supplicant and hostapd to support a subset of DPP versions. In practice, the only valid case for now is to fall back from DPP version 2 support to version 1 in builds that include CONFIG_DPP2=y. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
c3c38bc8b9
commit
12c8eacf73
12 changed files with 63 additions and 24 deletions
|
@ -1286,10 +1286,12 @@ skip_connector:
|
|||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
|
||||
#ifdef CONFIG_DPP2
|
||||
/* Protocol Version */
|
||||
wpabuf_put_le16(msg, DPP_ATTR_PROTOCOL_VERSION);
|
||||
wpabuf_put_le16(msg, 1);
|
||||
wpabuf_put_u8(msg, 2);
|
||||
if (DPP_VERSION > 1) {
|
||||
/* Protocol Version */
|
||||
wpabuf_put_le16(msg, DPP_ATTR_PROTOCOL_VERSION);
|
||||
wpabuf_put_le16(msg, 1);
|
||||
wpabuf_put_u8(msg, DPP_VERSION);
|
||||
}
|
||||
#endif /* CONFIG_DPP2 */
|
||||
|
||||
wpa_printf(MSG_DEBUG, "DPP: Send Peer Discovery Response to " MACSTR
|
||||
|
|
|
@ -3365,7 +3365,8 @@ static int check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
|
|||
dpp_pfs_free(sta->dpp_pfs);
|
||||
sta->dpp_pfs = NULL;
|
||||
|
||||
if ((hapd->conf->wpa_key_mgmt & WPA_KEY_MGMT_DPP) &&
|
||||
if (DPP_VERSION > 1 &&
|
||||
(hapd->conf->wpa_key_mgmt & WPA_KEY_MGMT_DPP) &&
|
||||
hapd->conf->dpp_netaccesskey && sta->wpa_sm &&
|
||||
wpa_auth_sta_key_mgmt(sta->wpa_sm) == WPA_KEY_MGMT_DPP &&
|
||||
elems.owe_dh) {
|
||||
|
@ -3843,7 +3844,7 @@ rsnxe_done:
|
|||
#endif /* CONFIG_OWE */
|
||||
|
||||
#ifdef CONFIG_DPP2
|
||||
if ((hapd->conf->wpa_key_mgmt & WPA_KEY_MGMT_DPP) &&
|
||||
if (DPP_VERSION > 1 && (hapd->conf->wpa_key_mgmt & WPA_KEY_MGMT_DPP) &&
|
||||
sta && sta->dpp_pfs && status_code == WLAN_STATUS_SUCCESS &&
|
||||
wpa_auth_sta_key_mgmt(sta->wpa_sm) == WPA_KEY_MGMT_DPP) {
|
||||
os_memcpy(p, wpabuf_head(sta->dpp_pfs->ie),
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "utils/bitfield.h"
|
||||
#include "common/ieee802_11_defs.h"
|
||||
#include "common/ocv.h"
|
||||
#include "common/dpp.h"
|
||||
#include "crypto/aes.h"
|
||||
#include "crypto/aes_wrap.h"
|
||||
#include "crypto/aes_siv.h"
|
||||
|
@ -3080,7 +3081,7 @@ SM_STATE(WPA_PTK, PTKCALCNEGOTIATING)
|
|||
#endif /* CONFIG_P2P */
|
||||
|
||||
#ifdef CONFIG_DPP2
|
||||
if (kde.dpp_kde) {
|
||||
if (DPP_VERSION > 1 && kde.dpp_kde) {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"DPP: peer Protocol Version %u Flags 0x%x",
|
||||
kde.dpp_kde[0], kde.dpp_kde[1]);
|
||||
|
@ -3516,10 +3517,10 @@ SM_STATE(WPA_PTK, PTKINITNEGOTIATING)
|
|||
&conf->transition_disable, 1, NULL, 0);
|
||||
|
||||
#ifdef CONFIG_DPP2
|
||||
if (sm->wpa_key_mgmt == WPA_KEY_MGMT_DPP) {
|
||||
if (DPP_VERSION > 1 && sm->wpa_key_mgmt == WPA_KEY_MGMT_DPP) {
|
||||
u8 payload[2];
|
||||
|
||||
payload[0] = 2; /* Protocol Version */
|
||||
payload[0] = DPP_VERSION; /* Protocol Version */
|
||||
payload[1] = 0; /* Flags */
|
||||
if (conf->dpp_pfs == 0)
|
||||
payload[1] |= DPP_KDE_PFS_ALLOWED;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue