}
-struct wpabuf * dpp_build_conn_status_result(struct dpp_authentication *auth,
- enum dpp_status_error result,
- const u8 *ssid, size_t ssid_len,
- const char *channel_list)
+struct wpabuf * dpp_build_conn_status(enum dpp_status_error result,
+ const u8 *ssid, size_t ssid_len,
+ const char *channel_list)
{
- struct wpabuf *msg = NULL, *clear = NULL, *json;
- size_t nonce_len, clear_len, attr_len;
- const u8 *addr[2];
- size_t len[2];
- u8 *wrapped;
+ struct wpabuf *json;
json = wpabuf_alloc(1000);
if (!json)
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 (json_add_base64url(json, "ssid64", ssid, ssid_len) < 0) {
+ wpabuf_free(json);
+ return NULL;
+ }
}
if (channel_list) {
json_value_sep(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,
+ const char *channel_list)
+{
+ struct wpabuf *msg = NULL, *clear = NULL, *json;
+ size_t nonce_len, clear_len, attr_len;
+ const u8 *addr[2];
+ size_t len[2];
+ u8 *wrapped;
+
+ json = dpp_build_conn_status(result, ssid, ssid_len, channel_list);
+ if (!json)
+ return NULL;
+
nonce_len = auth->curve->nonce_len;
clear_len = 5 + 4 + nonce_len + 4 + wpabuf_len(json);
attr_len = 4 + clear_len + AES_BLOCK_SIZE;
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 */