Lines Matching defs:auth
42 void dpp_auth_fail(struct dpp_authentication *auth, const char *txt)
44 wpa_msg(auth->msg_ctx, MSG_INFO, DPP_EVENT_FAIL "%s", txt);
580 static int dpp_channel_intersect(struct dpp_authentication *auth,
584 struct dpp_bootstrap_info *peer_bi = auth->peer_bi;
589 if (freq_included(auth->freq, auth->num_freq, freq))
592 auth->freq[auth->num_freq++] = freq;
594 if (!auth->num_freq) {
599 auth->curr_freq = auth->freq[0];
604 static int dpp_channel_local_list(struct dpp_authentication *auth,
612 auth->num_freq = 0;
615 auth->freq[0] = 2412;
616 auth->freq[1] = 2437;
617 auth->freq[2] = 2462;
618 auth->num_freq = 3;
630 if (freq_included(auth->freq, auth->num_freq, freq))
632 auth->freq[auth->num_freq++] = freq;
633 if (auth->num_freq == DPP_BOOTSTRAP_MAX_FREQ) {
640 return auth->num_freq == 0 ? -1 : 0;
644 int dpp_prepare_channel_list(struct dpp_authentication *auth,
655 auth->num_freq = 1;
656 auth->freq[0] = neg_freq;
657 auth->curr_freq = neg_freq;
661 if (auth->peer_bi->num_freq > 0)
662 res = dpp_channel_intersect(auth, own_modes, num_modes);
664 res = dpp_channel_local_list(auth, own_modes, num_modes);
670 freq_to_start(auth->freq, auth->num_freq, 2462);
671 freq_to_start(auth->freq, auth->num_freq, 2412);
672 freq_to_start(auth->freq, auth->num_freq, 2437);
674 auth->freq_idx = 0;
675 auth->curr_freq = auth->freq[0];
679 for (i = 0; i < auth->num_freq; i++) {
680 res = os_snprintf(pos, end - pos, " %u", auth->freq[i]);
771 struct dpp_authentication *auth;
773 auth = os_zalloc(sizeof(*auth));
774 if (!auth)
776 auth->global = dpp;
777 auth->msg_ctx = msg_ctx;
778 auth->conf_resp_status = 255;
779 return auth;
783 static struct wpabuf * dpp_build_conf_req_attr(struct dpp_authentication *auth,
797 nonce_len = auth->curve->nonce_len;
798 if (random_get_bytes(auth->e_nonce, nonce_len)) {
802 wpa_hexdump(MSG_DEBUG, "DPP: E-nonce", auth->e_nonce, nonce_len);
809 if (auth->waiting_new_key) {
810 pe = crypto_ec_key_get_pubkey_point(auth->own_protocol_key, 0);
815 if (dpp_derive_auth_i(auth, auth_i) < 0)
817 clear_len += 4 + auth->curve->hash_len;
839 wpabuf_put_data(clear, auth->e_nonce, nonce_len - 1);
851 wpabuf_put_data(clear, auth->e_nonce, nonce_len);
868 if (auth->waiting_new_key) {
871 wpabuf_put_le16(clear, auth->curve->hash_len);
872 wpabuf_put_data(clear, auth_i, auth->curve->hash_len);
891 if (aes_siv_encrypt(auth->ke, auth->curve->hash_len,
942 struct wpabuf * dpp_build_conf_req(struct dpp_authentication *auth,
947 conf_req = dpp_build_conf_req_attr(auth, json);
969 struct wpabuf * dpp_build_conf_req_helper(struct dpp_authentication *auth,
1000 if (auth->csr) {
1003 csr = base64_encode_no_lf(wpabuf_head(auth->csr),
1004 wpabuf_len(auth->csr), &csr_len);
1044 buf = dpp_build_conf_req(auth, wpabuf_head(json));
1161 static int dpp_configuration_parse_helper(struct dpp_authentication *auth,
1189 auth->provision_configurator = 1;
1310 auth->conf_sta = conf_sta;
1311 auth->conf_ap = conf_ap;
1313 if (!auth->conf_sta)
1314 auth->conf_sta = conf_sta;
1316 auth->conf2_sta = conf_sta;
1317 if (!auth->conf_ap)
1318 auth->conf_ap = conf_ap;
1320 auth->conf2_ap = conf_ap;
1333 static int dpp_configuration_parse(struct dpp_authentication *auth,
1343 return dpp_configuration_parse_helper(auth, cmd, 0);
1351 res = dpp_configuration_parse_helper(auth, tmp, 0);
1355 res = dpp_configuration_parse_helper(auth, cmd + len, 1);
1360 dpp_configuration_free(auth->conf_sta);
1361 dpp_configuration_free(auth->conf2_sta);
1362 dpp_configuration_free(auth->conf_ap);
1363 dpp_configuration_free(auth->conf2_ap);
1385 int dpp_set_configurator(struct dpp_authentication *auth, const char *cmd)
1391 if (!cmd || auth->configurator_set)
1393 auth->configurator_set = 1;
1410 auth->configurator_set = 0;
1411 auth->use_config_query = true;
1417 if (!auth->conf && pos) {
1419 auth->conf = dpp_configurator_get_id(auth->global, atoi(pos));
1420 if (!auth->conf) {
1430 auth->send_conn_status = atoi(pos);
1436 auth->akm_use_selector = atoi(pos);
1439 if (dpp_configuration_parse(auth, cmd) < 0) {
1440 wpa_msg(auth->msg_ctx, MSG_INFO,
1451 void dpp_auth_deinit(struct dpp_authentication *auth)
1455 if (!auth)
1457 dpp_configuration_free(auth->conf_ap);
1458 dpp_configuration_free(auth->conf2_ap);
1459 dpp_configuration_free(auth->conf_sta);
1460 dpp_configuration_free(auth->conf2_sta);
1461 crypto_ec_key_deinit(auth->own_protocol_key);
1462 crypto_ec_key_deinit(auth->peer_protocol_key);
1463 crypto_ec_key_deinit(auth->reconfig_old_protocol_key);
1464 wpabuf_free(auth->req_msg);
1465 wpabuf_free(auth->resp_msg);
1466 wpabuf_free(auth->conf_req);
1467 wpabuf_free(auth->reconfig_req_msg);
1468 wpabuf_free(auth->reconfig_resp_msg);
1469 for (i = 0; i < auth->num_conf_obj; i++) {
1470 struct dpp_config_obj *conf = &auth->conf_obj[i];
1481 dpp_free_asymmetric_key(auth->conf_key_pkg);
1482 os_free(auth->csrattrs);
1483 wpabuf_free(auth->csr);
1484 wpabuf_free(auth->priv_key);
1485 wpabuf_free(auth->cacert);
1486 wpabuf_free(auth->certbag);
1487 os_free(auth->trusted_eap_server_name);
1488 wpabuf_free(auth->conf_resp_tcp);
1490 wpabuf_free(auth->net_access_key);
1491 dpp_bootstrap_info_free(auth->tmp_own_bi);
1492 if (auth->tmp_peer_bi) {
1493 dl_list_del(&auth->tmp_peer_bi->list);
1494 dpp_bootstrap_info_free(auth->tmp_peer_bi);
1496 os_free(auth->e_name);
1497 os_free(auth->e_mud_url);
1498 os_free(auth->e_band_support);
1500 os_free(auth->config_obj_override);
1501 os_free(auth->discovery_override);
1502 os_free(auth->groups_override);
1504 bin_clear_free(auth, sizeof(*auth));
1509 dpp_build_conf_start(struct dpp_authentication *auth,
1515 if (auth->discovery_override)
1516 tailroom += os_strlen(auth->discovery_override);
1526 if (auth->discovery_override) {
1528 auth->discovery_override);
1530 wpabuf_put_str(buf, auth->discovery_override);
1536 if (((!conf->ssid_charset || auth->peer_version < 2) &&
1539 ((conf->ssid_charset && auth->peer_version >= 2) &&
1651 dpp_build_conf_obj_dpp(struct dpp_authentication *auth,
1665 if (!auth->conf) {
1670 curve = auth->conf->curve;
1672 !dpp_supports_curve(curve->name, auth->peer_bi)) {
1678 if (auth->new_curve && auth->new_key_received)
1679 nak_curve = auth->new_curve;
1681 nak_curve = auth->curve;
1682 if (!dpp_supports_curve(nak_curve->name, auth->peer_bi)) {
1690 if (dpp_akm_ver2(akm) && auth->peer_version < 2) {
1697 if (auth->groups_override)
1698 extra_len += os_strlen(auth->groups_override);
1709 if (auth->groups_override) {
1711 if (auth->groups_override) {
1714 auth->groups_override);
1716 wpabuf_put_str(dppcon, auth->groups_override);
1735 if (!auth->peer_protocol_key) {
1741 if (auth->conf->net_access_key_curve &&
1742 auth->curve != auth->conf->net_access_key_curve &&
1743 !auth->new_key_received) {
1744 if (!dpp_supports_curve(auth->conf->net_access_key_curve->name,
1745 auth->peer_bi)) {
1748 auth->conf->net_access_key_curve->name);
1753 auth->curve->name,
1754 auth->conf->net_access_key_curve->name,
1755 auth->waiting_new_key ?
1758 if (auth->waiting_new_key)
1759 auth->waiting_new_key = false; /* failed */
1761 auth->waiting_new_key = true;
1765 if (dpp_build_jwk(dppcon, "netAccessKey", auth->peer_protocol_key, NULL,
1788 json_add_int(dppcon, "version", auth->peer_version);
1794 signed_conn = dpp_sign_connector(auth->conf, dppcon);
1800 tailroom += 2 * curve->prime_len * 4 / 3 + os_strlen(auth->conf->kid);
1805 if (auth->certbag)
1806 tailroom += 2 * wpabuf_len(auth->certbag);
1807 if (auth->cacert)
1808 tailroom += 2 * wpabuf_len(auth->cacert);
1809 if (auth->trusted_eap_server_name)
1810 tailroom += os_strlen(auth->trusted_eap_server_name);
1816 buf = dpp_build_conf_start(auth, conf, tailroom);
1820 if (auth->akm_use_selector && dpp_akm_ver2(akm))
1833 if (!auth->certbag)
1835 json_add_base64(buf, "certBag", wpabuf_head(auth->certbag),
1836 wpabuf_len(auth->certbag));
1837 if (auth->cacert) {
1840 wpabuf_head(auth->cacert),
1841 wpabuf_len(auth->cacert));
1843 if (auth->trusted_eap_server_name) {
1846 auth->trusted_eap_server_name);
1859 if (dpp_build_jwk(buf, "csign", auth->conf->csign, auth->conf->kid,
1865 if (auth->peer_version >= 2 && auth->conf->pp_key) {
1867 if (dpp_build_jwk(buf, "ppKey", auth->conf->pp_key, NULL,
1887 if (!auth->conf->net_access_key_curve) {
1896 auth->conf->net_access_key_curve = nak_curve;
1913 dpp_build_conf_obj_legacy(struct dpp_authentication *auth,
1923 buf = dpp_build_conf_start(auth, conf, len);
1927 if (auth->akm_use_selector && dpp_akm_ver2(conf->akm))
1950 static int dpp_get_peer_bi_id(struct dpp_authentication *auth)
1954 if (auth->peer_bi)
1955 return auth->peer_bi->id;
1956 if (auth->tmp_peer_bi)
1957 return auth->tmp_peer_bi->id;
1962 bi->id = dpp_next_id(auth->global);
1963 dl_list_add(&auth->global->bootstrap, &bi->list);
1964 auth->tmp_peer_bi = bi;
1970 dpp_build_conf_obj(struct dpp_authentication *auth, enum dpp_netrole netrole,
1976 if (auth->config_obj_override) {
1980 return wpabuf_alloc_copy(auth->config_obj_override,
1981 os_strlen(auth->config_obj_override));
1987 conf = auth->conf_sta;
1989 conf = auth->conf_ap;
1992 conf = auth->conf2_sta;
1994 conf = auth->conf2_ap;
1998 if (auth->use_config_query) {
2002 auth->waiting_config = true;
2003 dpp_get_peer_bi_id(auth);
2014 if (!auth->conf) {
2019 if (!cert_req && !auth->certbag) {
2024 return dpp_build_conf_obj_dpp(auth, conf);
2026 if (dpp_akm_dpp(conf->akm) || (auth->peer_version >= 2 && auth->conf))
2027 return dpp_build_conf_obj_dpp(auth, conf);
2028 return dpp_build_conf_obj_legacy(auth, conf);
2033 dpp_build_conf_resp(struct dpp_authentication *auth, const u8 *e_nonce,
2044 if (auth->force_conf_resp_status != DPP_STATUS_OK) {
2045 status = auth->force_conf_resp_status;
2051 env_data = dpp_build_enveloped_data(auth);
2054 conf = dpp_build_conf_obj(auth, netrole, 0, cert_req);
2059 conf2 = dpp_build_conf_obj(auth, netrole, 1, cert_req);
2063 if (!conf && auth->waiting_config)
2067 else if (!cert_req && netrole == DPP_NETROLE_STA && auth->conf_sta &&
2068 auth->conf_sta->akm == DPP_AKM_DOT1X && !auth->waiting_csr)
2071 else if (auth->waiting_new_key)
2077 auth->conf_resp_status = status;
2087 if (auth->peer_version >= 2 && auth->send_conn_status &&
2090 if (status == DPP_STATUS_CSR_NEEDED && auth->conf_sta &&
2091 auth->conf_sta->csrattrs)
2092 clear_len += 4 + os_strlen(auth->conf_sta->csrattrs);
2101 auth->conf->net_access_key_curve->name);
2102 new_pc = dpp_gen_keypair(auth->conf->net_access_key_curve);
2112 crypto_ec_key_deinit(auth->own_protocol_key);
2113 auth->own_protocol_key = new_pc;
2114 auth->new_curve = auth->conf->net_access_key_curve;
2165 if (auth->peer_version >= 2 && conf2) {
2179 if (auth->peer_version >= 2 && auth->send_conn_status &&
2186 if (status == DPP_STATUS_CSR_NEEDED && auth->conf_sta &&
2187 auth->conf_sta->csrattrs) {
2188 auth->waiting_csr = true;
2191 wpabuf_put_le16(clear, os_strlen(auth->conf_sta->csrattrs));
2192 wpabuf_put_str(clear, auth->conf_sta->csrattrs);
2196 if (status == DPP_STATUS_NEW_KEY_NEEDED && auth->conf &&
2197 auth->conf->net_access_key_curve) {
2198 u16 ike_group = auth->conf->net_access_key_curve->ike_group;
2244 if (aes_siv_encrypt(auth->ke, auth->curve->hash_len,
2277 dpp_conf_req_rx(struct dpp_authentication *auth, const u8 *attr_start,
2302 dpp_auth_fail(auth, "Invalid attribute in config request");
2309 dpp_auth_fail(auth,
2320 if (aes_siv_decrypt(auth->ke, auth->curve->hash_len,
2323 dpp_auth_fail(auth, "AES-SIV decryption failed");
2330 dpp_auth_fail(auth, "Invalid attribute in unwrapped data");
2337 if (!e_nonce || e_nonce_len != auth->curve->nonce_len) {
2338 dpp_auth_fail(auth,
2343 os_memcpy(auth->e_nonce, e_nonce, e_nonce_len);
2348 if (i_proto && !auth->waiting_new_key) {
2349 dpp_auth_fail(auth,
2362 pe = dpp_set_pubkey_point(auth->own_protocol_key,
2365 dpp_auth_fail(auth,
2370 crypto_ec_key_deinit(auth->peer_protocol_key);
2371 auth->peer_protocol_key = pe;
2372 auth->new_key_received = true;
2373 auth->waiting_new_key = false;
2375 if (dpp_derive_auth_i(auth, auth_i) < 0)
2381 dpp_auth_fail(auth,
2385 if (rx_auth_i_len != auth->curve->hash_len ||
2386 os_memcmp(rx_auth_i, auth_i, auth->curve->hash_len) != 0) {
2387 dpp_auth_fail(auth,
2392 auth_i, auth->curve->hash_len);
2402 dpp_auth_fail(auth,
2411 dpp_auth_fail(auth, "Could not parse Config Attributes");
2417 dpp_auth_fail(auth, "No Config Attributes - name");
2421 os_free(auth->e_name);
2422 auth->e_name = os_strdup(token->string);
2426 dpp_auth_fail(auth, "No Config Attributes - wi-fi_tech");
2433 dpp_auth_fail(auth, "Unsupported wi-fi_tech");
2439 dpp_auth_fail(auth, "No Config Attributes - netRole");
2452 dpp_auth_fail(auth, "Unsupported netRole");
2455 auth->e_netrole = netrole;
2460 wpa_msg(auth->msg_ctx, MSG_INFO, DPP_EVENT_MUD_URL "%s",
2462 os_free(auth->e_mud_url);
2463 auth->e_mud_url = os_strdup(token->string);
2499 os_free(auth->e_band_support);
2500 auth->e_band_support = opclass;
2501 wpa_msg(auth->msg_ctx, MSG_INFO, DPP_EVENT_BAND_SUPPORT "%s",
2512 if (dpp_validate_csr(auth, cert_req) < 0) {
2514 auth->force_conf_resp_status = DPP_STATUS_CSR_BAD;
2518 id = dpp_get_peer_bi_id(auth);
2528 wpa_msg(auth->msg_ctx, MSG_INFO, DPP_EVENT_CSR "peer=%d csr=%s",
2531 auth->waiting_csr = false;
2532 auth->waiting_cert = true;
2538 resp = dpp_build_conf_resp(auth, e_nonce, e_nonce_len, netrole,
2749 static int dpp_parse_connector(struct dpp_authentication *auth,
2805 &auth->net_access_key_expiry)) {
2823 if (crypto_ec_key_cmp(key, auth->own_protocol_key)) {
2827 if (auth->ignore_netaccesskey_mismatch) {
2874 static void dpp_copy_netaccesskey(struct dpp_authentication *auth,
2880 own_key = auth->own_protocol_key;
2882 if (auth->reconfig_connector_key == DPP_CONFIG_REUSEKEY &&
2883 auth->reconfig_old_protocol_key)
2884 own_key = auth->reconfig_old_protocol_key;
2891 wpabuf_free(auth->net_access_key);
2892 auth->net_access_key = net_access_key;
2896 static int dpp_parse_cred_dpp(struct dpp_authentication *auth,
2966 if (dpp_parse_connector(auth, conf,
2978 if (dpp_akm_dpp(conf->akm) || auth->peer_version >= 2)
2979 dpp_copy_netaccesskey(auth, conf);
2991 static int dpp_parse_cred_dot1x(struct dpp_authentication *auth,
2999 dpp_auth_fail(auth, "No entCreds in JSON");
3005 dpp_auth_fail(auth, "No certBag in JSON");
3011 dpp_auth_fail(auth, "No certificates in certBag");
3025 dpp_auth_fail(auth,
3149 static int dpp_parse_conf_obj(struct dpp_authentication *auth,
3162 dpp_auth_fail(auth, "JSON root is not an object");
3168 dpp_auth_fail(auth, "No wi-fi_tech string value found");
3174 dpp_auth_fail(auth, "Unsupported wi-fi_tech value");
3180 dpp_auth_fail(auth, "No discovery object in JSON");
3189 dpp_auth_fail(auth, "Too long discovery::ssid64 value");
3195 dpp_auth_fail(auth,
3202 dpp_auth_fail(auth,
3208 if (auth->num_conf_obj == DPP_MAX_CONF_OBJ) {
3214 conf = &auth->conf_obj[auth->num_conf_obj++];
3233 dpp_auth_fail(auth, "No cred object in JSON");
3239 dpp_auth_fail(auth, "No cred::akm string value found");
3245 if (legacy && auth->peer_version >= 2) {
3258 (auth->peer_version >= 2 && dpp_akm_legacy(conf->akm))) {
3259 if (dpp_parse_cred_dpp(auth, conf, cred) < 0)
3263 if (dpp_parse_cred_dot1x(auth, conf, cred) < 0 ||
3264 dpp_parse_cred_dpp(auth, conf, cred) < 0)
3270 dpp_auth_fail(auth, "Unsupported akm");
3297 int dpp_conf_resp_rx(struct dpp_authentication *auth,
3310 auth->conf_resp_status = 255;
3313 dpp_auth_fail(auth, "Invalid attribute in config response");
3321 dpp_auth_fail(auth,
3337 if (aes_siv_decrypt(auth->ke, auth->curve->hash_len,
3340 dpp_auth_fail(auth, "AES-SIV decryption failed");
3347 dpp_auth_fail(auth, "Invalid attribute in unwrapped data");
3354 if (!e_nonce || e_nonce_len != auth->curve->nonce_len) {
3355 dpp_auth_fail(auth,
3360 if (os_memcmp(e_nonce, auth->e_nonce, e_nonce_len) != 0) {
3361 dpp_auth_fail(auth, "Enrollee Nonce mismatch");
3368 dpp_auth_fail(auth,
3372 auth->conf_resp_status = status[0];
3384 dpp_auth_fail(auth,
3389 os_free(auth->csrattrs);
3390 auth->csrattrs = csrattrs;
3391 auth->csrattrs_len = csrattrs_len;
3409 dpp_auth_fail(auth,
3420 dpp_auth_fail(auth,
3427 dpp_auth_fail(auth,
3432 crypto_ec_key_deinit(auth->own_protocol_key);
3433 auth->own_protocol_key = new_pe;
3434 auth->new_curve = curve;
3440 dpp_auth_fail(auth,
3449 dpp_auth_fail(auth, "Invalid Responder Protocol Key (Pc)");
3454 crypto_ec_key_deinit(auth->peer_protocol_key);
3455 auth->peer_protocol_key = pc;
3457 auth->waiting_new_key = true;
3463 dpp_auth_fail(auth, "Configurator rejected configuration");
3471 dpp_conf_resp_env_data(auth, env_data, env_data_len) < 0)
3478 dpp_auth_fail(auth,
3485 if (dpp_parse_conf_obj(auth, conf_obj, conf_obj_len) < 0)
3498 auth->conn_status_requested = 1;
3512 enum dpp_status_error dpp_conf_result_rx(struct dpp_authentication *auth,
3527 dpp_auth_fail(auth,
3548 if (aes_siv_decrypt(auth->ke, auth->curve->hash_len,
3551 dpp_auth_fail(auth, "AES-SIV decryption failed");
3558 dpp_auth_fail(auth, "Invalid attribute in unwrapped data");
3565 if (!e_nonce || e_nonce_len != auth->curve->nonce_len) {
3566 dpp_auth_fail(auth,
3571 if (os_memcmp(e_nonce, auth->e_nonce, e_nonce_len) != 0) {
3572 dpp_auth_fail(auth, "Enrollee Nonce mismatch");
3574 auth->e_nonce, e_nonce_len);
3581 dpp_auth_fail(auth,
3594 struct wpabuf * dpp_build_conf_result(struct dpp_authentication *auth,
3603 nonce_len = auth->curve->nonce_len;
3617 wpabuf_put_data(clear, auth->e_nonce, nonce_len);
3635 if (aes_siv_encrypt(auth->ke, auth->curve->hash_len,
3663 enum dpp_status_error dpp_conn_status_result_rx(struct dpp_authentication *auth,
3686 dpp_auth_fail(auth,
3707 if (aes_siv_decrypt(auth->ke, auth->curve->hash_len,
3710 dpp_auth_fail(auth, "AES-SIV decryption failed");
3717 dpp_auth_fail(auth, "Invalid attribute in unwrapped data");
3724 if (!e_nonce || e_nonce_len != auth->curve->nonce_len) {
3725 dpp_auth_fail(auth,
3730 if (os_memcmp(e_nonce, auth->e_nonce, e_nonce_len) != 0) {
3731 dpp_auth_fail(auth, "Enrollee Nonce mismatch");
3733 auth->e_nonce, e_nonce_len);
3740 dpp_auth_fail(auth,
3749 dpp_auth_fail(auth, "Could not parse connStatus");
3767 dpp_auth_fail(auth, "No connStatus - result");
3810 struct wpabuf * dpp_build_conn_status_result(struct dpp_authentication *auth,
3825 nonce_len = auth->curve->nonce_len;
3836 wpabuf_put_data(clear, auth->e_nonce, nonce_len);
3859 if (aes_siv_encrypt(auth->ke, auth->curve->hash_len,
3982 int dpp_configurator_own_config(struct dpp_authentication *auth,
3988 if (!auth->conf) {
3993 auth->curve = dpp_get_curve_name(curve);
3994 if (!auth->curve) {
4001 auth->curve->name);
4003 auth->own_protocol_key = dpp_gen_keypair(auth->curve);
4004 if (!auth->own_protocol_key)
4006 dpp_copy_netaccesskey(auth, &auth->conf_obj[0]);
4007 auth->peer_protocol_key = auth->own_protocol_key;
4008 dpp_copy_csign(&auth->conf_obj[0], auth->conf->csign);
4010 conf_obj = dpp_build_conf_obj(auth, ap, 0, NULL);
4012 wpabuf_free(auth->conf_obj[0].c_sign_key);
4013 auth->conf_obj[0].c_sign_key = NULL;
4016 ret = dpp_parse_conf_obj(auth, wpabuf_head(conf_obj),
4020 auth->peer_protocol_key = NULL;
5046 void dpp_notify_auth_success(struct dpp_authentication *auth, int initiator)
5051 if (auth->peer_protocol_key) {
5052 dpp_get_pubkey_hash(auth->peer_protocol_key, hash);
5057 wpa_msg(auth->msg_ctx, MSG_INFO,
5059 initiator, hex, auth->own_bi ? (int) auth->own_bi->id : -1,
5060 auth->peer_bi ? (int) auth->peer_bi->id : -1);