Lines Matching refs:bi
395 static int dpp_clone_uri(struct dpp_bootstrap_info *bi, const char *uri) in dpp_clone_uri() argument
397 bi->uri = os_strdup(uri); in dpp_clone_uri()
398 return bi->uri ? 0 : -1; in dpp_clone_uri()
401 int dpp_parse_uri_chan_list(struct dpp_bootstrap_info *bi, in dpp_parse_uri_chan_list() argument
431 } else if (bi->num_freq == DPP_BOOTSTRAP_MAX_FREQ) { in dpp_parse_uri_chan_list()
434 bi->num_freq = 0; in dpp_parse_uri_chan_list()
437 bi->freq[bi->num_freq++] = freq; in dpp_parse_uri_chan_list()
456 int dpp_parse_uri_mac(struct dpp_bootstrap_info *bi, const char *mac) in dpp_parse_uri_mac() argument
461 if (hwaddr_aton2(mac, bi->mac_addr) < 0) { in dpp_parse_uri_mac()
466 wpa_printf(MSG_DEBUG, "DPP: URI mac: " MACSTR, MAC2STR(bi->mac_addr)); in dpp_parse_uri_mac()
471 int dpp_parse_uri_info(struct dpp_bootstrap_info *bi, const char *info) in dpp_parse_uri_info() argument
481 bi->info = os_malloc(end - info + 1); in dpp_parse_uri_info()
482 if (!bi->info) in dpp_parse_uri_info()
484 os_memcpy(bi->info, info, end - info); in dpp_parse_uri_info()
485 bi->info[end - info] = '\0'; in dpp_parse_uri_info()
486 wpa_printf(MSG_DEBUG, "DPP: URI(information): %s", bi->info); in dpp_parse_uri_info()
487 if (!dpp_uri_valid_info(bi->info)) { in dpp_parse_uri_info()
509 static int dpp_parse_uri_pk(struct dpp_bootstrap_info *bi, const char *info) in dpp_parse_uri_pk() argument
533 bi->pubkey_hash) < 0) { in dpp_parse_uri_pk()
539 bi->pubkey_hash, SHA256_MAC_LEN); in dpp_parse_uri_pk()
580 bi->curve = dpp_get_curve_group_id(id); in dpp_parse_uri_pk()
581 if (!bi->curve) { in dpp_parse_uri_pk()
587 bi->pubkey = pkey; in dpp_parse_uri_pk()
600 struct dpp_bootstrap_info *bi; in dpp_parse_uri() local
642 bi = os_zalloc(sizeof(*bi)); in dpp_parse_uri()
643 if (!bi) in dpp_parse_uri()
646 if (dpp_clone_uri(bi, uri) < 0 || in dpp_parse_uri()
647 dpp_parse_uri_chan_list(bi, chan_list) < 0 || in dpp_parse_uri()
648 dpp_parse_uri_mac(bi, mac) < 0 || in dpp_parse_uri()
649 dpp_parse_uri_info(bi, info) < 0 || in dpp_parse_uri()
650 dpp_parse_uri_pk(bi, pk) < 0) { in dpp_parse_uri()
651 dpp_bootstrap_info_free(bi); in dpp_parse_uri()
652 bi = NULL; in dpp_parse_uri()
655 return bi; in dpp_parse_uri()
742 int dpp_bootstrap_key_hash(struct dpp_bootstrap_info *bi) in dpp_bootstrap_key_hash() argument
749 der = dpp_bootstrap_key_der(bi->pubkey); in dpp_bootstrap_key_hash()
757 res = sha256_vector(1, addr, len, bi->pubkey_hash); in dpp_bootstrap_key_hash()
761 wpa_hexdump(MSG_DEBUG, "DPP: Public key hash", bi->pubkey_hash, in dpp_bootstrap_key_hash()
768 char * dpp_keygen(struct dpp_bootstrap_info *bi, const char *curve, in dpp_keygen() argument
779 bi->curve = &dpp_curves[0]; in dpp_keygen()
781 bi->curve = dpp_get_curve_name(curve); in dpp_keygen()
782 if (!bi->curve) { in dpp_keygen()
789 bi->pubkey = dpp_set_keypair(&bi->curve, privkey, privkey_len); in dpp_keygen()
791 bi->pubkey = dpp_gen_keypair(bi->curve); in dpp_keygen()
792 if (!bi->pubkey) in dpp_keygen()
794 bi->own = 1; in dpp_keygen()
796 der = dpp_bootstrap_key_der(bi->pubkey); in dpp_keygen()
804 res = sha256_vector(1, addr, &len, bi->pubkey_hash); in dpp_keygen()
809 wpa_hexdump(MSG_DEBUG, "DPP: Public key hash", bi->pubkey_hash, in dpp_keygen()
1476 struct dpp_bootstrap_info *bi; in dpp_autogen_bootstrap_key() local
1483 bi = os_zalloc(sizeof(*bi)); in dpp_autogen_bootstrap_key()
1484 if (!bi) in dpp_autogen_bootstrap_key()
1486 bi->type = DPP_BOOTSTRAP_QR_CODE; in dpp_autogen_bootstrap_key()
1487 pk = dpp_keygen(bi, auth->peer_bi->curve->name, NULL, 0); in dpp_autogen_bootstrap_key()
1493 bi->uri = os_malloc(len + 1); in dpp_autogen_bootstrap_key()
1494 if (!bi->uri) in dpp_autogen_bootstrap_key()
1496 os_snprintf(bi->uri, len + 1, "DPP:K:%s;;", pk); in dpp_autogen_bootstrap_key()
1499 bi->uri); in dpp_autogen_bootstrap_key()
1501 auth->tmp_own_bi = auth->own_bi = bi; in dpp_autogen_bootstrap_key()
1508 dpp_bootstrap_info_free(bi); in dpp_autogen_bootstrap_key()
6012 struct dpp_bootstrap_info *bi; in dpp_next_id() local
6015 dl_list_for_each(bi, &dpp->bootstrap, struct dpp_bootstrap_info, list) { in dpp_next_id()
6016 if (bi->id > max_id) in dpp_next_id()
6017 max_id = bi->id; in dpp_next_id()
6024 struct dpp_bootstrap_info *bi, *tmp; in dpp_bootstrap_del() local
6030 dl_list_for_each_safe(bi, tmp, &dpp->bootstrap, in dpp_bootstrap_del()
6032 if (id && bi->id != id) in dpp_bootstrap_del()
6035 dl_list_del(&bi->list); in dpp_bootstrap_del()
6036 dpp_bootstrap_info_free(bi); in dpp_bootstrap_del()
6048 struct dpp_bootstrap_info *bi; in dpp_add_qr_code() local
6053 bi = dpp_parse_uri(uri); in dpp_add_qr_code()
6054 if (!bi) in dpp_add_qr_code()
6057 bi->type = DPP_BOOTSTRAP_QR_CODE; in dpp_add_qr_code()
6058 bi->id = dpp_next_id(dpp); in dpp_add_qr_code()
6059 dl_list_add(&dpp->bootstrap, &bi->list); in dpp_add_qr_code()
6060 return bi; in dpp_add_qr_code()
6067 struct dpp_bootstrap_info *bi; in dpp_add_nfc_uri() local
6072 bi = dpp_parse_uri(uri); in dpp_add_nfc_uri()
6073 if (!bi) in dpp_add_nfc_uri()
6076 bi->type = DPP_BOOTSTRAP_NFC_URI; in dpp_add_nfc_uri()
6077 bi->id = dpp_next_id(dpp); in dpp_add_nfc_uri()
6078 dl_list_add(&dpp->bootstrap, &bi->list); in dpp_add_nfc_uri()
6079 return bi; in dpp_add_nfc_uri()
6091 struct dpp_bootstrap_info *bi; in dpp_bootstrap_gen() local
6093 bi = os_zalloc(sizeof(*bi)); in dpp_bootstrap_gen()
6094 if (!bi) in dpp_bootstrap_gen()
6098 bi->type = DPP_BOOTSTRAP_QR_CODE; in dpp_bootstrap_gen()
6100 bi->type = DPP_BOOTSTRAP_PKEX; in dpp_bootstrap_gen()
6102 bi->type = DPP_BOOTSTRAP_NFC_URI; in dpp_bootstrap_gen()
6121 pk = dpp_keygen(bi, curve, privkey, privkey_len); in dpp_bootstrap_gen()
6127 if (dpp_parse_uri_chan_list(bi, chan) < 0) in dpp_bootstrap_gen()
6132 if (dpp_parse_uri_mac(bi, mac) < 0) in dpp_bootstrap_gen()
6137 if (dpp_parse_uri_info(bi, info) < 0) in dpp_bootstrap_gen()
6142 bi->uri = os_malloc(len + 1); in dpp_bootstrap_gen()
6143 if (!bi->uri) in dpp_bootstrap_gen()
6145 os_snprintf(bi->uri, len + 1, "DPP:%s%s%s%s%s%s%s%s%sK:%s;;", in dpp_bootstrap_gen()
6151 bi->id = dpp_next_id(dpp); in dpp_bootstrap_gen()
6152 dl_list_add(&dpp->bootstrap, &bi->list); in dpp_bootstrap_gen()
6153 ret = bi->id; in dpp_bootstrap_gen()
6154 bi = NULL; in dpp_bootstrap_gen()
6163 dpp_bootstrap_info_free(bi); in dpp_bootstrap_gen()
6171 struct dpp_bootstrap_info *bi; in dpp_bootstrap_get_id() local
6176 dl_list_for_each(bi, &dpp->bootstrap, struct dpp_bootstrap_info, list) { in dpp_bootstrap_get_id()
6177 if (bi->id == id) in dpp_bootstrap_get_id()
6178 return bi; in dpp_bootstrap_get_id()
6201 struct dpp_bootstrap_info *bi; in dpp_bootstrap_get_uri() local
6203 bi = dpp_bootstrap_get_id(dpp, id); in dpp_bootstrap_get_uri()
6204 if (!bi) in dpp_bootstrap_get_uri()
6206 return bi->uri; in dpp_bootstrap_get_uri()
6212 struct dpp_bootstrap_info *bi; in dpp_get_bootstrap_info() local
6215 bi = dpp_bootstrap_get_id(dpp, id); in dpp_get_bootstrap_info()
6216 if (!bi) in dpp_get_bootstrap_info()
6218 wpa_snprintf_hex(pkhash, sizeof(pkhash), bi->pubkey_hash, in dpp_get_bootstrap_info()
6226 dpp_bootstrap_type_txt(bi->type), in dpp_get_bootstrap_info()
6227 MAC2STR(bi->mac_addr), in dpp_get_bootstrap_info()
6228 bi->info ? bi->info : "", in dpp_get_bootstrap_info()
6229 bi->num_freq, in dpp_get_bootstrap_info()
6230 bi->curve->name, in dpp_get_bootstrap_info()
6240 struct dpp_bootstrap_info *bi; in dpp_bootstrap_find_pair() local
6247 dl_list_for_each(bi, &dpp->bootstrap, struct dpp_bootstrap_info, list) { in dpp_bootstrap_find_pair()
6248 if (!*own_bi && bi->own && in dpp_bootstrap_find_pair()
6249 os_memcmp(bi->pubkey_hash, r_bootstrap, in dpp_bootstrap_find_pair()
6253 *own_bi = bi; in dpp_bootstrap_find_pair()
6256 if (!*peer_bi && !bi->own && in dpp_bootstrap_find_pair()
6257 os_memcmp(bi->pubkey_hash, i_bootstrap, in dpp_bootstrap_find_pair()
6261 *peer_bi = bi; in dpp_bootstrap_find_pair()