Commit Graph

353 Commits

Author SHA1 Message Date
Denis Kenzior cf3681efbe eapol: Add comment for handling MIC failures 2015-03-29 20:57:58 -05:00
Denis Kenzior f31407dd46 eapol: Add deauthenticate callback 2015-03-29 20:30:14 -05:00
Denis Kenzior b81e22f809 wiphy: Move reason codes to mpdu.h 2015-03-29 20:27:57 -05:00
Jukka Rissanen 7b945d948f wiphy: Set the linkmode and operstate of the link
We need to set the linkmode and operstate after successful
authentication.

Initial value for linkmode is 1 (user space controlled) and
IF_OPER_DORMANT for opermode. After successful authentication,
the operstate is set to IF_OPER_UP.

More specific details can be seen in kernel sources at
https://www.kernel.org/doc/Documentation/networking/operstates.txt
2015-03-27 13:14:31 -05:00
Jukka Rissanen 6dbd544a55 netdev: Add function to set the linkmode and operstate of the link
This is needed after connecting successfully to AP.
2015-03-27 13:13:33 -05:00
Jukka Rissanen 42622525d2 wiphy: Send NL80211_CMD_SET_STATION command to kernel
After we have authenticated successfully, send the Set Station
command to kernel so that AP gets authorized.
2015-03-27 13:12:47 -05:00
Denis Kenzior 86ea449cd1 wiphy: Make sure to set user_data
This is needed for TK/GTK installation
2015-03-25 23:28:45 -05:00
Denis Kenzior 0412360d77 wiphy: Install group key 2015-03-25 23:28:40 -05:00
Denis Kenzior 6ec364cb86 eapol: Add __eapol_set_gtk_install_func 2015-03-25 23:28:22 -05:00
Denis Kenzior 75bacbb896 wiphy: Install pairwise key 2015-03-25 23:28:18 -05:00
Denis Kenzior bf5a6a3999 eapol: Add __eapol_set_install_tk_func 2015-03-25 22:35:12 -05:00
Denis Kenzior ddcbb3f2a8 eapol: Add eapol_sm_set_user_data 2015-03-25 22:34:05 -05:00
Denis Kenzior d075d49a96 crypto: Use same values as nl80211 2015-03-25 22:33:07 -05:00
Ravi kumar Veeramally 3432cfa53e eapol: Return if eapol_find_sm returns NULL 2015-03-23 20:08:30 -05:00
Ravi kumar Veeramally a95b0e3a5a eapol: Fix return value 2015-03-23 15:37:40 -05:00
Denis Kenzior 842eb643eb wiphy: Return an error if agent request fails
If there is no agent registered, then the caller should not be hanging
without a response forever.
2015-03-20 15:42:50 -05:00
Denis Kenzior 141a1831c0 dbus: Add dbus_error_no_agent 2015-03-20 15:42:39 -05:00
Denis Kenzior 709b94587e wiphy: Print an error if PMK generation fails 2015-03-20 15:22:44 -05:00
Denis Kenzior 204964fd8d sha1: Return right away if checksum creation fails
This patch covers pbkdf2_sha1 and prf_sha1
2015-03-20 14:56:27 -05:00
Denis Kenzior 86e7883c74 eapol: Print a message if MIC calculation fails 2015-03-20 14:52:49 -05:00
Denis Kenzior b27c47aa77 sha1: Return right away if l_checksum_new fails 2015-03-20 14:50:57 -05:00
Denis Kenzior d78883a068 eapol: Add default nonce generator 2015-03-20 12:31:14 -05:00
Denis Kenzior 35e3de9cdf eapol: Add default eapol tx path function 2015-03-20 12:30:56 -05:00
Denis Kenzior 2598a1efed wiphy: call eapol_init and eapol_exit 2015-03-20 12:30:24 -05:00
Denis Kenzior 4c351196a9 wiphy: Print errno if read fails 2015-03-20 12:30:11 -05:00
Denis Kenzior 25af920563 wiphy: Separate out the ell include
To make it clear it is not a system include
2015-03-20 12:29:50 -05:00
Denis Kenzior 656318ed0c eapol: Update eapol_tx_packet_func_t declaration
Use aa and spa instead of aa_addr and sta_addr
2015-03-20 11:43:42 -05:00
Marcel Holtmann 2c061e6394 wiphy: Fix compiler warning with sizeof function
CC       src/wiphy.o
src/wiphy.c: In function ‘eapol_read’:
src/wiphy.c:172:24: error: argument to ‘sizeof’ in ‘memset’ call is the same expression as the destination; did you mean to remove the addressof? [-Werror=sizeof-pointer-memaccess]
  memset(&sll, 0, sizeof(&sll));
                        ^
