Ticket #8850: 0001-eap-Add-initial-EAP-support-for-Haiku.patch

File 0001-eap-Add-initial-EAP-support-for-Haiku.patch, 3.0 KB (added by kallisti5, 11 years ago)

wpa_supplicant change v1

  • wpa_supplicant/main_haiku.cpp

    From 135b46419710bbeb92f6d18ff21f80cab24f7e5f Mon Sep 17 00:00:00 2001
    From: Alexander von Gluck IV <kallisti5@unixzen.com>
    Date: Wed, 17 Jul 2013 17:12:13 +0000
    Subject: [PATCH 1/4] eap: Add initial EAP support for Haiku
    
    * Also known as WPA/WPA2 Enterprise
    ---
     wpa_supplicant/main_haiku.cpp |   51 +++++++++++++++++++++++++++++++++++++++--
     1 file changed, 49 insertions(+), 2 deletions(-)
    
    diff --git a/wpa_supplicant/main_haiku.cpp b/wpa_supplicant/main_haiku.cpp
    index e9b0c8a..2ab6ef7 100644
    a b WPASupplicantApp::_JoinNetwork(BMessage *message)  
    459459    if (status != B_OK)
    460460        return status;
    461461
     462    uint32 encapMode = B_NETWORK_ENCAP_NONE;
     463    if (authMode == B_NETWORK_AUTHENTICATION_802_1X)
     464        message->FindUInt32("encapsulation", &encapMode);
     465
     466    const char *username = NULL;
     467    if (encapMode > B_NETWORK_ENCAP_NONE) {
     468        status = message->FindString("username", &username);
     469        if (status != B_OK)
     470            return status;
     471    }
     472
    462473    const char *password = NULL;
    463474    if (authMode > B_NETWORK_AUTHENTICATION_NONE) {
    464475        status = message->FindString("password", &password);
    WPASupplicantApp::_JoinNetwork(BMessage *message)  
    490501    if (authMode >= B_NETWORK_AUTHENTICATION_WPA) {
    491502        if (result == 0)
    492503            result = wpa_config_set(network, "proto", "WPA RSN", 2);
    493         if (result == 0)
    494             result = wpa_config_set(network, "key_mgmt", "WPA-PSK", 3);
     504        if (result == 0) {
     505            if (authMode == B_NETWORK_AUTHENTICATION_802_1X)
     506                result = wpa_config_set(network, "key_mgmt", "WPA-EAP", 3);
     507            else
     508                result = wpa_config_set(network, "key_mgmt", "WPA-PSK", 3);
     509        }
    495510        if (result == 0)
    496511            result = wpa_config_set(network, "pairwise", "CCMP TKIP NONE", 4);
    497512        if (result == 0) {
    498513            result = wpa_config_set(network, "group",
    499514                "CCMP TKIP WEP104 WEP40", 5);
    500515        }
     516        if (result == 0) {
     517            if (encapMode > B_NETWORK_ENCAP_NONE) {
     518                switch (encapMode) {
     519                    case B_NETWORK_ENCAP_PEAP:
     520                        result = wpa_config_set(network, "eap", "PEAP", 6);
     521                        break;
     522                    case B_NETWORK_ENCAP_TLS:
     523                        result = wpa_config_set(network, "eap", "TLS", 6);
     524                        break;
     525                }
     526            }
     527        }
    501528    } else {
    502529        // Open or WEP.
    503530        if (result == 0)
    WPASupplicantApp::_JoinNetwork(BMessage *message)  
    519546
    520547            if (result == 0)
    521548                result = wpa_config_set(network, "wep_tx_keyidx", "0", 9);
     549        } else if (authMode == B_NETWORK_AUTHENTICATION_802_1X) {
     550            // EAP
     551            value = "\"";
     552            value += password;
     553            value += "\"";
     554            result = wpa_config_set(network, "password", value.String(), 10);
     555            if (encapMode > B_NETWORK_ENCAP_NONE) {
     556                value = "\"";
     557                value += username;
     558                value += "\"";
     559                result = wpa_config_set(network, "identity",
     560                    value.String(), 11);
     561            }
     562            // TODO: Does EAP need the same thing?
     563            #if 0
     564            if (result == 0) {
     565                // We need to actually "apply" the PSK
     566                wpa_config_update_psk(network);
     567            }
     568            #endif
    522569        } else if (authMode >= B_NETWORK_AUTHENTICATION_WPA) {
    523570            // WPA/WPA2
    524571            value = "\"";