int wpa_supplicant_ap_wps_pin(struct wpa_supplicant *wpa_s, const u8 *bssid, const char *pin, char *buf, size_t buflen, int timeout) { int ret, ret_len = 0; if (!wpa_s->ap_iface) return -1; if (pin == NULL) { unsigned int rpin; if (wps_generate_pin(&rpin) < 0) return -1; ret_len = os_snprintf(buf, buflen, "%08d", rpin); if (os_snprintf_error(buflen, ret_len)) return -1; pin = buf; } else if (buf) { ret_len = os_snprintf(buf, buflen, "%s", pin); if (os_snprintf_error(buflen, ret_len)) return -1; } ret = hostapd_wps_add_pin(wpa_s->ap_iface->bss[0], bssid, "any", pin, timeout); if (ret) return -1; return ret_len; }
void cmd_wps(int argc, char **argv) { wps_judge_staion_disconnect(); if((argc == 2 || argc == 3 ) && (argv[1] != NULL)){ if(strcmp(argv[1],"pin") == 0){ unsigned int pin_val = 0; /* start pin */ if(argc == 2){ char device_pin[10]; pin_val = wps_generate_pin(); sprintf(device_pin, "%08d", pin_val); printf("\n\rWPS: Start WPS PIN Display. PIN: %s\n\r", device_pin); wps_start(WPS_CONFIG_DISPLAY, (char*)device_pin, 0, NULL); }else{ pin_val = atoi(argv[2]); if (!wps_pin_valid(pin_val)) { printf("\n\rWPS: Device pin code is invalid. Not triger WPS.\n"); return; } printf("\n\rWPS: Start WPS PIN Keypad.\n\r"); wps_start(WPS_CONFIG_KEYPAD, argv[2], 0, NULL); } }else if(strcmp(argv[1],"pbc") == 0){ /* start pbc */ printf("\n\rWPS: Start WPS PBC.\n\r"); wps_start(WPS_CONFIG_PUSHBUTTON, NULL, 0, NULL); }else{ printf("\n\rWPS: Wps Method is wrong. Not triger WPS.\n"); return; } } }
const char * hostapd_wps_ap_pin_random(struct hostapd_data *hapd, int timeout) { unsigned int pin; struct wps_ap_pin_data data; pin = wps_generate_pin(); os_snprintf(data.pin_txt, sizeof(data.pin_txt), "%08u", pin); data.timeout = timeout; hostapd_wps_for_each(hapd, wps_ap_pin_set, &data); return hapd->conf->ap_pin; }
static void _wps_pin_cb(void* data, Evas_Object* obj, void* event_info) { __COMMON_FUNC_ENTER__; unsigned int rpin = 0; char npin[9] = { '\0' }; int pin_len = 0; int ret = WLAN_MANAGER_ERR_NONE; wifi_ap_h ap = NULL; if (!devpkr_app_state->passpopup) { return; } /* Generate WPS pin */ rpin = wps_generate_pin(); if (rpin > 0) g_snprintf(npin, sizeof(npin), "%08d", rpin); pin_len = strlen(npin); if (pin_len != 8) { view_alerts_popup_show(sc(PACKAGE, I18N_TYPE_Invalid_pin)); __COMMON_FUNC_EXIT__; return; } ap = passwd_popup_get_ap(devpkr_app_state->passpopup); ret = wlan_manager_wps_pin_connect(ap, npin); if (ret == WLAN_MANAGER_ERR_NONE) { INFO_LOG(UG_NAME_NORMAL, "wlan_manager_wps_pin_connect successful"); create_pbc_popup(devpkr_app_state->passpopup, __wps_pbc_popup_cancel_connecting, NULL, POPUP_WPS_PIN, npin); evas_object_event_callback_add( devpkr_app_state->passpopup->pbc_popup_data->popup, EVAS_CALLBACK_KEY_DOWN, __pbc_popup_keydown_cb, NULL); } else { ERROR_LOG(UG_NAME_NORMAL, "wlan_manager_wps_pin_connect failed"); passwd_popup_free(devpkr_app_state->passpopup); devpkr_app_state->passpopup = NULL; } __COMMON_FUNC_EXIT__; }
const char * wpas_wps_ap_pin_random(struct wpa_supplicant *wpa_s, int timeout) { struct hostapd_data *hapd; unsigned int pin; char pin_txt[9]; if (wpa_s->ap_iface == NULL) return NULL; hapd = wpa_s->ap_iface->bss[0]; pin = wps_generate_pin(); os_snprintf(pin_txt, sizeof(pin_txt), "%u", pin); os_free(hapd->conf->ap_pin); hapd->conf->ap_pin = os_strdup(pin_txt); if (hapd->conf->ap_pin == NULL) return NULL; wpas_wps_ap_pin_enable(wpa_s, timeout); return hapd->conf->ap_pin; }
int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid, const char *pin, int p2p_group, u16 dev_pw_id) { struct wpa_ssid *ssid; char val[128]; unsigned int rpin = 0; wpas_clear_wps(wpa_s); ssid = wpas_wps_add_network(wpa_s, 0, bssid); if (ssid == NULL) return -1; ssid->temporary = 1; ssid->p2p_group = p2p_group; #ifdef CONFIG_P2P if (p2p_group && wpa_s->go_params && wpa_s->go_params->ssid_len) { ssid->ssid = os_zalloc(wpa_s->go_params->ssid_len + 1); if (ssid->ssid) { ssid->ssid_len = wpa_s->go_params->ssid_len; os_memcpy(ssid->ssid, wpa_s->go_params->ssid, ssid->ssid_len); wpa_hexdump_ascii(MSG_DEBUG, "WPS: Use specific AP " "SSID", ssid->ssid, ssid->ssid_len); } } #endif /* CONFIG_P2P */ if (pin) os_snprintf(val, sizeof(val), "\"pin=%s dev_pw_id=%u\"", pin, dev_pw_id); else { rpin = wps_generate_pin(); os_snprintf(val, sizeof(val), "\"pin=%08d dev_pw_id=%u\"", rpin, dev_pw_id); } wpa_config_set(ssid, "phase1", val, 0); if (wpa_s->wps_fragment_size) ssid->eap.fragment_size = wpa_s->wps_fragment_size; eloop_register_timeout(WPS_PBC_WALK_TIME, 0, wpas_wps_timeout, wpa_s, NULL); wpas_wps_reassoc(wpa_s, ssid, bssid); return rpin; }
int wpa_supplicant_ap_wps_pin(struct wpa_supplicant *wpa_s, const u8 *bssid, const char *pin, char *buf, size_t buflen) { int ret, ret_len = 0; if (!wpa_s->ap_iface) return -1; if (pin == NULL) { unsigned int rpin = wps_generate_pin(); ret_len = os_snprintf(buf, buflen, "%d", rpin); pin = buf; } else ret_len = os_snprintf(buf, buflen, "%s", pin); ret = hostapd_wps_add_pin(wpa_s->ap_iface->bss[0], bssid, "any", pin, 0); if (ret) return -1; return ret_len; }
int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid, const char *pin) { struct wpa_ssid *ssid; char val[128]; unsigned int rpin = 0; wpas_clear_wps(wpa_s); ssid = wpas_wps_add_network(wpa_s, 0, bssid); if (ssid == NULL) return -1; if (pin) os_snprintf(val, sizeof(val), "\"pin=%s\"", pin); else { rpin = wps_generate_pin(); os_snprintf(val, sizeof(val), "\"pin=%08d\"", rpin); } wpa_config_set(ssid, "phase1", val, 0); eloop_register_timeout(WPS_PBC_WALK_TIME, 0, wpas_wps_timeout, wpa_s, NULL); wpas_wps_reassoc(wpa_s, ssid); return rpin; }
/* cmd_ap_wps for AP WSC setting. command style: cmd_ap_wps pbc or cmd_ap_wps pin 12345678 */ void cmd_ap_wps(int argc, char **argv) { if(rltk_wlan_running(WLAN1_IDX)){ printf("\n\rNot support con-current softAP WSC!\n\r"); return; } if((argc == 2 || argc == 3) && (argv[1] != NULL)) { if (strcmp(argv[1],"pin") == 0 ) { unsigned int pin_val = 0; if(argc == 3){ pin_val = atoi(argv[2]); if (!wps_pin_valid(pin_val)) { printf("\n\rWPS-AP: Device pin code is invalid. Not trigger WPS.\n\r"); return; } printf("\n\rWPS-AP: Start AP WPS PIN Keypad.\n"); ap_wps_start(WPS_CONFIG_KEYPAD, argv[2]); }else{ char device_pin[10]; pin_val = wps_generate_pin(); sprintf(device_pin, "%08d", pin_val); printf("\n\rWPS: Start WPS PIN Display. PIN: %s\n\r", device_pin); ap_wps_start(WPS_CONFIG_DISPLAY, (char*)device_pin); } }else if (strcmp(argv[1],"pbc") == 0) { printf("\n\rWPS-AP: Start AP WPS PBC\n"); ap_wps_start(WPS_CONFIG_PUSHBUTTON, NULL); }else{ printf("\n\rWPS-AP Usage:\"wifi_ap_wps pin [pin_code]\" or \"wifi_ap_wps pbc\"\n"); return; } } else { printf("\n\rWPS-AP Usage:\"wifi_ap_wps pin [pin_code]\" or \"wifi_ap_wps pbc\"\n"); } return; }