$search
#include "utils/includes.h"
#include "utils/common.h"
#include "utils/base64.h"
#include "utils/eloop.h"
#include "utils/uuid.h"
#include "utils/list.h"
#include "crypto/crypto.h"
#include "crypto/sha256.h"
#include "common/ieee802_11_defs.h"
#include "wps_i.h"
#include "wps_dev_attr.h"
#include "wps_upnp.h"
#include "wps_upnp_i.h"
Go to the source code of this file.
Classes | |
struct | wps_pbc_session |
struct | wps_registrar |
struct | wps_registrar_device |
struct | wps_uuid_pin |
Defines | |
#define | PIN_EXPIRES BIT(1) |
#define | PIN_LOCKED BIT(0) |
#define | WPS_STRDUP(n) |
#define | WPS_WORKAROUNDS |
Functions | |
static int | wps_build_ap_settings (struct wps_data *wps, struct wpabuf *msg) |
static int | wps_build_ap_setup_locked (struct wps_context *wps, struct wpabuf *msg) |
static int | wps_build_config_methods_r (struct wps_registrar *reg, struct wpabuf *msg) |
int | wps_build_cred (struct wps_data *wps, struct wpabuf *msg) |
static int | wps_build_cred_auth_type (struct wpabuf *msg, const struct wps_credential *cred) |
static int | wps_build_cred_encr_type (struct wpabuf *msg, const struct wps_credential *cred) |
static int | wps_build_cred_mac_addr (struct wpabuf *msg, const struct wps_credential *cred) |
static int | wps_build_cred_network_idx (struct wpabuf *msg, const struct wps_credential *cred) |
static int | wps_build_cred_network_key (struct wpabuf *msg, const struct wps_credential *cred) |
static int | wps_build_cred_ssid (struct wpabuf *msg, const struct wps_credential *cred) |
static int | wps_build_credential (struct wpabuf *msg, const struct wps_credential *cred) |
static struct wpabuf * | wps_build_m2 (struct wps_data *wps) |
static struct wpabuf * | wps_build_m2d (struct wps_data *wps) |
static struct wpabuf * | wps_build_m4 (struct wps_data *wps) |
static struct wpabuf * | wps_build_m6 (struct wps_data *wps) |
static struct wpabuf * | wps_build_m8 (struct wps_data *wps) |
static int | wps_build_probe_config_methods (struct wps_registrar *reg, struct wpabuf *msg) |
static int | wps_build_r_hash (struct wps_data *wps, struct wpabuf *msg) |
static int | wps_build_r_snonce1 (struct wps_data *wps, struct wpabuf *msg) |
static int | wps_build_r_snonce2 (struct wps_data *wps, struct wpabuf *msg) |
static int | wps_build_resp_type (struct wps_registrar *reg, struct wpabuf *msg) |
static int | wps_build_sel_reg_config_methods (struct wps_registrar *reg, struct wpabuf *msg) |
static int | wps_build_sel_reg_dev_password_id (struct wps_registrar *reg, struct wpabuf *msg) |
static int | wps_build_selected_registrar (struct wps_registrar *reg, struct wpabuf *msg) |
static int | wps_build_uuid_r (struct wps_data *wps, struct wpabuf *msg) |
static int | wps_build_wps_state (struct wps_context *wps, struct wpabuf *msg) |
static struct wpabuf * | wps_build_wsc_ack (struct wps_data *wps) |
static struct wpabuf * | wps_build_wsc_nack (struct wps_data *wps) |
static int | wps_cb_new_psk (struct wps_registrar *reg, const u8 *mac_addr, const u8 *psk, size_t psk_len) |
static void | wps_cb_pin_needed (struct wps_registrar *reg, const u8 *uuid_e, const struct wps_device_data *dev) |
static void | wps_cb_reg_success (struct wps_registrar *reg, const u8 *mac_addr, const u8 *uuid_e) |
static int | wps_cb_set_ie (struct wps_registrar *reg, struct wpabuf *beacon_ie, struct wpabuf *probe_resp_ie) |
static void | wps_cb_set_sel_reg (struct wps_registrar *reg) |
static void | wps_cred_update (struct wps_credential *dst, struct wps_credential *src) |
static void | wps_device_clone_data (struct wps_device_data *dst, struct wps_device_data *src) |
static struct wps_registrar_device * | wps_device_get (struct wps_registrar *reg, const u8 *addr) |
int | wps_device_store (struct wps_registrar *reg, struct wps_device_data *dev, const u8 *uuid) |
static void | wps_free_devices (struct wps_registrar_device *dev) |
static void | wps_free_pbc_sessions (struct wps_pbc_session *pbc) |
static void | wps_free_pin (struct wps_uuid_pin *pin) |
static void | wps_free_pins (struct dl_list *pins) |
static int | wps_get_dev_password (struct wps_data *wps) |
static struct wpabuf * | wps_ie_encapsulate (struct wpabuf *data) |
static int | wps_process_ap_settings_r (struct wps_data *wps, struct wps_parse_attr *attr) |
static int | wps_process_assoc_state (struct wps_data *wps, const u8 *assoc) |
static int | wps_process_auth_type_flags (struct wps_data *wps, const u8 *auth) |
static int | wps_process_config_error (struct wps_data *wps, const u8 *err) |
static int | wps_process_config_methods (struct wps_data *wps, const u8 *methods) |
static int | wps_process_conn_type_flags (struct wps_data *wps, const u8 *conn) |
static int | wps_process_dev_password_id (struct wps_data *wps, const u8 *pw_id) |
static int | wps_process_e_hash1 (struct wps_data *wps, const u8 *e_hash1) |
static int | wps_process_e_hash2 (struct wps_data *wps, const u8 *e_hash2) |
static int | wps_process_e_snonce1 (struct wps_data *wps, const u8 *e_snonce1) |
static int | wps_process_e_snonce2 (struct wps_data *wps, const u8 *e_snonce2) |
static int | wps_process_encr_type_flags (struct wps_data *wps, const u8 *encr) |
static int | wps_process_enrollee_nonce (struct wps_data *wps, const u8 *e_nonce) |
static enum wps_process_res | wps_process_m1 (struct wps_data *wps, struct wps_parse_attr *attr) |
static enum wps_process_res | wps_process_m3 (struct wps_data *wps, const struct wpabuf *msg, struct wps_parse_attr *attr) |
static enum wps_process_res | wps_process_m5 (struct wps_data *wps, const struct wpabuf *msg, struct wps_parse_attr *attr) |
static enum wps_process_res | wps_process_m7 (struct wps_data *wps, const struct wpabuf *msg, struct wps_parse_attr *attr) |
static int | wps_process_mac_addr (struct wps_data *wps, const u8 *mac_addr) |
static int | wps_process_pubkey (struct wps_data *wps, const u8 *pk, size_t pk_len) |
static int | wps_process_registrar_nonce (struct wps_data *wps, const u8 *r_nonce) |
static int | wps_process_uuid_e (struct wps_data *wps, const u8 *uuid_e) |
static int | wps_process_wps_state (struct wps_data *wps, const u8 *state) |
static enum wps_process_res | wps_process_wsc_ack (struct wps_data *wps, const struct wpabuf *msg) |
static enum wps_process_res | wps_process_wsc_done (struct wps_data *wps, const struct wpabuf *msg) |
static enum wps_process_res | wps_process_wsc_msg (struct wps_data *wps, const struct wpabuf *msg) |
static enum wps_process_res | wps_process_wsc_nack (struct wps_data *wps, const struct wpabuf *msg) |
static void | wps_registrar_add_pbc_session (struct wps_registrar *reg, const u8 *addr, const u8 *uuid_e) |
int | wps_registrar_add_pin (struct wps_registrar *reg, const u8 *uuid, const u8 *pin, size_t pin_len, int timeout) |
int | wps_registrar_button_pushed (struct wps_registrar *reg) |
void | wps_registrar_deinit (struct wps_registrar *reg) |
static void | wps_registrar_expire_pins (struct wps_registrar *reg) |
int | wps_registrar_get_info (struct wps_registrar *reg, const u8 *addr, char *buf, size_t buflen) |
struct wpabuf * | wps_registrar_get_msg (struct wps_data *wps, enum wsc_op_code *op_code) |
static const u8 * | wps_registrar_get_pin (struct wps_registrar *reg, const u8 *uuid, size_t *pin_len) |
struct wps_registrar * | wps_registrar_init (struct wps_context *wps, const struct wps_registrar_config *cfg) |
int | wps_registrar_invalidate_pin (struct wps_registrar *reg, const u8 *uuid) |
static void | wps_registrar_pbc_completed (struct wps_registrar *reg) |
static int | wps_registrar_pbc_overlap (struct wps_registrar *reg, const u8 *addr, const u8 *uuid_e) |
static void | wps_registrar_pbc_timeout (void *eloop_ctx, void *timeout_ctx) |
static void | wps_registrar_pin_completed (struct wps_registrar *reg) |
void | wps_registrar_probe_req_rx (struct wps_registrar *reg, const u8 *addr, const struct wpabuf *wps_data) |
enum wps_process_res | wps_registrar_process_msg (struct wps_data *wps, enum wsc_op_code op_code, const struct wpabuf *msg) |
static void | wps_registrar_remove_pbc_session (struct wps_registrar *reg, const u8 *addr, const u8 *uuid_e) |
static void | wps_registrar_sel_reg_union (struct wps_registrar *reg) |
void | wps_registrar_selected_registrar_changed (struct wps_registrar *reg) |
static void | wps_registrar_set_selected_timeout (void *eloop_ctx, void *timeout_ctx) |
static void | wps_registrar_stop_pbc (struct wps_registrar *reg) |
int | wps_registrar_unlock_pin (struct wps_registrar *reg, const u8 *uuid) |
int | wps_registrar_update_ie (struct wps_registrar *reg) |
static void | wps_remove_pin (struct wps_uuid_pin *pin) |
static int | wps_set_ie (struct wps_registrar *reg) |
static void | wps_sta_cred_cb (struct wps_data *wps) |
#define PIN_EXPIRES BIT(1) |
Definition at line 39 of file wps_registrar.c.
#define PIN_LOCKED BIT(0) |
Definition at line 38 of file wps_registrar.c.
#define WPS_WORKAROUNDS |
Definition at line 30 of file wps_registrar.c.
Definition at line 1320 of file wps_registrar.c.
static int wps_build_ap_setup_locked | ( | struct wps_context * | wps, | |
struct wpabuf * | msg | |||
) | [static] |
Definition at line 339 of file wps_registrar.c.
static int wps_build_config_methods_r | ( | struct wps_registrar * | reg, | |
struct wpabuf * | msg | |||
) | [static] |
Definition at line 418 of file wps_registrar.c.
Definition at line 1185 of file wps_registrar.c.
static int wps_build_cred_auth_type | ( | struct wpabuf * | msg, | |
const struct wps_credential * | cred | |||
) | [static] |
Definition at line 1123 of file wps_registrar.c.
static int wps_build_cred_encr_type | ( | struct wpabuf * | msg, | |
const struct wps_credential * | cred | |||
) | [static] |
Definition at line 1135 of file wps_registrar.c.
static int wps_build_cred_mac_addr | ( | struct wpabuf * | msg, | |
const struct wps_credential * | cred | |||
) | [static] |
Definition at line 1159 of file wps_registrar.c.
static int wps_build_cred_network_idx | ( | struct wpabuf * | msg, | |
const struct wps_credential * | cred | |||
) | [static] |
Definition at line 1101 of file wps_registrar.c.
static int wps_build_cred_network_key | ( | struct wpabuf * | msg, | |
const struct wps_credential * | cred | |||
) | [static] |
Definition at line 1147 of file wps_registrar.c.
static int wps_build_cred_ssid | ( | struct wpabuf * | msg, | |
const struct wps_credential * | cred | |||
) | [static] |
Definition at line 1112 of file wps_registrar.c.
static int wps_build_credential | ( | struct wpabuf * | msg, | |
const struct wps_credential * | cred | |||
) | [static] |
Definition at line 1171 of file wps_registrar.c.
Definition at line 1331 of file wps_registrar.c.
Definition at line 1374 of file wps_registrar.c.
Definition at line 1411 of file wps_registrar.c.
Definition at line 1448 of file wps_registrar.c.
Definition at line 1483 of file wps_registrar.c.
static int wps_build_probe_config_methods | ( | struct wps_registrar * | reg, | |
struct wpabuf * | msg | |||
) | [static] |
Definition at line 401 of file wps_registrar.c.
Definition at line 1032 of file wps_registrar.c.
Definition at line 1080 of file wps_registrar.c.
Definition at line 1090 of file wps_registrar.c.
static int wps_build_resp_type | ( | struct wps_registrar * | reg, | |
struct wpabuf * | msg | |||
) | [static] |
Definition at line 429 of file wps_registrar.c.
static int wps_build_sel_reg_config_methods | ( | struct wps_registrar * | reg, | |
struct wpabuf * | msg | |||
) | [static] |
Definition at line 381 of file wps_registrar.c.
static int wps_build_sel_reg_dev_password_id | ( | struct wps_registrar * | reg, | |
struct wpabuf * | msg | |||
) | [static] |
Definition at line 365 of file wps_registrar.c.
static int wps_build_selected_registrar | ( | struct wps_registrar * | reg, | |
struct wpabuf * | msg | |||
) | [static] |
Definition at line 352 of file wps_registrar.c.
Definition at line 1022 of file wps_registrar.c.
static int wps_build_wps_state | ( | struct wps_context * | wps, | |
struct wpabuf * | msg | |||
) | [static] |
Definition at line 303 of file wps_registrar.c.
Definition at line 1518 of file wps_registrar.c.
Definition at line 1540 of file wps_registrar.c.
static int wps_cb_new_psk | ( | struct wps_registrar * | reg, | |
const u8 * | mac_addr, | |||
const u8 * | psk, | |||
size_t | psk_len | |||
) | [static] |
Definition at line 825 of file wps_registrar.c.
static void wps_cb_pin_needed | ( | struct wps_registrar * | reg, | |
const u8 * | uuid_e, | |||
const struct wps_device_data * | dev | |||
) | [static] |
Definition at line 835 of file wps_registrar.c.
static void wps_cb_reg_success | ( | struct wps_registrar * | reg, | |
const u8 * | mac_addr, | |||
const u8 * | uuid_e | |||
) | [static] |
Definition at line 845 of file wps_registrar.c.
static int wps_cb_set_ie | ( | struct wps_registrar * | reg, | |
struct wpabuf * | beacon_ie, | |||
struct wpabuf * | probe_resp_ie | |||
) | [static] |
Definition at line 855 of file wps_registrar.c.
static void wps_cb_set_sel_reg | ( | struct wps_registrar * | reg | ) | [static] |
Definition at line 862 of file wps_registrar.c.
static void wps_cred_update | ( | struct wps_credential * | dst, | |
struct wps_credential * | src | |||
) | [static] |
Definition at line 2244 of file wps_registrar.c.
static void wps_device_clone_data | ( | struct wps_device_data * | dst, | |
struct wps_device_data * | src | |||
) | [static] |
Definition at line 165 of file wps_registrar.c.
static struct wps_registrar_device* wps_device_get | ( | struct wps_registrar * | reg, | |
const u8 * | addr | |||
) | [static, read] |
Definition at line 152 of file wps_registrar.c.
int wps_device_store | ( | struct wps_registrar * | reg, | |
struct wps_device_data * | dev, | |||
const u8 * | uuid | |||
) |
Definition at line 184 of file wps_registrar.c.
static void wps_free_devices | ( | struct wps_registrar_device * | dev | ) | [static] |
Definition at line 139 of file wps_registrar.c.
static void wps_free_pbc_sessions | ( | struct wps_pbc_session * | pbc | ) | [static] |
Definition at line 75 of file wps_registrar.c.
static void wps_free_pin | ( | struct wps_uuid_pin * | pin | ) | [static] |
Definition at line 45 of file wps_registrar.c.
static void wps_free_pins | ( | struct dl_list * | pins | ) | [static] |
Definition at line 59 of file wps_registrar.c.
static int wps_get_dev_password | ( | struct wps_data * | wps | ) | [static] |
Definition at line 988 of file wps_registrar.c.
Definition at line 881 of file wps_registrar.c.
static int wps_process_ap_settings_r | ( | struct wps_data * | wps, | |
struct wps_parse_attr * | attr | |||
) | [static] |
Definition at line 2257 of file wps_registrar.c.
Definition at line 2028 of file wps_registrar.c.
Definition at line 1880 of file wps_registrar.c.
Definition at line 2044 of file wps_registrar.c.
Definition at line 1975 of file wps_registrar.c.
Definition at line 1960 of file wps_registrar.c.
Definition at line 1706 of file wps_registrar.c.
Definition at line 1720 of file wps_registrar.c.
Definition at line 1734 of file wps_registrar.c.
Definition at line 1748 of file wps_registrar.c.
Definition at line 1788 of file wps_registrar.c.
Definition at line 1920 of file wps_registrar.c.
Definition at line 1661 of file wps_registrar.c.
static enum wps_process_res wps_process_m1 | ( | struct wps_data * | wps, | |
struct wps_parse_attr * | attr | |||
) | [static] |
Definition at line 2060 of file wps_registrar.c.
static enum wps_process_res wps_process_m3 | ( | struct wps_data * | wps, | |
const struct wpabuf * | msg, | |||
struct wps_parse_attr * | attr | |||
) | [static] |
Definition at line 2133 of file wps_registrar.c.
static enum wps_process_res wps_process_m5 | ( | struct wps_data * | wps, | |
const struct wpabuf * | msg, | |||
struct wps_parse_attr * | attr | |||
) | [static] |
Definition at line 2167 of file wps_registrar.c.
static enum wps_process_res wps_process_m7 | ( | struct wps_data * | wps, | |
const struct wpabuf * | msg, | |||
struct wps_parse_attr * | attr | |||
) | [static] |
Definition at line 2290 of file wps_registrar.c.
Definition at line 1831 of file wps_registrar.c.
Definition at line 1847 of file wps_registrar.c.
Definition at line 1676 of file wps_registrar.c.
Definition at line 1692 of file wps_registrar.c.
Definition at line 2013 of file wps_registrar.c.
static enum wps_process_res wps_process_wsc_ack | ( | struct wps_data * | wps, | |
const struct wpabuf * | msg | |||
) | [static] |
Definition at line 2424 of file wps_registrar.c.
static enum wps_process_res wps_process_wsc_done | ( | struct wps_data * | wps, | |
const struct wpabuf * | msg | |||
) | [static] |
Definition at line 2579 of file wps_registrar.c.
static enum wps_process_res wps_process_wsc_msg | ( | struct wps_data * | wps, | |
const struct wpabuf * | msg | |||
) | [static] |
Definition at line 2347 of file wps_registrar.c.
static enum wps_process_res wps_process_wsc_nack | ( | struct wps_data * | wps, | |
const struct wpabuf * | msg | |||
) | [static] |
Definition at line 2497 of file wps_registrar.c.
static void wps_registrar_add_pbc_session | ( | struct wps_registrar * | reg, | |
const u8 * | addr, | |||
const u8 * | uuid_e | |||
) | [static] |
Definition at line 205 of file wps_registrar.c.
int wps_registrar_add_pin | ( | struct wps_registrar * | reg, | |
const u8 * | uuid, | |||
const u8 * | pin, | |||
size_t | pin_len, | |||
int | timeout | |||
) |
wps_registrar_add_pin - Configure a new PIN for Registrar : Registrar data from wps_registrar_init() : UUID-E or NULL for wildcard (any UUID) : PIN (Device Password) : Length of pin in octets : Time (in seconds) when the PIN will be invalidated; 0 = no timeout Returns: 0 on success, -1 on failure
Definition at line 519 of file wps_registrar.c.
int wps_registrar_button_pushed | ( | struct wps_registrar * | reg | ) |
wps_registrar_button_pushed - Notify Registrar that AP button was pushed : Registrar data from wps_registrar_init() Returns: 0 on success, -1 on failure
This function is called on an AP when a push button is pushed to activate PBC mode. The PBC mode will be stopped after walk time (2 minutes) timeout or when a PBC registration is completed.
Definition at line 710 of file wps_registrar.c.
void wps_registrar_deinit | ( | struct wps_registrar * | reg | ) |
wps_registrar_deinit - Deinitialize WPS Registrar data : Registrar data from wps_registrar_init()
Definition at line 496 of file wps_registrar.c.
static void wps_registrar_expire_pins | ( | struct wps_registrar * | reg | ) | [static] |
Definition at line 563 of file wps_registrar.c.
int wps_registrar_get_info | ( | struct wps_registrar * | reg, | |
const u8 * | addr, | |||
char * | buf, | |||
size_t | buflen | |||
) |
Definition at line 2858 of file wps_registrar.c.
struct wpabuf* wps_registrar_get_msg | ( | struct wps_data * | wps, | |
enum wsc_op_code * | op_code | |||
) | [read] |
Definition at line 1563 of file wps_registrar.c.
static const u8* wps_registrar_get_pin | ( | struct wps_registrar * | reg, | |
const u8 * | uuid, | |||
size_t * | pin_len | |||
) | [static] |
Definition at line 605 of file wps_registrar.c.
struct wps_registrar* wps_registrar_init | ( | struct wps_context * | wps, | |
const struct wps_registrar_config * | cfg | |||
) | [read] |
wps_registrar_init - Initialize WPS Registrar data : Pointer to longterm WPS context : Registrar configuration Returns: Pointer to allocated Registrar data or NULL on failure
This function is used to initialize WPS Registrar functionality. It can be used for a single Registrar run (e.g., when run in a supplicant) or multiple runs (e.g., when run as an internal Registrar in an AP). Caller is responsible for freeing the returned data with wps_registrar_deinit() when Registrar functionality is not needed anymore.
Definition at line 453 of file wps_registrar.c.
int wps_registrar_invalidate_pin | ( | struct wps_registrar * | reg, | |
const u8 * | uuid | |||
) |
wps_registrar_invalidate_pin - Invalidate a PIN for a specific UUID-E : Registrar data from wps_registrar_init() : UUID-E Returns: 0 on success, -1 on failure (e.g., PIN not found)
Definition at line 587 of file wps_registrar.c.
static void wps_registrar_pbc_completed | ( | struct wps_registrar * | reg | ) | [static] |
Definition at line 731 of file wps_registrar.c.
static int wps_registrar_pbc_overlap | ( | struct wps_registrar * | reg, | |
const u8 * | addr, | |||
const u8 * | uuid_e | |||
) | [static] |
Definition at line 278 of file wps_registrar.c.
static void wps_registrar_pbc_timeout | ( | void * | eloop_ctx, | |
void * | timeout_ctx | |||
) | [static] |
Definition at line 691 of file wps_registrar.c.
static void wps_registrar_pin_completed | ( | struct wps_registrar * | reg | ) | [static] |
Definition at line 739 of file wps_registrar.c.
void wps_registrar_probe_req_rx | ( | struct wps_registrar * | reg, | |
const u8 * | addr, | |||
const struct wpabuf * | wps_data | |||
) |
wps_registrar_probe_req_rx - Notify Registrar of Probe Request : Registrar data from wps_registrar_init() : MAC address of the Probe Request sender : WPS IE contents
This function is called on an AP when a Probe Request with WPS IE is received. This is used to track PBC mode use and to detect possible overlap situation with other WPS APs.
Definition at line 758 of file wps_registrar.c.
enum wps_process_res wps_registrar_process_msg | ( | struct wps_data * | wps, | |
enum wsc_op_code | op_code, | |||
const struct wpabuf * | msg | |||
) |
Definition at line 2695 of file wps_registrar.c.
static void wps_registrar_remove_pbc_session | ( | struct wps_registrar * | reg, | |
const u8 * | addr, | |||
const u8 * | uuid_e | |||
) | [static] |
Definition at line 256 of file wps_registrar.c.
static void wps_registrar_sel_reg_union | ( | struct wps_registrar * | reg | ) | [static] |
Definition at line 2796 of file wps_registrar.c.
void wps_registrar_selected_registrar_changed | ( | struct wps_registrar * | reg | ) |
wps_registrar_selected_registrar_changed - SetSelectedRegistrar change : Registrar data from wps_registrar_init()
This function is called when selected registrar state changes, e.g., when an AP receives a SetSelectedRegistrar UPnP message.
Definition at line 2830 of file wps_registrar.c.
static void wps_registrar_set_selected_timeout | ( | void * | eloop_ctx, | |
void * | timeout_ctx | |||
) | [static] |
Definition at line 2766 of file wps_registrar.c.
static void wps_registrar_stop_pbc | ( | struct wps_registrar * | reg | ) | [static] |
Definition at line 683 of file wps_registrar.c.
int wps_registrar_unlock_pin | ( | struct wps_registrar * | reg, | |
const u8 * | uuid | |||
) |
wps_registrar_unlock_pin - Unlock a PIN for a specific UUID-E : Registrar data from wps_registrar_init() : UUID-E Returns: 0 on success, -1 on failure
PINs are locked to enforce only one concurrent use. This function unlocks a PIN to allow it to be used again. If the specified PIN was configured using a wildcard UUID, it will be removed instead of allowing multiple uses.
Definition at line 663 of file wps_registrar.c.
int wps_registrar_update_ie | ( | struct wps_registrar * | reg | ) |
Definition at line 2760 of file wps_registrar.c.
static void wps_remove_pin | ( | struct wps_uuid_pin * | pin | ) | [static] |
Definition at line 52 of file wps_registrar.c.
static int wps_set_ie | ( | struct wps_registrar * | reg | ) | [static] |
Definition at line 912 of file wps_registrar.c.
static void wps_sta_cred_cb | ( | struct wps_data * | wps | ) | [static] |
Definition at line 2222 of file wps_registrar.c.