2015-03-20 06:43:54 +01:00
Denis Kenzior 0ee173e23f eapol: Fix PAE socket code
Using SOCK_DGRAM allows us to receive just the frame payload instead
of raw ethernet framing.
2015-03-20 00:28:58 -05:00
Denis Kenzior 96cd2391da wiphy: Start 4-way handshake 2015-03-20 00:27:38 -05:00
Denis Kenzior 2a41fe6dd2 eapol: Add read handler for PAE frames 2015-03-20 00:27:38 -05:00
Denis Kenzior 7835eb8b88 wiphy: Fix style 2015-03-19 23:57:37 -05:00
Jukka Rissanen 24e79280a9 wiphy: DBus reply was sent too early when connecting PSK network
We can give reply to connect DBus call in associating event only
when we are connecting to Open network. For PSK AP, the reply can
only be sent after we have finished 4-way handshaking.
2015-03-19 23:57:37 -05:00
Denis Kenzior 19c67c3b3a eapol: Add user_data argument
To __eapol_rx_packet.  The same argument is passed to tx_packet
function.
2015-03-19 23:57:37 -05:00
Denis Kenzior b526df19d6 eapol: Fix __eapol_rx_packet declaration 2015-03-19 23:57:36 -05:00
Denis Kenzior 6b84e0da1f eapol: Rename aa_addr
The use of aa_addr was redundant.  Use 'AA' instead.  802.11 defines
'AA' as 'Authenticator Address'.
2015-03-19 23:57:36 -05:00
Denis Kenzior b871d904d5 eapol: Rename sta_addr
The use of sta_addr made no sense.  Instead, use the terminology from
802.11: 'Supplicant Address (SPA)'
2015-03-19 23:57:36 -05:00
Denis Kenzior 581f4e298f eapol: Use a queue instead of a hashmap 2015-03-19 23:57:36 -05:00
Denis Kenzior 12d529eddb eapol: Rearrange data structure members
The order follows the rough order of initialization, as information
becomes available from the calling code or via steps of the 4-way
handshake.
2015-03-19 23:57:36 -05:00
Denis Kenzior dcb5045d8f iwd.conf: Punch hole for agent 2015-03-19 23:57:36 -05:00
Jukka Rissanen acce7c9034 eapol: Change the interface index data type
The ifindex should be uint32_t instead of int.
2015-03-19 20:18:05 -05:00
Ravi kumar Veeramally 02b501b4f0 core: Find WPA BSS from scan results
Parse vendor specific IE and BSS scan results, find it AP has
WPA security details.
2015-03-16 12:15:23 -05:00
Denis Kenzior 29a89d2a8b ie: There can be only one group_cipher
So the use of & operation is unneeded.  A more correct way is to use the
equals operator.
2015-03-16 12:12:59 -05:00
Denis Kenzior 8c172f4ec1 ie: Group comments together with relevant code 2015-03-16 12:10:43 -05:00
Ravi kumar Veeramally b9007cbc9a ie: Provide a utility to build WPA IE
Build WPA IE based on vendor specific data.
2015-03-16 12:06:49 -05:00
Ravi kumar Veeramally 50c7346d19 ie: Parse vendor specific IE
Currently it supports Microsoft vendor specific information element
with version and type value 1 only. Typically it contains WPA security
related information.
2015-03-16 12:01:59 -05:00
Jukka Rissanen 56c4dc1a8c wiphy: Add enumeration of reason codes
When disconnecting, use a properly documented reason code.  These codes
come from the ieee80211.h file which is part of the Linux Kernel.
2015-03-12 11:19:27 -05:00
Tomasz Bursztyka 279ed50441 wiphy: Don't parse attributes of scan reply
The success or not of a scan command is found from the message directly.
There's no need to look for any attribute from the scan netlink answer.
The message is an error message or not, and that tells if the scan has
been started or not.
2015-03-11 10:24:34 -05:00
Tomasz Bursztyka 9c1780c0a1 wiphy: Use dbus object path as network key in hash
Modifying a bit how networks are stored inside the hashtable:
1 - instead of the network id, the network's object path is used
2 - network holds the pointer of the object path
3 - the hashtable does not free the key (network_free() will)

