Lines Matching refs:bi
201 static int dpp_clone_uri(struct dpp_bootstrap_info *bi, const char *uri) in dpp_clone_uri() argument
203 bi->uri = os_strdup(uri); in dpp_clone_uri()
204 return bi->uri ? 0 : -1; in dpp_clone_uri()
208 int dpp_parse_uri_chan_list(struct dpp_bootstrap_info *bi, in dpp_parse_uri_chan_list() argument
233 bi->channels_listed = true; in dpp_parse_uri_chan_list()
238 } else if (bi->num_freq == DPP_BOOTSTRAP_MAX_FREQ) { in dpp_parse_uri_chan_list()
241 bi->num_freq = 0; in dpp_parse_uri_chan_list()
244 bi->freq[bi->num_freq++] = freq; in dpp_parse_uri_chan_list()
261 int dpp_parse_uri_mac(struct dpp_bootstrap_info *bi, const char *mac) in dpp_parse_uri_mac() argument
266 if (hwaddr_aton2(mac, bi->mac_addr) < 0) { in dpp_parse_uri_mac()
271 wpa_printf(MSG_DEBUG, "DPP: URI mac: " MACSTR, MAC2STR(bi->mac_addr)); in dpp_parse_uri_mac()
277 int dpp_parse_uri_info(struct dpp_bootstrap_info *bi, const char *info) in dpp_parse_uri_info() argument
287 bi->info = os_malloc(end - info + 1); in dpp_parse_uri_info()
288 if (!bi->info) in dpp_parse_uri_info()
290 os_memcpy(bi->info, info, end - info); in dpp_parse_uri_info()
291 bi->info[end - info] = '\0'; in dpp_parse_uri_info()
292 wpa_printf(MSG_DEBUG, "DPP: URI(information): %s", bi->info); in dpp_parse_uri_info()
293 if (!dpp_uri_valid_info(bi->info)) { in dpp_parse_uri_info()
302 int dpp_parse_uri_version(struct dpp_bootstrap_info *bi, const char *version) in dpp_parse_uri_version() argument
309 bi->version = 1; in dpp_parse_uri_version()
311 bi->version = 2; in dpp_parse_uri_version()
313 bi->version = 3; in dpp_parse_uri_version()
317 wpa_printf(MSG_DEBUG, "DPP: URI version: %d", bi->version); in dpp_parse_uri_version()
324 static int dpp_parse_uri_pk(struct dpp_bootstrap_info *bi, const char *info) in dpp_parse_uri_pk() argument
344 res = dpp_get_subject_public_key(bi, data, data_len); in dpp_parse_uri_pk()
350 static int dpp_parse_uri_supported_curves(struct dpp_bootstrap_info *bi, in dpp_parse_uri_supported_curves() argument
361 bi->supported_curves = val; in dpp_parse_uri_supported_curves()
365 bi->supported_curves |= val << 4; in dpp_parse_uri_supported_curves()
368 bi->supported_curves); in dpp_parse_uri_supported_curves()
374 static int dpp_parse_uri_host(struct dpp_bootstrap_info *bi, const char *txt) in dpp_parse_uri_host() argument
392 bi->port = DPP_TCP_PORT; in dpp_parse_uri_host()
402 bi->port = atoi(port + 1); in dpp_parse_uri_host()
410 bi->port = atoi(port); in dpp_parse_uri_host()
420 os_free(bi->host); in dpp_parse_uri_host()
421 bi->host = os_memdup(&addr, sizeof(addr)); in dpp_parse_uri_host()
422 if (!bi->host) in dpp_parse_uri_host()
426 hostapd_ip_txt(bi->host, buf, sizeof(buf)), bi->port); in dpp_parse_uri_host()
438 struct dpp_bootstrap_info *bi; in dpp_parse_uri() local
486 bi = os_zalloc(sizeof(*bi)); in dpp_parse_uri()
487 if (!bi) in dpp_parse_uri()
490 if (dpp_clone_uri(bi, uri) < 0 || in dpp_parse_uri()
491 dpp_parse_uri_chan_list(bi, chan_list) < 0 || in dpp_parse_uri()
492 dpp_parse_uri_mac(bi, mac) < 0 || in dpp_parse_uri()
493 dpp_parse_uri_info(bi, info) < 0 || in dpp_parse_uri()
494 dpp_parse_uri_version(bi, version) < 0 || in dpp_parse_uri()
495 dpp_parse_uri_supported_curves(bi, supported_curves) < 0 || in dpp_parse_uri()
496 dpp_parse_uri_host(bi, host) < 0 || in dpp_parse_uri()
497 dpp_parse_uri_pk(bi, pk) < 0) { in dpp_parse_uri()
498 dpp_bootstrap_info_free(bi); in dpp_parse_uri()
499 bi = NULL; in dpp_parse_uri()
502 return bi; in dpp_parse_uri()
693 int dpp_gen_uri(struct dpp_bootstrap_info *bi) in dpp_gen_uri() argument
701 if (bi->chan) in dpp_gen_uri()
702 len += 3 + os_strlen(bi->chan); /* C:...; */ in dpp_gen_uri()
703 if (is_zero_ether_addr(bi->mac_addr)) in dpp_gen_uri()
707 MAC2STR(bi->mac_addr)); in dpp_gen_uri()
709 if (bi->info) in dpp_gen_uri()
710 len += 3 + os_strlen(bi->info); /* I:...; */ in dpp_gen_uri()
714 len += 4 + os_strlen(bi->pk); /* K:...;; */ in dpp_gen_uri()
716 if (bi->supported_curves) { in dpp_gen_uri()
717 u8 val = bi->supported_curves; in dpp_gen_uri()
732 if (bi->host) { in dpp_gen_uri()
736 addr = hostapd_ip_txt(bi->host, buf, sizeof(buf)); in dpp_gen_uri()
739 if (bi->port == DPP_TCP_PORT) in dpp_gen_uri()
741 else if (bi->host->af == AF_INET) in dpp_gen_uri()
743 addr, bi->port); in dpp_gen_uri()
746 addr, bi->port); in dpp_gen_uri()
749 os_free(bi->uri); in dpp_gen_uri()
750 bi->uri = os_malloc(len + 1); in dpp_gen_uri()
751 if (!bi->uri) in dpp_gen_uri()
753 os_snprintf(bi->uri, len + 1, "DPP:%s%s%s%s%s%s%s%s%s%sK:%s;;", in dpp_gen_uri()
754 bi->chan ? "C:" : "", bi->chan ? bi->chan : "", in dpp_gen_uri()
755 bi->chan ? ";" : "", in dpp_gen_uri()
757 bi->info ? "I:" : "", bi->info ? bi->info : "", in dpp_gen_uri()
758 bi->info ? ";" : "", in dpp_gen_uri()
763 bi->pk); in dpp_gen_uri()
1624 static bool dpp_supports_curve(const char *curve, struct dpp_bootstrap_info *bi) in dpp_supports_curve() argument
1628 if (!bi || !bi->supported_curves) in dpp_supports_curve()
1646 return bi->supported_curves & BIT(idx); in dpp_supports_curve()
1952 struct dpp_bootstrap_info *bi; in dpp_get_peer_bi_id() local
1959 bi = os_zalloc(sizeof(*bi)); in dpp_get_peer_bi_id()
1960 if (!bi) in dpp_get_peer_bi_id()
1962 bi->id = dpp_next_id(auth->global); in dpp_get_peer_bi_id()
1963 dl_list_add(&auth->global->bootstrap, &bi->list); in dpp_get_peer_bi_id()
1964 auth->tmp_peer_bi = bi; in dpp_get_peer_bi_id()
1965 return bi->id; in dpp_get_peer_bi_id()
4322 struct dpp_bootstrap_info *bi; in dpp_next_id() local
4325 dl_list_for_each(bi, &dpp->bootstrap, struct dpp_bootstrap_info, list) { in dpp_next_id()
4326 if (bi->id > max_id) in dpp_next_id()
4327 max_id = bi->id; in dpp_next_id()
4335 struct dpp_bootstrap_info *bi, *tmp; in dpp_bootstrap_del() local
4341 dl_list_for_each_safe(bi, tmp, &dpp->bootstrap, in dpp_bootstrap_del()
4343 if (id && bi->id != id) in dpp_bootstrap_del()
4348 dpp->remove_bi(dpp->cb_ctx, bi); in dpp_bootstrap_del()
4350 dl_list_del(&bi->list); in dpp_bootstrap_del()
4351 dpp_bootstrap_info_free(bi); in dpp_bootstrap_del()
4363 struct dpp_bootstrap_info *bi; in dpp_add_qr_code() local
4368 bi = dpp_parse_uri(uri); in dpp_add_qr_code()
4369 if (!bi) in dpp_add_qr_code()
4372 bi->type = DPP_BOOTSTRAP_QR_CODE; in dpp_add_qr_code()
4373 bi->id = dpp_next_id(dpp); in dpp_add_qr_code()
4374 dl_list_add(&dpp->bootstrap, &bi->list); in dpp_add_qr_code()
4375 return bi; in dpp_add_qr_code()
4382 struct dpp_bootstrap_info *bi; in dpp_add_nfc_uri() local
4387 bi = dpp_parse_uri(uri); in dpp_add_nfc_uri()
4388 if (!bi) in dpp_add_nfc_uri()
4391 bi->type = DPP_BOOTSTRAP_NFC_URI; in dpp_add_nfc_uri()
4392 bi->id = dpp_next_id(dpp); in dpp_add_nfc_uri()
4393 dl_list_add(&dpp->bootstrap, &bi->list); in dpp_add_nfc_uri()
4394 return bi; in dpp_add_nfc_uri()
4398 static int dpp_parse_supported_curves_list(struct dpp_bootstrap_info *bi, in dpp_parse_supported_curves_list() argument
4426 bi->supported_curves = curves; in dpp_parse_supported_curves_list()
4429 bi->supported_curves); in dpp_parse_supported_curves_list()
4442 struct dpp_bootstrap_info *bi; in dpp_bootstrap_gen() local
4447 bi = os_zalloc(sizeof(*bi)); in dpp_bootstrap_gen()
4448 if (!bi) in dpp_bootstrap_gen()
4452 bi->type = DPP_BOOTSTRAP_QR_CODE; in dpp_bootstrap_gen()
4454 bi->type = DPP_BOOTSTRAP_PKEX; in dpp_bootstrap_gen()
4456 bi->type = DPP_BOOTSTRAP_NFC_URI; in dpp_bootstrap_gen()
4460 bi->chan = get_param(cmd, " chan="); in dpp_bootstrap_gen()
4476 if (dpp_keygen(bi, curve, privkey, privkey_len) < 0 || in dpp_bootstrap_gen()
4477 dpp_parse_uri_chan_list(bi, bi->chan) < 0 || in dpp_bootstrap_gen()
4478 dpp_parse_uri_mac(bi, mac) < 0 || in dpp_bootstrap_gen()
4479 dpp_parse_uri_info(bi, info) < 0 || in dpp_bootstrap_gen()
4480 dpp_parse_supported_curves_list(bi, supported_curves) < 0 || in dpp_bootstrap_gen()
4481 dpp_parse_uri_host(bi, host) < 0 || in dpp_bootstrap_gen()
4482 dpp_gen_uri(bi) < 0) in dpp_bootstrap_gen()
4485 bi->id = dpp_next_id(dpp); in dpp_bootstrap_gen()
4486 dl_list_add(&dpp->bootstrap, &bi->list); in dpp_bootstrap_gen()
4487 ret = bi->id; in dpp_bootstrap_gen()
4488 bi = NULL; in dpp_bootstrap_gen()
4497 dpp_bootstrap_info_free(bi); in dpp_bootstrap_gen()
4505 struct dpp_bootstrap_info *bi; in dpp_bootstrap_get_id() local
4510 dl_list_for_each(bi, &dpp->bootstrap, struct dpp_bootstrap_info, list) { in dpp_bootstrap_get_id()
4511 if (bi->id == id) in dpp_bootstrap_get_id()
4512 return bi; in dpp_bootstrap_get_id()
4536 struct dpp_bootstrap_info *bi; in dpp_bootstrap_get_uri() local
4538 bi = dpp_bootstrap_get_id(dpp, id); in dpp_bootstrap_get_uri()
4539 if (!bi) in dpp_bootstrap_get_uri()
4541 return bi->uri; in dpp_bootstrap_get_uri()
4548 struct dpp_bootstrap_info *bi; in dpp_bootstrap_info() local
4554 bi = dpp_bootstrap_get_id(dpp, id); in dpp_bootstrap_info()
4555 if (!bi) in dpp_bootstrap_info()
4557 wpa_snprintf_hex(pkhash, sizeof(pkhash), bi->pubkey_hash, in dpp_bootstrap_info()
4561 if (bi->supported_curves) { in dpp_bootstrap_info()
4574 if (!(bi->supported_curves & BIT(i))) in dpp_bootstrap_info()
4589 if (bi->host) { in dpp_bootstrap_info()
4593 hostapd_ip_txt(bi->host, buf, sizeof(buf)), in dpp_bootstrap_info()
4594 bi->port); in dpp_bootstrap_info()
4607 dpp_bootstrap_type_txt(bi->type), in dpp_bootstrap_info()
4608 MAC2STR(bi->mac_addr), in dpp_bootstrap_info()
4609 bi->info ? bi->info : "", in dpp_bootstrap_info()
4610 bi->num_freq, in dpp_bootstrap_info()
4611 bi->num_freq == 1 ? bi->freq[0] : 0, in dpp_bootstrap_info()
4612 bi->curve->name, in dpp_bootstrap_info()
4614 bi->version, in dpp_bootstrap_info()
4622 struct dpp_bootstrap_info *bi; in dpp_bootstrap_set() local
4624 bi = dpp_bootstrap_get_id(dpp, id); in dpp_bootstrap_set()
4625 if (!bi) in dpp_bootstrap_set()
4628 str_clear_free(bi->configurator_params); in dpp_bootstrap_set()
4631 bi->configurator_params = os_strdup(params); in dpp_bootstrap_set()
4632 return bi->configurator_params ? 0 : -1; in dpp_bootstrap_set()
4635 bi->configurator_params = NULL; in dpp_bootstrap_set()
4645 struct dpp_bootstrap_info *bi; in dpp_bootstrap_find_pair() local
4652 dl_list_for_each(bi, &dpp->bootstrap, struct dpp_bootstrap_info, list) { in dpp_bootstrap_find_pair()
4653 if (!*own_bi && bi->own && in dpp_bootstrap_find_pair()
4654 os_memcmp(bi->pubkey_hash, r_bootstrap, in dpp_bootstrap_find_pair()
4658 *own_bi = bi; in dpp_bootstrap_find_pair()
4661 if (!*peer_bi && !bi->own && in dpp_bootstrap_find_pair()
4662 os_memcmp(bi->pubkey_hash, i_bootstrap, in dpp_bootstrap_find_pair()
4666 *peer_bi = bi; in dpp_bootstrap_find_pair()
4679 struct dpp_bootstrap_info *bi; in dpp_bootstrap_find_chirp() local
4684 dl_list_for_each(bi, &dpp->bootstrap, struct dpp_bootstrap_info, list) { in dpp_bootstrap_find_chirp()
4685 if (!bi->own && os_memcmp(bi->pubkey_hash_chirp, hash, in dpp_bootstrap_find_chirp()
4687 return bi; in dpp_bootstrap_find_chirp()
5066 struct wpabuf * dpp_build_presence_announcement(struct dpp_bootstrap_info *bi) in dpp_build_presence_announcement() argument
5077 dpp_build_attr_r_bootstrap_key_hash(msg, bi->pubkey_hash_chirp); in dpp_build_presence_announcement()
5100 struct wpabuf * dpp_build_pb_announcement(struct dpp_bootstrap_info *bi) in dpp_build_pb_announcement() argument
5103 const u8 *r_hash = bi->pubkey_hash_chirp; in dpp_build_pb_announcement()
5135 struct wpabuf * dpp_build_pb_announcement_resp(struct dpp_bootstrap_info *bi, in dpp_build_pb_announcement_resp() argument
5141 const u8 *i_hash = bi->pubkey_hash_chirp; in dpp_build_pb_announcement_resp()