Jouni Malinen [Sun, 21 Nov 2010 11:19:43 +0000 (13:19 +0200)]
wlantest: Derive PMK to existing BSSes when a new passphrase is added
Jouni Malinen [Sun, 21 Nov 2010 11:18:57 +0000 (13:18 +0200)]
wlantest: Fix CCMP header generation to include reserved field
Jouni Malinen [Sun, 21 Nov 2010 11:18:02 +0000 (13:18 +0200)]
wlantest: Add more debugging details for PMK selection
Jouni Malinen [Sun, 21 Nov 2010 11:17:35 +0000 (13:17 +0200)]
wlantest: Show encrypted version on injected frame in debug
Jouni Malinen [Sun, 21 Nov 2010 10:35:49 +0000 (12:35 +0200)]
Include own MAC address in status info even in non-P2P builds
Jouni Malinen [Sun, 21 Nov 2010 10:09:27 +0000 (12:09 +0200)]
wlantest: Add history file for wlantest_cli
Jouni Malinen [Sun, 21 Nov 2010 10:07:29 +0000 (12:07 +0200)]
edit: Clear edit line on deinit
Jouni Malinen [Sun, 21 Nov 2010 10:04:44 +0000 (12:04 +0200)]
edit: Limit maximum number of history entries to 100
Jouni Malinen [Sun, 21 Nov 2010 10:01:50 +0000 (12:01 +0200)]
edit: Implement history file read/write
Jouni Malinen [Sun, 21 Nov 2010 09:49:36 +0000 (11:49 +0200)]
edit: Fix history prev selection
Jouni Malinen [Sun, 21 Nov 2010 09:43:09 +0000 (11:43 +0200)]
edit: Move history save file specification to caller
Jouni Malinen [Sun, 21 Nov 2010 09:25:34 +0000 (11:25 +0200)]
edit: Use struct dl_list for history buffer
Jouni Malinen [Sat, 20 Nov 2010 21:05:12 +0000 (23:05 +0200)]
edit: Fix delete_word when not in the end of line
Jouni Malinen [Sat, 20 Nov 2010 20:34:42 +0000 (22:34 +0200)]
wlantest: Parse ICMP echo packet and record STA ping success
Jouni Malinen [Sat, 20 Nov 2010 19:43:49 +0000 (21:43 +0200)]
wlantest: Ignore built files in git status
Jouni Malinen [Sat, 20 Nov 2010 19:40:04 +0000 (21:40 +0200)]
wlantest: Move RX EAPOL processing into its own file
Jouni Malinen [Sat, 20 Nov 2010 15:55:35 +0000 (17:55 +0200)]
edit: Add history buffer search
Ctrl-R can now be used to start history search mode.
Jouni Malinen [Sat, 20 Nov 2010 14:59:55 +0000 (16:59 +0200)]
edit: Clean up escape code parser
Jouni Malinen [Sat, 20 Nov 2010 13:55:51 +0000 (15:55 +0200)]
edit: Split escape code parsing into a separate function
This makes edit_read_char() simpler and easier to extend since it
does not need to know anything about the escape codes anymore.
Jouni Malinen [Sat, 20 Nov 2010 10:43:16 +0000 (12:43 +0200)]
wlantest: Use proper cmd length in fetching STA list
Jouni Malinen [Sat, 20 Nov 2010 10:41:15 +0000 (12:41 +0200)]
edit: Sort completion list
Jouni Malinen [Sat, 20 Nov 2010 10:35:11 +0000 (12:35 +0200)]
wlantest: Add pre-command completion functions
This allows the parameters to each command to be completed.
Jouni Malinen [Sat, 20 Nov 2010 10:27:06 +0000 (12:27 +0200)]
edit: Really fix the completion of last character
The previous commit broke completion in various places. The proper
way of handling the completion of full word is to verify whether
there are more than one possible match at that point.
Jouni Malinen [Sat, 20 Nov 2010 09:59:04 +0000 (11:59 +0200)]
edit: Fix completion at the last character
Completion needs to be done even if the full word has been entered.
In addition, fix the space-after-full-word to properly allocate room
for the extra character when completion is used in the middle of the
string.
Jouni Malinen [Sat, 20 Nov 2010 09:48:00 +0000 (11:48 +0200)]
edit: Fix delete word to update current position
Jouni Malinen [Sat, 20 Nov 2010 09:45:42 +0000 (11:45 +0200)]
edit: Fix completion of arguments other than the first one
Jouni Malinen [Sat, 20 Nov 2010 09:20:48 +0000 (11:20 +0200)]
edit: Fix Home/End escape codes
Jouni Malinen [Sat, 20 Nov 2010 08:48:32 +0000 (10:48 +0200)]
wlantest: Add interactive mode to wlantest_cli
Jouni Malinen [Fri, 19 Nov 2010 22:42:02 +0000 (00:42 +0200)]
edit: Add string completion support on tab
Jouni Malinen [Fri, 19 Nov 2010 20:00:10 +0000 (22:00 +0200)]
wlantest: Do not add new BSS/STA entries based on ctrl commands
Introduce bss_find()/sta_find() as an alternative bss_get()/sta_get()
command that do not allocate new BSS/STA entry if no existing entry
is found.
Jouni Malinen [Fri, 19 Nov 2010 17:31:55 +0000 (19:31 +0200)]
wlantest: Add add_passphrase command
This can be used to add a new known passphrase without having to
restart wlantest.
Jouni Malinen [Fri, 19 Nov 2010 15:45:19 +0000 (17:45 +0200)]
wlantest: Add command for fetching wlantest version
Jouni Malinen [Fri, 19 Nov 2010 15:09:02 +0000 (17:09 +0200)]
wlantest: Add support for injecting (Re)Association Request frames
Jouni Malinen [Fri, 19 Nov 2010 14:48:33 +0000 (16:48 +0200)]
wlantest: Add support for protecting injected broadcast frames
Jouni Malinen [Fri, 19 Nov 2010 14:22:44 +0000 (16:22 +0200)]
wlantest: Add support for injecting Deauth/Disassoc frames
Jouni Malinen [Fri, 19 Nov 2010 14:12:46 +0000 (16:12 +0200)]
wlantest: Update SA Query trans id based on injected frame
This allows the SA Query transaction id matching code to be used
to verify that a valid response is received for the injected
request.
Jouni Malinen [Fri, 19 Nov 2010 14:09:19 +0000 (16:09 +0200)]
wlantest: Add support for CCMP protection for injected frames
Jouni Malinen [Fri, 19 Nov 2010 11:24:45 +0000 (13:24 +0200)]
P2P: Add some initial documentation for P2P use
Jouni Malinen [Fri, 19 Nov 2010 10:58:31 +0000 (12:58 +0200)]
P2P: Accept invitations to already running persistent group
We can automatically accept invitations that are for a persistent
group that is already running. There is no need to confirm this
separately or preparare a new group interface.
Jouni Malinen [Fri, 19 Nov 2010 10:58:03 +0000 (12:58 +0200)]
P2P: Stop p2p_find/p2p_listen when Invitation is accepted
When an Invitation to reinvoke a persistent group is accepted,
we need to make sure that any pending p2p_find or p2p_listen
operation gets stopped to avoid consuming all radio resources
doing device discovery while the group is being set up.
Jouni Malinen [Fri, 19 Nov 2010 10:57:36 +0000 (12:57 +0200)]
P2P: Do not start multiple copies of same persistent group
When running p2p_group_add persistent=<id>, verify whether the
requested group is already running and if so, do not try to
start another copy of it.
Jouni Malinen [Thu, 18 Nov 2010 22:35:13 +0000 (00:35 +0200)]
wlantest: Add preliminary infrastructure for injecting frames
This adds new commands for wlantest_cli to request wlantest to
inject frames. This version can only send out Authentication
frames and unprotected SA Query Request frames, but there is
now place to add more frames and encryption with future commits.
Jouni Malinen [Thu, 18 Nov 2010 17:05:29 +0000 (19:05 +0200)]
wlantest: Add BSS/STA statistics counters
These counters can be cleared and queried from external programs to
script various testing tasks.
Jouni Malinen [Thu, 18 Nov 2010 15:36:08 +0000 (17:36 +0200)]
wlantest: Add flush command for dropping all BSS data
Jouni Malinen [Thu, 18 Nov 2010 15:17:18 +0000 (17:17 +0200)]
wlantest: Add list_bss and list_sta commands
These can be used to list the current BSS and STA information
maintained in wlantest.
Jouni Malinen [Thu, 18 Nov 2010 14:27:25 +0000 (16:27 +0200)]
wlantest: Fix wlantest_cli dependency to include wlantest library
Jouni Malinen [Thu, 18 Nov 2010 10:42:02 +0000 (12:42 +0200)]
P2P: Indicate WPS events from AP mode only during group formation
The duplicated WPS event in the parent interface should only be used
during P2P group formation, i.e., when the WPS operation was actually
started using the parent interface. When authorizing a client to
connect to an already running group, the WPS command is issued on
the group interface and there is no need to duplicate the event to
the parent interface.
Jouni Malinen [Thu, 18 Nov 2010 10:41:27 +0000 (12:41 +0200)]
P2P: Make sure wpa_s->global->p2p_group_formation gets cleared
This pointer is now used in number of places to check whether an
interface is in P2P Group Formation, so we better make sure it gets
cleared when group formation has been completed. This was done in
only some of the cases.
Jouni Malinen [Wed, 17 Nov 2010 14:48:39 +0000 (16:48 +0200)]
WPS: Add special AP Setup Locked mode to allow read only ER
ap_setup_locked=2 can now be used to enable a special mode where
WPS ER can learn the current AP settings, but cannot change then.
In other words, the protocol is allowed to continue past M2, but
is stopped at M7 when AP is in this mode. WPS IE does not
advertise AP Setup Locked in this case to avoid interoperability
issues.
In wpa_supplicant, use ap_setup_locked=2 by default. Since the AP PIN
is disabled by default, this does not enable any new functionality
automatically. To allow the read-only ER to go through the protocol,
wps_ap_pin command needs to be used to enable the AP PIN.
Jouni Malinen [Wed, 17 Nov 2010 14:46:55 +0000 (16:46 +0200)]
WPS: Add wps_ap_pin ctrl_iface command for wpa_supplicant AP mode
This can be used to control the AP PIN in wpa_supplicant AP mode
in the same way as the identical command in hostapd ctrl_iface.
Jouni Malinen [Tue, 16 Nov 2010 13:22:06 +0000 (15:22 +0200)]
P2P: Fix invitation-to-running-group handling
The pending_invite_ssid_id of -1 (running group, not persistent) was
being stored incorrectly in the group interface, not device interface
(i.e., parent of the group interface) and consequently, the incorrect
information was used when processing the Invitation Response.
If there was a persistent group credentials stored with network id
0, those were used instead to try to set up a persistent group
instead of using the already running group.
Albert Liu [Mon, 15 Nov 2010 14:16:39 +0000 (16:16 +0200)]
P2P: Update pending join interface address during scans
Since the P2P peer entry may not have been available at the time the
join request was issued, we need to allow the P2P Interface Address
to be updated during join-scans when the P2P peer entry for the GO
may be added.
Jouni Malinen [Mon, 15 Nov 2010 14:15:38 +0000 (16:15 +0200)]
P2P: Allow multiple scan runs to find GO for p2p_connect join
If the GO is not found, we cannot send Provisioning Discovery Request
frame and cannot really connect anyway. Since the Provisioning
Discovery is a mandatory part, it is better to continue join-scan
until the GO is found instead of moving to the next step where
normal connection scan is used (PD would not be used from there).
Use a limit of 10 scan attempts for p2p_connect join to avoid getting
in infinite loop trying to join. If the GO is not found with those
scans, indicate failure (P2P-GROUP-FORMATION-FAILURE) and stop the
join attempt.
Jouni Malinen [Sun, 14 Nov 2010 20:37:43 +0000 (22:37 +0200)]
Move wpa_cli readline integration into src/utils/edit_readline.c
All three line editing options are now located in src/utils/edit*.c
and provide the same API to allow easy build time selection.
Jouni Malinen [Sun, 14 Nov 2010 19:19:35 +0000 (21:19 +0200)]
wpa_cli: Use edit API as a wrapper for optional readline
Jouni Malinen [Sun, 14 Nov 2010 19:03:24 +0000 (21:03 +0200)]
edit: Redraw input line on ^L
Jouni Malinen [Sun, 14 Nov 2010 18:59:29 +0000 (20:59 +0200)]
Move command line editing routines into src/utils/edit*.[ch]
This allows the same routines to be shared with other programs
since these are not really specific to wpa_cli.
Jouni Malinen [Sun, 14 Nov 2010 17:15:23 +0000 (19:15 +0200)]
wpa_cli: Add internal line edit implementation
CONFIG_WPA_CLI_EDIT=y can now be used to build wpa_cli with internal
implementation of line editing and history support. This can be used
as a replacement for CONFIG_READLINE=y.
Jouni Malinen [Sun, 14 Nov 2010 11:16:51 +0000 (13:16 +0200)]
wpa_cli: Replace CONFIG_WPA_CLI_FORK design with eloop
Instead of using a separate process to receive and print event
messages, use a single-process design with eloop to simply
wpa_cli and interaction with readline.
Jouni Malinen [Sun, 14 Nov 2010 09:30:19 +0000 (11:30 +0200)]
wpa_cli: Split wpa_cli_interactive() into two versions
Instead of multiple #ifdef blocks for readline within the function,
use two copies of the functions, one for readline, one without any
readline functionality.
Jouni Malinen [Sat, 13 Nov 2010 16:38:19 +0000 (18:38 +0200)]
wlantest: Add control interface and wlantest_cli
This can be used to manage wlantest operation during run time.
Jouni Malinen [Sat, 13 Nov 2010 12:09:40 +0000 (14:09 +0200)]
wlantest: Validate EAPOL-Key reserved fields
In addition, this handles WPA difference in Key Info for Secure
bit in msg 3/4 and 4/4 (not set, since GTK is not yet available).
Jouni Malinen [Sat, 13 Nov 2010 11:18:09 +0000 (13:18 +0200)]
wlantest: Add debug print for ignored group addressed Action frames
Jouni Malinen [Sat, 13 Nov 2010 11:14:09 +0000 (13:14 +0200)]
wlantest: Validate MMIE KeyID reserved bits
Jouni Malinen [Sat, 13 Nov 2010 11:03:21 +0000 (13:03 +0200)]
wlantest: Validate reserved bits in TKIP/CCMP header
Jouni Malinen [Sat, 13 Nov 2010 10:54:07 +0000 (12:54 +0200)]
wlantest: Verify that TKIP/CCMP frames set ExtIV=1
Jouni Malinen [Sat, 13 Nov 2010 10:40:36 +0000 (12:40 +0200)]
wlantest: Implement TKIP replay detection
Jouni Malinen [Sat, 13 Nov 2010 09:59:43 +0000 (11:59 +0200)]
wlantest: Add support for WPA key handshakes
The Key Data field is handled differently in msg 3/4 and 1/2 in WPA,
so add separate code for processing non-RSN case.
Jouni Malinen [Sat, 13 Nov 2010 09:36:37 +0000 (11:36 +0200)]
wlantest: Add support for TKIP decryption
Jouni Malinen [Fri, 12 Nov 2010 21:33:42 +0000 (23:33 +0200)]
wlantest: Use negotiated AKM/cipher to select PMK-to-PTK parameters
Jouni Malinen [Fri, 12 Nov 2010 21:28:43 +0000 (23:28 +0200)]
wlantest: Fix mgmt CCMP decrypt to not crash on failures
Jouni Malinen [Fri, 12 Nov 2010 21:17:20 +0000 (23:17 +0200)]
wlantest: Verify that unicast robust mgmt frames are protected
Jouni Malinen [Fri, 12 Nov 2010 21:16:38 +0000 (23:16 +0200)]
wlantest: Verify MFP use in association with MFPR BSS
Jouni Malinen [Fri, 12 Nov 2010 21:01:56 +0000 (23:01 +0200)]
wlantest: Use MFPC field instead of igtk_set to check if BIP is needed
Jouni Malinen [Fri, 12 Nov 2010 20:54:28 +0000 (22:54 +0200)]
wlantest: Verify that WPA/RSN IE matches in EAPOL-Key and mgmt frames
Verify that WPA/RSN IE in (Re)Association Request is identical to the
one used in EAPOL-Key message 2/4.
Verify that WPA/RSN IE in Beacon/Probe Response is identical to the
one(s) used in EAPOL-Key message 3/4.
Jouni Malinen [Fri, 12 Nov 2010 20:40:59 +0000 (22:40 +0200)]
wlantest: Parse WPA/RSN IE and store info for BSS/STA
In addition, verify that the parameters that the STA is requesting
match with what is enabled in the BSS.
Jouni Malinen [Fri, 12 Nov 2010 19:52:14 +0000 (21:52 +0200)]
Share WPA IE parser function for RSN authenticator/supplicant
There is no point in maintaining two almost identical versions
of this parser. Move WPA IE parser into wpa_common.c similarly
to what was already the case with RSN IE parse.
Jean Trivelly [Fri, 12 Nov 2010 19:21:24 +0000 (21:21 +0200)]
P2P: Add network_added notification when p2p device becomes GO
Notification is done when you become P2P client but was missing
when you become GO.
Signed-off-by: Jean Trivelly <jeanx.trivelly@linux.intel.com>
Jouni Malinen [Fri, 12 Nov 2010 17:04:48 +0000 (19:04 +0200)]
P2P: Fix HT40 secondary channel validation
Jouni Malinen [Fri, 12 Nov 2010 16:31:56 +0000 (18:31 +0200)]
AP: Verify that HT40 secondary channel is supported
Refuse to enable HT40 mode AP unless both the primary and secondary
channels are enabled for AP use.
Jouni Malinen [Fri, 12 Nov 2010 16:14:12 +0000 (18:14 +0200)]
P2P: Add HT40 operating classes based on driver channel flags
This allows P2P to negotiate HT40 channels. For now, only 5 GHz
HT40 operating classes are enabled.
Jouni Malinen [Fri, 12 Nov 2010 16:13:37 +0000 (18:13 +0200)]
Add HT40 flags into driver channel list
This can be used to figure out whether the driver would allow
HT40-/HT40+ on any specific channel.
Jouni Malinen [Fri, 12 Nov 2010 09:30:58 +0000 (11:30 +0200)]
P2P: Send WPS-OVERLAP-DETECTED also to the parent interface
When running "p2p_connect addr pbc join" command, send the
WPS-OVERLAP-DETECTED even also to the parent interface (i.e.,
the one on which the p2p_connect was issued) and not only the
group interface in case separate P2P group interfaces are used.
Jouni Malinen [Thu, 11 Nov 2010 23:02:45 +0000 (01:02 +0200)]
wlantest: Dump decrypted Key Data from Group Handshake msg 1/2
Jouni Malinen [Thu, 11 Nov 2010 23:00:31 +0000 (01:00 +0200)]
wlantest: Add option for writing a PCAP dump file
The output file includes all the capture (or read from wireless PCAP
file) frames in their original contents and another copy of each
frame that is decrypted in wlantest (including EAPOL-Key Key Data
field).
Jouni Malinen [Thu, 11 Nov 2010 20:04:38 +0000 (22:04 +0200)]
wlantest: Add Group Key handshake processing
Decrypt GTK/IGTK updates in Group Key message 1/2 and update the
keys. In addition, verify the MIC on both Group Key handshake
messages.
Jouni Malinen [Thu, 11 Nov 2010 19:35:30 +0000 (21:35 +0200)]
wlantest: Fix Mgmt CCMP replay detection to use correct PN offset
Jouni Malinen [Thu, 11 Nov 2010 19:34:06 +0000 (21:34 +0200)]
wlantest: Process Action frames
Parse Action frames and verify SA Query transactions.
Jouni Malinen [Thu, 11 Nov 2010 18:46:15 +0000 (20:46 +0200)]
wlantest: Decrypt CCMP protected unicast Robust Management frames
Jouni Malinen [Thu, 11 Nov 2010 18:21:11 +0000 (20:21 +0200)]
wlantest: Add replay detection for CCMP
Jouni Malinen [Thu, 11 Nov 2010 17:53:12 +0000 (19:53 +0200)]
wlantest: Decrypt group addressed Data frames
Jouni Malinen [Thu, 11 Nov 2010 14:56:36 +0000 (16:56 +0200)]
WPS: Fix UPnP deinit order to avoid using freed memory
When multiple wireless interfaces are used with WPS, the UPnP
subscriptions need to be removed whenever a matching Registrar
instance gets removed. This avoids a segfault due to access to
freed memory during hostapd shutdown.
In addition, the UPnP interface instance structure needs to be
freed to avoid memory leak.
Jouni Malinen [Thu, 11 Nov 2010 12:54:18 +0000 (14:54 +0200)]
WPS ER: Fix compiler warning on non-WPS2 builds
Jouni Malinen [Thu, 11 Nov 2010 12:50:13 +0000 (14:50 +0200)]
WPS: Change concurrent radio AP to use only one WPS UPnP instance
WPS external Registrars can get confused about multiple UPnP
instances (one per radio) on a dual-concurrent APs. Simplify the
design by sharing a single UPnP state machine for all wireless
interfaces controlled by hostapd. This matches with the previous
changes that made a single command enable WPS functionality on
all interfaces.
This is relatively minimal change to address the sharing of the
state among multiple struct hostapd_data instances. More cleanup
can be done separately to remove unnecessary copies of information.
Jouni Malinen [Wed, 10 Nov 2010 23:29:30 +0000 (01:29 +0200)]
wlantest: Add support for decrypting CCMP protected unicast Data frames
Jouni Malinen [Wed, 10 Nov 2010 20:10:02 +0000 (22:10 +0200)]
Update for 0.8.x and include licensing terms in top level README
This brings in the full licensing text from
{hostapd,wpa_supplicant}/README into the top level README file
for clarity.
Jouni Malinen [Wed, 10 Nov 2010 15:09:31 +0000 (17:09 +0200)]
Drop local stations on broadcast deauth/disassoc request
When hostapd_cli deauth/disassoc is used with ff:ff:ff:ff:ff:ff
address, drop all local STA entries in addition to sending out the
broadcast deauth/disassoc frame.
Jouni Malinen [Wed, 10 Nov 2010 14:59:45 +0000 (16:59 +0200)]
wlantest: Fix BIP replay detection
Jouni Malinen [Wed, 10 Nov 2010 14:22:22 +0000 (16:22 +0200)]
P2P: Replace the default country with "XX" (non-country entity)
Jouni Malinen [Wed, 10 Nov 2010 12:23:57 +0000 (14:23 +0200)]
Fix a typo in the comment