This permits to optimize on:
1 - one memory allocation used for 2 distinct things
2 - remove the need to re-compute the object path (and the id) when it's
needed, it can use dircetly the one stored in the network structure.
2015-03-10 09:32:58 -05:00
Patrik Flykt 1637f3519a wiphy: Request passphrase when connecting
Request a passphrase via Agent if none is set at the time network is
being connected. When freeing a network, cancel any outstanding Agent
requests and free allocated memory.
2015-03-06 12:51:51 -06:00
Jukka Rissanen 84d61c521f agent: Only cancel if default agent is registered
If we do not have a default agent registered, then do not try
to cancel a request as there will not be one.
2015-03-06 12:45:54 -06:00
Ravi kumar Veeramally e24b18accd wiphy: Handle failed netlink requests
l_genl_family_send only returns request id. If request
failed at low level, current implementation does not handle that.
In case of request failure clear pending dbus messages.
2015-03-03 09:43:48 -06:00
Denis Kenzior 2bcfc15e96 eapol: Remove unneeded whitespace 2015-03-02 21:47:27 -06:00
Denis Kenzior 926cc6cd17 agent: Use a generic pointer for the callback
Since this function is generic, no need to use a specific callback type.
2015-03-02 21:07:49 -06:00
Jukka Rissanen e17d2d63c2 agent: Make sure Release is sent when iwd exits
The main loop cannot be quit in signal handler as that would
prevent the agent.c from sending the Release command to the agent.
2015-03-02 20:59:01 -06:00
Jukka Rissanen 02a8eddd8f agent: Release the agent when iwd quits
Send Release command to agent and remove used resources when
iwd exits.
2015-03-02 20:57:39 -06:00
Jukka Rissanen 405b724266 agent: Cancel pending agent request
Allow user to cancel a pending user agent request. This typically
happens when user decides to disconnect a pending connection
request.
2015-03-02 20:57:14 -06:00
Jukka Rissanen c275fca1e3 agent: Ask passphrase from the user agent
Add support for asking passphrase information from the registered
user agent.
2015-03-02 20:56:12 -06:00
Jukka Rissanen e6e4649a40 agent: Implement request core
This patch adds core support for sending and managing requests
that are sent to user agent.
2015-03-02 20:46:45 -06:00
Tomasz Bursztyka ab07091f8c util: Move msg_append_attr into util part 2015-03-02 20:44:02 -06:00
Denis Kenzior 1d8b330261 wiphy: Use new l_genl send() APIs 2015-02-27 11:00:45 -06:00
Denis Kenzior feefad9957 scan: use new l_genl send APIs 2015-02-27 11:00:27 -06:00
Jukka Rissanen 5c4a2cf61a manager: Initialize the agent dbus interface 2015-02-27 10:42:58 -06:00
Jukka Rissanen 4e0fc2150d agent: DBus agent register and unregister
Implement DBus agent register and unregister functions.
2015-02-27 09:40:59 -06:00
Jukka Rissanen b46f06a9ad agent: Initial agent support
Init, setup and exit functions.
2015-02-27 09:37:32 -06:00
Ravi kumar Veeramally 67cdc80753 wiphy: Open PAE socket when an interface is found
Open a PAE socket to retrieve eapol frames for 4-way handshake.
2015-02-26 10:55:01 -06:00
Ravi kumar Veeramally db45cd8dbf eapol: Provide utility to open raw socket
Opens a raw socket to filter ETH_P_PAE based packets. Binds to specific
interface index to read/write eapol frames.
2015-02-26 10:54:05 -06:00
Tomasz Bursztyka 6b018ca6f7 wiphy: Reduce static allocation size
iwd_device_get_path() is not going to produce longer string than 12
bytes (/ + maximum of uint32_t expressed as a string + '\0').
2015-02-26 10:05:16 -06:00
Denis Kenzior b067c08cfe wiphy: Remove unneeded initialization 2015-02-26 10:03:51 -06:00
Denis Kenzior e69b21ccdf wiphy: Don't store rsne unless needed
Open networks do not contain a RSN element, so storing a 256 byte buffer
was too expensive.

