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)
|
459 | 459 | if (status != B_OK) |
460 | 460 | return status; |
461 | 461 | |
| 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 | |
462 | 473 | const char *password = NULL; |
463 | 474 | if (authMode > B_NETWORK_AUTHENTICATION_NONE) { |
464 | 475 | status = message->FindString("password", &password); |
… |
… |
WPASupplicantApp::_JoinNetwork(BMessage *message)
|
490 | 501 | if (authMode >= B_NETWORK_AUTHENTICATION_WPA) { |
491 | 502 | if (result == 0) |
492 | 503 | 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 | } |
495 | 510 | if (result == 0) |
496 | 511 | result = wpa_config_set(network, "pairwise", "CCMP TKIP NONE", 4); |
497 | 512 | if (result == 0) { |
498 | 513 | result = wpa_config_set(network, "group", |
499 | 514 | "CCMP TKIP WEP104 WEP40", 5); |
500 | 515 | } |
| 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 | } |
501 | 528 | } else { |
502 | 529 | // Open or WEP. |
503 | 530 | if (result == 0) |
… |
… |
WPASupplicantApp::_JoinNetwork(BMessage *message)
|
519 | 546 | |
520 | 547 | if (result == 0) |
521 | 548 | 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 |
522 | 569 | } else if (authMode >= B_NETWORK_AUTHENTICATION_WPA) { |
523 | 570 | // WPA/WPA2 |
524 | 571 | value = "\""; |