From 71e2848eabe13b9e221916bc927b456fdf93077d Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Thu, 28 Nov 2019 15:20:32 +0200 Subject: [PATCH] DPP2: ssid64/ssid_charset in Configurator This allows Configurator to be configured to use the ssid64 option in the discovery object for a station Enrollee. Signed-off-by: Jouni Malinen --- src/common/dpp.c | 22 ++++++++++++++++++++-- src/common/dpp.h | 1 + 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/common/dpp.c b/src/common/dpp.c index cb4a03126..6c20fc1e6 100644 --- a/src/common/dpp.c +++ b/src/common/dpp.c @@ -4432,6 +4432,16 @@ static int dpp_configuration_parse_helper(struct dpp_authentication *auth, #endif /* CONFIG_TESTING_OPTIONS */ } + pos = os_strstr(cmd, " ssid_charset="); + if (pos) { + if (conf_ap) { + wpa_printf(MSG_INFO, + "DPP: ssid64 option (ssid_charset param) not allowed for AP enrollee"); + goto fail; + } + conf->ssid_charset = atoi(pos + 14); + } + pos = os_strstr(cmd, " pass="); if (pos) { size_t pass_len; @@ -4657,11 +4667,19 @@ dpp_build_conf_start(struct dpp_authentication *auth, } #endif /* CONFIG_TESTING_OPTIONS */ json_start_object(buf, "discovery"); - if (json_add_string_escape(buf, "ssid", conf->ssid, - conf->ssid_len) < 0) { + if (((!conf->ssid_charset || auth->peer_version < 2) && + json_add_string_escape(buf, "ssid", conf->ssid, + conf->ssid_len) < 0) || + ((conf->ssid_charset && auth->peer_version >= 2) && + json_add_base64url(buf, "ssid64", conf->ssid, + conf->ssid_len) < 0)) { wpabuf_free(buf); return NULL; } + if (conf->ssid_charset > 0) { + json_value_sep(buf); + json_add_int(buf, "ssid_charset", conf->ssid_charset); + } json_end_object(buf); json_value_sep(buf); diff --git a/src/common/dpp.h b/src/common/dpp.h index d78e9aa09..2a558b63c 100644 --- a/src/common/dpp.h +++ b/src/common/dpp.h @@ -169,6 +169,7 @@ enum dpp_netrole { struct dpp_configuration { u8 ssid[32]; size_t ssid_len; + int ssid_charset; enum dpp_akm akm; enum dpp_netrole netrole;