This patch also has the side-effect of fixing detection of Open
Networks.  Prior to this, if the scan results did not contain an RSN IE,
the 'rsne' variable would be set to all zeros.  scan_get_ssid_security
would then be called, but instead of a NULL struct ie_rsn_info, a
non-null, but zerod out ie_rsn_info would be passed in.  This caused the
code to work, but for the wrong reasons.
2015-02-25 21:13:24 -06:00
Denis Kenzior 458ad2af77 wiphy: Set authentication parameters for WPA2 2015-02-25 20:56:46 -06:00
Ravi kumar Veeramally 19957f1162 wiphy: Remove extra white space 2015-02-25 11:34:42 -06:00
Ravi kumar Veeramally 46cdef5f7b wiphy: Fix deauthenticate event from AP
If AP issued deauthenticate event, netdev->connect_pending is null.
iwd crashes without this check.
2015-02-25 11:23:46 -06:00
Denis Kenzior 97a92a9d02 wiphy: Don't connect to networks we don't support 2015-02-24 23:19:27 -06:00
Denis Kenzior d77238d5fd dbus: Add not supported error 2015-02-24 23:19:16 -06:00
Denis Kenzior 41e82fba77 eapol: Optimize out rsne sizes
The RSN IEs contain the sizes of the element inside the data, so it is
not necessary to carry a dedicated size element.
2015-02-24 23:15:20 -06:00
Denis Kenzior 975953dd89 wiphy: Store RSN IE inside struct bss 2015-02-24 23:11:48 -06:00
Denis Kenzior c9bab96237 wiphy: Store ssid in static buffer
Instead of mallocing the ssid buffer, use a static array.  This removes an
extra couple of malloc/free operations and should result in less memory
utilization on average.
2015-02-24 23:03:15 -06:00
Denis Kenzior 9760bcb5c3 eapol: Add checking that first RSNE is as expected 2015-02-24 22:09:35 -06:00
Denis Kenzior 7f9b8117fd eapol: Add utility to find GTK KDEs 2015-02-24 17:11:56 -06:00
Denis Kenzior b1ca41b476 ie: Add length/data/tag inline getters 2015-02-24 17:11:27 -06:00
Denis Kenzior bfdd4a2328 eapol: Pass decrypted data len
to eapol_handle_ptk_3_of_4
2015-02-24 16:03:42 -06:00
Denis Kenzior c71bfcbb7c eapol: Decryption of packets changes affects size 2015-02-24 15:59:36 -06:00
Jukka Rissanen 0403be7fee dbus: Add more error reporting functions
Report error for
- invalid dbus arguments
- if object already exists
- if object is not found
2015-02-24 11:19:49 -06:00
Denis Kenzior f997816a7f eapol: Handle Step 2 & 4 of the 4-way Handshake 2015-02-24 11:14:11 -06:00
Denis Kenzior da1180841d eapol: Handle Step 1 & 2 of 4-way Handshake 2015-02-24 11:13:57 -06:00
Denis Kenzior 9e6cbc5b60 eapol: Add __eapol_rx_packet 2015-02-24 11:13:19 -06:00
Denis Kenzior 4a540526fe eapol: Add eapol_start 2015-02-24 11:12:22 -06:00
Denis Kenzior 2ee8b8e56e eapol: Add __eapol_set_protocol_version 2015-02-24 11:11:40 -06:00
Denis Kenzior 87dc9543b2 eapol: Add tx_packet_func and setter 2015-02-24 11:10:42 -06:00
Denis Kenzior 54fa4f29c7 eapol: Add get_nonce func and setter 2015-02-24 11:09:42 -06:00
Denis Kenzior 79bf677e71 eapol: Add eapol_init and eapol_exit 2015-02-24 11:08:03 -06:00
Denis Kenzior 2e1e484f95 eapol: Add eapol_sm_set_own_rsn 2015-02-24 10:58:43 -06:00
Denis Kenzior 08b2980fd6 eapol: Add eapol_sm_set_ap_rsn 2015-02-24 10:58:03 -06:00
Denis Kenzior f85c860cc3 eapol: Add eapol_sm_set_pmk 2015-02-24 10:57:25 -06:00
Denis Kenzior ff92e5c5e1 eapol: Add eapol_sm_set_aa_address 2015-02-24 10:56:39 -06:00
Denis Kenzior 122dfe7025 eapol: Add eapol_sm_set_sta_address 2015-02-24 10:55:50 -06:00
Denis Kenzior 2866fbbf91 eapol: Introduce eapol_sm 2015-02-24 10:54:23 -06:00
Denis Kenzior bf42e3e7a3 eapol: snonce not needed in create_ptk_4_of_4 2015-02-24 10:52:12 -06:00
Denis Kenzior 6ba57c9fa8 eapol: Fix eapol_verify_mic
The calculation was using an invalid length
2015-02-24 10:42:20 -06:00