From 7bc5a298b28627c6ab5a91943e3f983c21c71d72 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 7 Aug 2012 14:07:43 -0500
Subject: wpa_supplicant 1.0

---
 abs/core/wpa_supplicant/PKGBUILD                   | 44 ++++++----
 abs/core/wpa_supplicant/config                     | 94 ++++++++++++++++++----
 .../hostap_allow-linking-with-libnl-3.2.patch      | 12 +++
 3 files changed, 120 insertions(+), 30 deletions(-)
 create mode 100644 abs/core/wpa_supplicant/hostap_allow-linking-with-libnl-3.2.patch

diff --git a/abs/core/wpa_supplicant/PKGBUILD b/abs/core/wpa_supplicant/PKGBUILD
index 9a22a1b..5a7db18 100644
--- a/abs/core/wpa_supplicant/PKGBUILD
+++ b/abs/core/wpa_supplicant/PKGBUILD
@@ -1,42 +1,56 @@
-# $Id: PKGBUILD 90602 2010-09-13 18:07:52Z thomas $
+# $Id: PKGBUILD 162909 2012-07-03 19:16:48Z dreisner $
 # Maintainer: Thomas Bächler <thomas@archlinux.org>
 
 pkgname=wpa_supplicant
-pkgver=0.7.3
+pkgver=1.0
 pkgrel=1
 pkgdesc="A utility providing key negotiation for WPA wireless networks"
 url="http://hostap.epitest.fi/wpa_supplicant"
 arch=('i686' 'x86_64')
-depends=('openssl' 'dbus-core>=1.2.4' 'readline>=6.0' 'libnl')
+depends=('openssl' 'dbus-core' 'readline' 'libnl')
 optdepends=('wpa_supplicant_gui: wpa_gui program')
 license=('GPL')
 groups=('base')
