|
wpa_supplicant / hostapd
2.5
|
Wi-Fi Protected Setup - Registrar. More...
#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 "crypto/random.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"Data Structures | |
| struct | wps_uuid_pin |
| struct | wps_pbc_session |
| struct | wps_registrar_device |
| struct | wps_registrar |
Macros | |
| #define | WPS_WORKAROUNDS |
| #define | wps_free_nfc_pw_tokens(t, p) do { } while (0) |
| #define | PIN_LOCKED BIT(0) |
| #define | PIN_EXPIRES BIT(1) |
| #define | WPS_STRDUP(n) |
Functions | |
| int | wps_device_store (struct wps_registrar *reg, struct wps_device_data *dev, const u8 *uuid) |
| int | wps_registrar_pbc_overlap (struct wps_registrar *reg, const u8 *addr, const u8 *uuid_e) |
| const u8 * | wps_authorized_macs (struct wps_registrar *reg, size_t *count) |
| struct wps_registrar * | wps_registrar_init (struct wps_context *wps, const struct wps_registrar_config *cfg) |
| Initialize WPS Registrar data. More... | |
| void | wps_registrar_flush (struct wps_registrar *reg) |
| void | wps_registrar_deinit (struct wps_registrar *reg) |
| Deinitialize WPS Registrar data. More... | |
| int | wps_registrar_add_pin (struct wps_registrar *reg, const u8 *addr, const u8 *uuid, const u8 *pin, size_t pin_len, int timeout) |
| Configure a new PIN for Registrar. More... | |
| int | wps_registrar_invalidate_pin (struct wps_registrar *reg, const u8 *uuid) |
| Invalidate a PIN for a specific UUID-E. More... | |
| int | wps_registrar_unlock_pin (struct wps_registrar *reg, const u8 *uuid) |
| Unlock a PIN for a specific UUID-E. More... | |
| int | wps_registrar_button_pushed (struct wps_registrar *reg, const u8 *p2p_dev_addr) |
| Notify Registrar that AP button was pushed. More... | |
| void | wps_registrar_complete (struct wps_registrar *registrar, const u8 *uuid_e, const u8 *dev_pw, size_t dev_pw_len) |
| int | wps_registrar_wps_cancel (struct wps_registrar *reg) |
| void | wps_registrar_probe_req_rx (struct wps_registrar *reg, const u8 *addr, const struct wpabuf *wps_data, int p2p_wildcard) |
| Notify Registrar of Probe Request. More... | |
| int | wps_cb_new_psk (struct wps_registrar *reg, const u8 *mac_addr, const u8 *p2p_dev_addr, const u8 *psk, size_t psk_len) |
| int | wps_build_credential_wrap (struct wpabuf *msg, const struct wps_credential *cred) |
| int | wps_build_cred (struct wps_data *wps, struct wpabuf *msg) |
| struct wpabuf * | wps_registrar_get_msg (struct wps_data *wps, enum wsc_op_code *op_code) |
| enum wps_process_res | wps_registrar_process_msg (struct wps_data *wps, enum wsc_op_code op_code, const struct wpabuf *msg) |
| int | wps_registrar_update_ie (struct wps_registrar *reg) |
| void | wps_registrar_selected_registrar_changed (struct wps_registrar *reg, u16 dev_pw_id) |
| SetSelectedRegistrar change. More... | |
| int | wps_registrar_get_info (struct wps_registrar *reg, const u8 *addr, char *buf, size_t buflen) |
| int | wps_registrar_config_ap (struct wps_registrar *reg, struct wps_credential *cred) |
Wi-Fi Protected Setup - Registrar.
| #define WPS_STRDUP | ( | n | ) |
| int wps_registrar_add_pin | ( | struct wps_registrar * | reg, |
| const u8 * | addr, | ||
| const u8 * | uuid, | ||
| const u8 * | pin, | ||
| size_t | pin_len, | ||
| int | timeout | ||
| ) |
Configure a new PIN for Registrar.
| reg | Registrar data from wps_registrar_init() |
| addr | Enrollee MAC address or NULL if not known |
| uuid | UUID-E or NULL for wildcard (any UUID) |
| pin | PIN (Device Password) |
| pin_len | Length of pin in octets |
| timeout | Time (in seconds) when the PIN will be invalidated; 0 = no timeout |
| int wps_registrar_button_pushed | ( | struct wps_registrar * | reg, |
| const u8 * | p2p_dev_addr | ||
| ) |
Notify Registrar that AP button was pushed.
| reg | Registrar data from wps_registrar_init() |
| p2p_dev_addr | Limit allowed PBC devices to the specified P2P device, NULL indicates no such filtering |
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. If more than one Enrollee in active PBC mode has been detected during the monitor time (previous 2 minutes), the PBC mode is not activated and -2 is returned to indicate session overlap. This is skipped if a specific Enrollee is selected.
| void wps_registrar_deinit | ( | struct wps_registrar * | reg | ) |
Deinitialize WPS Registrar data.
| reg | Registrar data from wps_registrar_init() |
| struct wps_registrar* wps_registrar_init | ( | struct wps_context * | wps, |
| const struct wps_registrar_config * | cfg | ||
| ) |
Initialize WPS Registrar data.
| wps | Pointer to longterm WPS context |
| cfg | Registrar configuration |
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.
| int wps_registrar_invalidate_pin | ( | struct wps_registrar * | reg, |
| const u8 * | uuid | ||
| ) |
Invalidate a PIN for a specific UUID-E.
| reg | Registrar data from wps_registrar_init() |
| uuid | UUID-E |
| void wps_registrar_probe_req_rx | ( | struct wps_registrar * | reg, |
| const u8 * | addr, | ||
| const struct wpabuf * | wps_data, | ||
| int | p2p_wildcard | ||
| ) |
Notify Registrar of Probe Request.
| reg | Registrar data from wps_registrar_init() |
| addr | MAC address of the Probe Request sender |
| wps_data | 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.
| void wps_registrar_selected_registrar_changed | ( | struct wps_registrar * | reg, |
| u16 | dev_pw_id | ||
| ) |
SetSelectedRegistrar change.
| reg | 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.
| int wps_registrar_unlock_pin | ( | struct wps_registrar * | reg, |
| const u8 * | uuid | ||
| ) |
Unlock a PIN for a specific UUID-E.
| reg | Registrar data from wps_registrar_init() |
| uuid | UUID-E |
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.
1.8.6