DPP2: Move connStatus object building into a helper function

Allow the same helper function to be used for reconfiguration.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
Jouni Malinen 2020-05-09 16:40:44 +03:00 committed by Jouni Malinen
parent b227515fae
commit 961435097b
2 changed files with 34 additions and 15 deletions

View file

@ -6165,6 +6165,36 @@ fail:
}
struct wpabuf * dpp_build_conn_status(enum dpp_status_error result,
const u8 *ssid, size_t ssid_len,
const char *channel_list)
{
struct wpabuf *json;
json = wpabuf_alloc(1000);
if (!json)
return NULL;
json_start_object(json, NULL);
json_add_int(json, "result", result);
if (ssid) {
json_value_sep(json);
if (json_add_base64url(json, "ssid64", ssid, ssid_len) < 0) {
wpabuf_free(json);
return NULL;
}
}
if (channel_list) {
json_value_sep(json);
json_add_string(json, "channelList", channel_list);
}
json_end_object(json);
wpa_hexdump_ascii(MSG_DEBUG, "DPP: connStatus JSON",
wpabuf_head(json), wpabuf_len(json));
return json;
}
struct wpabuf * dpp_build_conn_status_result(struct dpp_authentication *auth,
enum dpp_status_error result,
const u8 *ssid, size_t ssid_len,
@ -6176,23 +6206,9 @@ struct wpabuf * dpp_build_conn_status_result(struct dpp_authentication *auth,
size_t len[2];
u8 *wrapped;
json = wpabuf_alloc(1000);
json = dpp_build_conn_status(result, ssid, ssid_len, channel_list);
if (!json)
return NULL;
json_start_object(json, NULL);
json_add_int(json, "result", result);
if (ssid) {
json_value_sep(json);
if (json_add_base64url(json, "ssid64", ssid, ssid_len) < 0)
goto fail;
}
if (channel_list) {
json_value_sep(json);
json_add_string(json, "channelList", channel_list);
}
json_end_object(json);
wpa_hexdump_ascii(MSG_DEBUG, "DPP: connStatus JSON",
wpabuf_head(json), wpabuf_len(json));
nonce_len = auth->curve->nonce_len;
clear_len = 5 + 4 + nonce_len + 4 + wpabuf_len(json);

View file

@ -30,6 +30,9 @@ struct dpp_global {
void dpp_build_attr_status(struct wpabuf *msg, enum dpp_status_error status);
unsigned int dpp_next_id(struct dpp_global *dpp);
struct wpabuf * dpp_build_conn_status(enum dpp_status_error result,
const u8 *ssid, size_t ssid_len,
const char *channel_list);
struct json_token * dpp_parse_own_connector(const char *own_connector);
/* dpp_crypto.c */