Changeset 09044cb in mainline for uspace/lib/ieee80211/src/ieee80211.c


Ignore:
Timestamp:
2015-04-22T09:42:36Z (10 years ago)
Author:
Jan Kolarik <kolarik@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8a64320e
Parents:
cc575ef9
Message:

Fixed parsing RSN information, fixed inserting GTK of various index to device

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ieee80211/src/ieee80211.c

    rcc575ef9 r09044cb  
    11811181                        (ieee80211_ie_header_t *) it;
    11821182                uint8_t *channel;
     1183                uint32_t oui;
    11831184                switch(ie_header->element_id) {
    11841185                        case IEEE80211_CHANNEL_IE:
     1186                                if(!ap_data)
     1187                                        break;
    11851188                                channel = (uint8_t *)
    11861189                                        (it + sizeof(ieee80211_ie_header_t));
     
    11971200                                break;
    11981201                        case IEEE80211_VENDOR_IE:
    1199                                 if(uint32be_from_seq(it +
    1200                                         sizeof(ieee80211_ie_header_t)) ==
    1201                                         WPA_OUI) {
     1202                                oui = uint32be_from_seq(it +
     1203                                        sizeof(ieee80211_ie_header_t));
     1204                                if(oui == WPA_OUI) {
     1205                                        if(!ap_data)
     1206                                                break;
    12021207                                        /* Prefering WPA2. */
    12031208                                        if(ap_data->scan_result.security.type ==
     
    12121217                                                sizeof(uint32_t));
    12131218                                        copy_auth_ie(ie_header, ap_data, it);
    1214                                 } else if(uint32be_from_seq(it +
    1215                                         sizeof(ieee80211_ie_header_t)) ==
    1216                                         GTK_OUI) {
     1219                                } else if(oui == GTK_OUI) {
    12171220                                        return it +
    12181221                                                sizeof(ieee80211_ie_header_t) +
    1219                                                 sizeof(uint32_t) + 2;
     1222                                                sizeof(uint32_t);
    12201223                                }
    12211224                }
     
    13901393        uint8_t *ptk = ieee80211_dev->bssid_info.ptk;
    13911394        uint8_t *gtk = ieee80211_dev->bssid_info.gtk;
     1395        uint8_t gtk_id = 1;
    13921396
    13931397        bool handshake_done = false;
     
    15031507                       
    15041508                        if(rc == EOK) {
    1505                                 uint8_t *key_ptr = old_wpa ? key_data :
     1509                                uint8_t *key_data_ptr = old_wpa ? key_data :
    15061510                                        ieee80211_process_ies(ieee80211_dev,
    15071511                                        NULL, key_data, key_data_length);
    15081512
    1509                                 if(key_ptr) {
     1513                                if(key_data_ptr) {
     1514                                        uint8_t *key_ptr;
     1515                                        if(old_wpa) {
     1516                                                key_ptr = key_data_ptr;
     1517                                        } else {
     1518                                                gtk_id = *key_data_ptr & 0x3;
     1519                                                key_ptr = key_data_ptr + 2;
     1520                                        }
     1521                                               
    15101522                                        memcpy(gtk, key_ptr, gtk_key_length);
    15111523                                        handshake_done = true;
     
    15881600        /* Insert Group key. */
    15891601        if(final_phase) {
     1602                key_config.id = gtk_id;
    15901603                key_config.suite = auth_data->security.group_alg;
    15911604                key_config.flags =
Note: See TracChangeset for help on using the changeset viewer.