-backup=('etc/wpa_supplicant.conf')
-source=(http://hostap.epitest.fi/releases/wpa_supplicant-$pkgver.tar.gz
-        config)
-sha256sums=('d0cd50caa85346ccc376dcda5ed3c258eef19a93b3cade39d25760118ad59443'
-            '6a0837f18e5ff179ccd6954f7952dfc2e6aa69f353194ee4cb29c1ed2ef68c5d')
+backup=('etc/wpa_supplicant/wpa_supplicant.conf')
+source=("http://w1.fi/releases/${pkgname}-${pkgver}.tar.gz"
+	config hostap_allow-linking-with-libnl-3.2.patch)
+md5sums=('8650f6aa23646ef634402552d0669640'
+         '380d8d1fe24bccb2a2636cb2a6038c39'
+         '473fb6b77909ec5a50b6f4d91370e86b')
 
 build() {
-  cd "${srcdir}/${pkgname}-${pkgver}/${pkgname}"
+  cd "${srcdir}/${pkgname}-${pkgver}/"
+
+  # from fedora
+  patch -Np1 -i "$srcdir/hostap_allow-linking-with-libnl-3.2.patch"
+
+  cd "${pkgname}"
+
   cp "${srcdir}/config" ./.config
+
   sed -i 's@/usr/local@$(PREFIX)@g' Makefile
-  make
+
+  make PREFIX=/usr
 }
 
 package() {
   cd "${srcdir}/${pkgname}-${pkgver}/${pkgname}"
   make PREFIX=/usr DESTDIR="${pkgdir}" install
-  install -m755 -d "${pkgdir}/etc"
-  install -m644 wpa_supplicant.conf "${pkgdir}/etc/wpa_supplicant.conf"
+
+  install -d -m755 "${pkgdir}/etc/wpa_supplicant"
+  install -m644 wpa_supplicant.conf "${pkgdir}/etc/wpa_supplicant/wpa_supplicant.conf"
+
   install -d -m755 "${pkgdir}/usr/share/man/man"{5,8}
   install -m644 doc/docbook/*.5 "${pkgdir}/usr/share/man/man5/"
   install -m644 doc/docbook/*.8 "${pkgdir}/usr/share/man/man8/"
   rm -f "${pkgdir}/usr/share/man/man8/wpa_"{priv,gui}.8
 
-  install -m755 -d "${pkgdir}/usr/share/dbus-1/system-services"
+  install -d -m755 "${pkgdir}/usr/share/dbus-1/system-services"
   install -m644 dbus/{fi.epitest.hostap.WPASupplicant.service,fi.w1.wpa_supplicant1.service} "${pkgdir}/usr/share/dbus-1/system-services/"
-  sed -e 's/sbin/usr\/sbin/' -i "${pkgdir}/usr/share/dbus-1/system-services/"*.service
-  install -m755 -d "${pkgdir}/etc/dbus-1/system.d"
+
+  install -d -m755 "${pkgdir}/etc/dbus-1/system.d"
   install -m644 dbus/dbus-wpa_supplicant.conf "${pkgdir}/etc/dbus-1/system.d/wpa_supplicant.conf"
+
+  install -d -m755 "${pkgdir}/usr/lib/systemd/system"
+  install -m644 systemd/*.service "${pkgdir}/usr/lib/systemd/system/"
 }
diff --git a/abs/core/wpa_supplicant/config b/abs/core/wpa_supplicant/config
index 192e338..59da1e2 100644
--- a/abs/core/wpa_supplicant/config
+++ b/abs/core/wpa_supplicant/config
@@ -78,6 +78,11 @@
 #CONFIG_DRIVER_RALINK=y
 
 # Driver interface for generic Linux wireless extensions
+# Note: WEXT is deprecated in the current Linux kernel version and no new
+# functionality is added to it. nl80211-based interface is the new
+# replacement for WEXT and its use allows wpa_supplicant to properly control
+# the driver to improve existing functionality like roaming and to support new
+# functionality.
 CONFIG_DRIVER_WEXT=y
 
 # Driver interface for Linux drivers using the nl80211 kernel interface
@@ -109,11 +114,6 @@ CONFIG_DRIVER_NL80211=y
 # Driver interface for development testing
 #CONFIG_DRIVER_TEST=y
 
-# Include client MLME (management frame processing) for test driver
-# This can be used to test MLME operations in hostapd with the test interface.
-# space.
-#CONFIG_CLIENT_MLME=y
-
 # Driver interface for wired Ethernet drivers
 CONFIG_DRIVER_WIRED=y
 
@@ -123,6 +123,10 @@ CONFIG_DRIVER_WIRED=y
 # Driver interface for no driver (e.g., WPS ER only)
 #CONFIG_DRIVER_NONE=y
 
+# Solaris libraries
+#LIBS += -lsocket -ldlpi -lnsl
+#LIBS_c += -lsocket
+
 # Enable IEEE 802.1X Supplicant (automatically included if any EAP method is
 # included)
 CONFIG_IEEE8021X_EAPOL=y
@@ -161,6 +165,9 @@ CONFIG_EAP_OTP=y
 # EAP-PSK (experimental; this is _not_ needed for WPA-PSK)
 #CONFIG_EAP_PSK=y
 
+# EAP-pwd (secure authentication using only a password)
+#CONFIG_EAP_PWD=y
+
 # EAP-PAX
 #CONFIG_EAP_PAX=y
 
@@ -190,6 +197,13 @@ CONFIG_EAP_LEAP=y
 
 # Wi-Fi Protected Setup (WPS)
 CONFIG_WPS=y
+# Enable WSC 2.0 support
+#CONFIG_WPS2=y
+# Enable WPS external registrar functionality
+#CONFIG_WPS_ER=y
+# Disable credentials for an open network by default when acting as a WPS
+# registrar.
+#CONFIG_WPS_REG_DISABLE_OPEN=y
 
 # EAP-IKEv2
 #CONFIG_EAP_IKEV2=y
@@ -224,6 +238,10 @@ CONFIG_CTRL_IFACE=y
 # the resulting binary.
 CONFIG_READLINE=y
 
+# Include internal line edit mode in wpa_cli. This can be used as a replacement
+# for GNU Readline to provide limited command line editing and history support.
+#CONFIG_WPA_CLI_EDIT=y
+
 # Remove debugging code that is printing out debug message to stdout.
 # This can be used to reduce the size of the wpa_supplicant considerably
 # if debugging code is not needed. The size reduction can be around 35%
@@ -305,18 +323,17 @@ CONFIG_PEERKEY=y
 
 # Select TLS implementation
 # openssl = OpenSSL (default)
-# gnutls = GnuTLS (needed for TLS/IA, see also CONFIG_GNUTLS_EXTRA)
+# gnutls = GnuTLS
 # internal = Internal TLSv1 implementation (experimental)
 # none = Empty template
 #CONFIG_TLS=openssl
 
-# Whether to enable TLS/IA support, which is required for EAP-TTLSv1.
-# You need CONFIG_TLS=gnutls for this to have any effect. Please note that
-# even though the core GnuTLS library is released under LGPL, this extra
-# library uses GPL and as such, the terms of GPL apply to the combination
-# of wpa_supplicant and GnuTLS if this option is enabled. BSD license may not
-# apply for distribution of the resulting binary.
-#CONFIG_GNUTLS_EXTRA=y
+# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.1)
+# can be enabled to get a stronger construction of messages when block ciphers
+# are used. It should be noted that some existing TLS v1.0 -based
+# implementation may not be compatible with TLS v1.1 message (ClientHello is
+# sent prior to negotiating which version will be used)
+#CONFIG_TLSV11=y
 
 # If CONFIG_TLS=internal is used, additional library and include paths are
 # needed for LibTomMath. Alternatively, an integrated, minimal version of
@@ -378,6 +395,11 @@ CONFIG_CTRL_IFACE_DBUS_INTRO=y
 # Add support for writing debug log to a file (/tmp/wpa_supplicant-log-#.txt)
 CONFIG_DEBUG_FILE=y
 
+# Send debug messages to syslog instead of stdout
+#CONFIG_DEBUG_SYSLOG=y
+# Set syslog facility for debug messages
+#CONFIG_DEBUG_SYSLOG_FACILITY=LOG_DAEMON
+
 # Enable privilege separation (see README 'Privilege separation' for details)
 #CONFIG_PRIVSEP=y
 
@@ -389,7 +411,7 @@ CONFIG_DEBUG_FILE=y
 # This tracks use of memory allocations and other registrations and reports
 # incorrect use with a backtrace of call (or allocation) location.
 #CONFIG_WPA_TRACE=y
-# For BSD, comment out these.
+# For BSD, uncomment these.
 #LIBS += -lexecinfo
 #LIBS_p += -lexecinfo
 #LIBS_c += -lexecinfo
@@ -398,7 +420,49 @@ CONFIG_DEBUG_FILE=y
 # This enables use of libbfd to get more detailed symbols for the backtraces
 # generated by CONFIG_WPA_TRACE=y.
 #CONFIG_WPA_TRACE_BFD=y
-# For BSD, comment out these.
+# For BSD, uncomment these.
 #LIBS += -lbfd -liberty -lz
 #LIBS_p += -lbfd -liberty -lz
 #LIBS_c += -lbfd -liberty -lz
+
+# wpa_supplicant depends on strong random number generation being available
+# from the operating system. os_get_random() function is used to fetch random
+# data when needed, e.g., for key generation. On Linux and BSD systems, this
+# works by reading /dev/urandom. It should be noted that the OS entropy pool
+# needs to be properly initialized before wpa_supplicant is started. This is
+# important especially on embedded devices that do not have a hardware random
+# number generator and may by default start up with minimal entropy available
+# for random number generation.
+#
+# As a safety net, wpa_supplicant is by default trying to internally collect
+# additional entropy for generating random data to mix in with the data fetched
+# from the OS. This by itself is not considered to be very strong, but it may
+# help in cases where the system pool is not initialized properly. However, it
+# is very strongly recommended that the system pool is initialized with enough
+# entropy either by using hardware assisted random number generator or by
+# storing state over device reboots.
+#
+# wpa_supplicant can be configured to maintain its own entropy store over
+# restarts to enhance random number generation. This is not perfect, but it is
+# much more secure than using the same sequence of random numbers after every
+# reboot. This can be enabled with -e<entropy file> command line option. The
+# specified file needs to be readable and writable by wpa_supplicant.
+#
+# If the os_get_random() is known to provide strong random data (e.g., on
+# Linux/BSD, the board in question is known to have reliable source of random
+# data from /dev/urandom), the internal wpa_supplicant random pool can be
+# disabled. This will save some in binary size and CPU use. However, this
+# should only be considered for builds that are known to be used on devices
+# that meet the requirements described above.
+CONFIG_NO_RANDOM_POOL=y
+
+# IEEE 802.11n (High Throughput) support (mainly for AP mode)
+#CONFIG_IEEE80211N=y
+
+# Interworking (IEEE 802.11u)
+# This can be used to enable functionality to improve interworking with
+# external networks (GAS/ANQP to learn more about the networks and network
+# selection based on available credentials).
+#CONFIG_INTERWORKING=y
+
+CONFIG_LIBNL32=y
diff --git a/abs/core/wpa_supplicant/hostap_allow-linking-with-libnl-3.2.patch b/abs/core/wpa_supplicant/hostap_allow-linking-with-libnl-3.2.patch
new file mode 100644
index 0000000..5d89039
--- /dev/null
+++ b/abs/core/wpa_supplicant/hostap_allow-linking-with-libnl-3.2.patch
@@ -0,0 +1,12 @@
+diff -up wpa_supplicant-1.0-rc2/src/drivers/drivers.mak.foo wpa_supplicant-1.0-rc2/src/drivers/drivers.mak
+--- wpa_supplicant-1.0-rc2/src/drivers/drivers.mak.foo	2012-03-02 16:11:43.176448714 -0600
++++ wpa_supplicant-1.0-rc2/src/drivers/drivers.mak	2012-03-02 16:12:29.759866341 -0600
+@@ -48,7 +48,7 @@ NEED_RFKILL=y
+ ifdef CONFIG_LIBNL32
+   DRV_LIBS += -lnl-3
+   DRV_LIBS += -lnl-genl-3
+-  DRV_CFLAGS += -DCONFIG_LIBNL20
++  DRV_CFLAGS += -DCONFIG_LIBNL20 `pkg-config --cflags libnl-3.0`
+ else
+   ifdef CONFIG_LIBNL_TINY
+     DRV_LIBS += -lnl-tiny
-- 
cgit v0.12