X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=wpa_supplicant%2FAndroid.mk;h=a8d6a7f944e9f60d991663b5eab013cfbc88bba2;hb=1ac388633a3639d55ed9aaf91f6cd7863faba40d;hp=eda3106012f98746b8f46c65106974ed54c5d89c;hpb=643fab30a0247cce72fce982af64d2da275ce494;p=mech_eap.git diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk index eda3106..a8d6a7f 100644 --- a/wpa_supplicant/Android.mk +++ b/wpa_supplicant/Android.mk @@ -10,8 +10,6 @@ PKG_CONFIG ?= pkg-config ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),) CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := y -else - CONFIG_DRIVER_TEST := y endif include $(LOCAL_PATH)/android.config @@ -24,33 +22,39 @@ L_CFLAGS += -DVERSION_STR_POSTFIX=\"-$(PLATFORM_VERSION)\" # Set Android log name L_CFLAGS += -DANDROID_LOG_NAME=\"wpa_supplicant\" -# Disable roaming in wpa_supplicant -ifdef CONFIG_NO_ROAMING -L_CFLAGS += -DCONFIG_NO_ROAMING -endif +# Disable unused parameter warnings +L_CFLAGS += -Wno-unused-parameter -ifeq ($(BOARD_WLAN_DEVICE), bcmdhd) +# Set Android extended P2P functionality L_CFLAGS += -DANDROID_P2P -L_CFLAGS += -DP2P_CONCURRENT_SEARCH_DELAY=0 -endif -ifeq ($(BOARD_WLAN_DEVICE), qcwcn) -L_CFLAGS += -DANDROID_P2P +ifeq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),) +L_CFLAGS += -DANDROID_LIB_STUB endif -ifeq ($(BOARD_WLAN_DEVICE), mrvl) -L_CFLAGS += -DANDROID_P2P +# Disable roaming in wpa_supplicant +ifdef CONFIG_NO_ROAMING +L_CFLAGS += -DCONFIG_NO_ROAMING endif # Use Android specific directory for control interface sockets L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\" -L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/wpa_supplicant\" +L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/misc/wifi/sockets\" + +# Use Android specific directory for wpa_cli command completion history +L_CFLAGS += -DCONFIG_WPA_CLI_HISTORY_DIR=\"/data/misc/wifi\" # To force sizeof(enum) = 4 ifeq ($(TARGET_ARCH),arm) L_CFLAGS += -mabi=aapcs-linux endif +# C++ flags for binder interface +L_CPPFLAGS := -std=c++11 -Wall -Werror +# TODO: Remove these allowed warnings later. +L_CPPFLAGS += -Wno-unused-variable -Wno-unused-parameter +L_CPPFLAGS += -Wno-unused-private-field + INCLUDES = $(LOCAL_PATH) INCLUDES += $(LOCAL_PATH)/src INCLUDES += $(LOCAL_PATH)/src/common @@ -67,14 +71,14 @@ INCLUDES += $(LOCAL_PATH)/src/rsn_supp INCLUDES += $(LOCAL_PATH)/src/tls INCLUDES += $(LOCAL_PATH)/src/utils INCLUDES += $(LOCAL_PATH)/src/wps -INCLUDES += external/openssl/include -# frameworks/base/cmds/keystore is the old location and can be dropped at some -# point -INCLUDES += frameworks/base/cmds/keystore -INCLUDES += system/security/keystore +INCLUDES += system/security/keystore/include ifdef CONFIG_DRIVER_NL80211 +ifneq ($(wildcard external/libnl),) +INCLUDES += external/libnl/include +else INCLUDES += external/libnl-headers endif +endif ifdef CONFIG_FIPS CONFIG_NO_RANDOM_POOL= @@ -88,6 +92,7 @@ OBJS += eap_register.c OBJS += src/utils/common.c OBJS += src/utils/wpa_debug.c OBJS += src/utils/wpabuf.c +OBJS += wmm_ac.c OBJS_p = wpa_passphrase.c OBJS_p += src/utils/common.c OBJS_p += src/utils/wpa_debug.c @@ -95,6 +100,7 @@ OBJS_p += src/utils/wpabuf.c OBJS_c = wpa_cli.c src/common/wpa_ctrl.c OBJS_c += src/utils/wpa_debug.c OBJS_c += src/utils/common.c +OBJS_c += src/common/cli.c OBJS_d = OBJS_priv = @@ -139,6 +145,10 @@ ifdef CONFIG_ELOOP_POLL L_CFLAGS += -DCONFIG_ELOOP_POLL endif +ifdef CONFIG_ELOOP_EPOLL +L_CFLAGS += -DCONFIG_ELOOP_EPOLL +endif + ifdef CONFIG_EAPOL_TEST L_CFLAGS += -Werror -DEAPOL_TEST endif @@ -183,6 +193,17 @@ ifdef CONFIG_NO_SCAN_PROCESSING L_CFLAGS += -DCONFIG_NO_SCAN_PROCESSING endif +ifdef CONFIG_SUITEB +L_CFLAGS += -DCONFIG_SUITEB +NEED_SHA256=y +NEED_AES_OMAC1=y +endif + +ifdef CONFIG_SUITEB192 +L_CFLAGS += -DCONFIG_SUITEB192 +NEED_SHA384=y +endif + ifdef CONFIG_IEEE80211W L_CFLAGS += -DCONFIG_IEEE80211W NEED_SHA256=y @@ -192,9 +213,22 @@ endif ifdef CONFIG_IEEE80211R L_CFLAGS += -DCONFIG_IEEE80211R OBJS += src/rsn_supp/wpa_ft.c +NEED_SHA256=y +NEED_AES_OMAC1=y +endif + +ifdef CONFIG_MESH NEED_80211_COMMON=y NEED_SHA256=y +NEED_AES_SIV=y NEED_AES_OMAC1=y +NEED_AES_CTR=y +CONFIG_SAE=y +CONFIG_AP=y +L_CFLAGS += -DCONFIG_MESH +OBJS += mesh.c +OBJS += mesh_mpm.c +OBJS += mesh_rsn.c endif ifdef CONFIG_SAE @@ -242,11 +276,13 @@ endif ifdef CONFIG_IBSS_RSN NEED_RSN_AUTHENTICATOR=y L_CFLAGS += -DCONFIG_IBSS_RSN +L_CFLAGS += -DCONFIG_NO_VLAN OBJS += ibss_rsn.c endif ifdef CONFIG_P2P OBJS += p2p_supplicant.c +OBJS += p2p_supplicant_sd.c OBJS += src/p2p/p2p.c OBJS += src/p2p/p2p_utils.c OBJS += src/p2p/p2p_parse.c @@ -258,10 +294,10 @@ OBJS += src/p2p/p2p_invitation.c OBJS += src/p2p/p2p_dev_disc.c OBJS += src/p2p/p2p_group.c OBJS += src/ap/p2p_hostapd.c +OBJS += src/utils/bitfield.c L_CFLAGS += -DCONFIG_P2P NEED_GAS=y NEED_OFFCHANNEL=y -NEED_80211_COMMON=y CONFIG_WPS=y CONFIG_AP=y ifdef CONFIG_P2P_STRICT @@ -278,6 +314,7 @@ ifdef CONFIG_HS20 OBJS += hs20_supplicant.c L_CFLAGS += -DCONFIG_HS20 CONFIG_INTERWORKING=y +NEED_AES_OMAC1=y endif ifdef CONFIG_INTERWORKING @@ -286,6 +323,22 @@ L_CFLAGS += -DCONFIG_INTERWORKING NEED_GAS=y endif +ifdef CONFIG_FST +L_CFLAGS += -DCONFIG_FST +OBJS += src/fst/fst.c +OBJS += src/fst/fst_session.c +OBJS += src/fst/fst_iface.c +OBJS += src/fst/fst_group.c +OBJS += src/fst/fst_ctrl_aux.c +ifdef CONFIG_FST_TEST +L_CFLAGS += -DCONFIG_FST_TEST +endif +ifdef CONFIG_CTRL_IFACE +OBJS += src/fst/fst_ctrl_iface.c +endif +endif + + include $(LOCAL_PATH)/src/drivers/drivers.mk ifdef CONFIG_AP @@ -326,6 +379,12 @@ ifeq ($(CONFIG_L2_PACKET), freebsd) LIBS += -lpcap endif +ifdef CONFIG_ERP +L_CFLAGS += -DCONFIG_ERP +NEED_SHA256=y +NEED_HMAC_SHA256_KDF=y +endif + ifdef CONFIG_EAP_TLS # EAP-TLS ifeq ($(CONFIG_EAP_TLS), dyn) @@ -334,7 +393,6 @@ EAPDYN += src/eap_peer/eap_tls.so else L_CFLAGS += -DEAP_TLS OBJS += src/eap_peer/eap_tls.c -OBJS_h += src/eap_server/eap_server_tls.c endif TLS_FUNCS=y CONFIG_IEEE8021X_EAPOL=y @@ -343,9 +401,8 @@ endif ifdef CONFIG_EAP_UNAUTH_TLS # EAP-UNAUTH-TLS L_CFLAGS += -DEAP_UNAUTH_TLS -ifndef CONFIG_EAP_UNAUTH_TLS +ifndef CONFIG_EAP_TLS OBJS += src/eap_peer/eap_tls.c -OBJS_h += src/eap_server/eap_server_tls.c TLS_FUNCS=y endif CONFIG_IEEE8021X_EAPOL=y @@ -360,7 +417,6 @@ else L_CFLAGS += -DEAP_PEAP OBJS += src/eap_peer/eap_peap.c OBJS += src/eap_common/eap_peap_common.c -OBJS_h += src/eap_server/eap_server_peap.c endif TLS_FUNCS=y CONFIG_IEEE8021X_EAPOL=y @@ -374,11 +430,12 @@ EAPDYN += src/eap_peer/eap_ttls.so else L_CFLAGS += -DEAP_TTLS OBJS += src/eap_peer/eap_ttls.c -OBJS_h += src/eap_server/eap_server_ttls.c endif -MS_FUNCS=y TLS_FUNCS=y +ifndef CONFIG_FIPS +MS_FUNCS=y CHAP=y +endif CONFIG_IEEE8021X_EAPOL=y endif @@ -390,7 +447,6 @@ EAPDYN += src/eap_peer/eap_md5.so else L_CFLAGS += -DEAP_MD5 OBJS += src/eap_peer/eap_md5.c -OBJS_h += src/eap_server/eap_server_md5.c endif CHAP=y CONFIG_IEEE8021X_EAPOL=y @@ -413,7 +469,6 @@ else L_CFLAGS += -DEAP_MSCHAPv2 OBJS += src/eap_peer/eap_mschapv2.c OBJS += src/eap_peer/mschapv2.c -OBJS_h += src/eap_server/eap_server_mschapv2.c endif MS_FUNCS=y CONFIG_IEEE8021X_EAPOL=y @@ -427,7 +482,6 @@ EAPDYN += src/eap_peer/eap_gtc.so else L_CFLAGS += -DEAP_GTC OBJS += src/eap_peer/eap_gtc.c -OBJS_h += src/eap_server/eap_server_gtc.c endif CONFIG_IEEE8021X_EAPOL=y endif @@ -452,7 +506,6 @@ EAPDYN += src/eap_peer/eap_sim.so else L_CFLAGS += -DEAP_SIM OBJS += src/eap_peer/eap_sim.c -OBJS_h += src/eap_server/eap_server_sim.c endif CONFIG_IEEE8021X_EAPOL=y CONFIG_EAP_SIM_COMMON=y @@ -480,7 +533,6 @@ EAPDYN += src/eap_peer/eap_psk.so else L_CFLAGS += -DEAP_PSK OBJS += src/eap_peer/eap_psk.c src/eap_common/eap_psk_common.c -OBJS_h += src/eap_server/eap_server_psk.c endif CONFIG_IEEE8021X_EAPOL=y NEED_AES=y @@ -497,13 +549,19 @@ EAPDYN += src/eap_peer/eap_aka.so else L_CFLAGS += -DEAP_AKA OBJS += src/eap_peer/eap_aka.c -OBJS_h += src/eap_server/eap_server_aka.c endif CONFIG_IEEE8021X_EAPOL=y CONFIG_EAP_SIM_COMMON=y NEED_AES_CBC=y endif +ifdef CONFIG_EAP_PROXY +L_CFLAGS += -DCONFIG_EAP_PROXY +OBJS += src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).c +include $(LOCAL_PATH)/eap_proxy_$(CONFIG_EAP_PROXY).mk +CONFIG_IEEE8021X_EAPOL=y +endif + ifdef CONFIG_EAP_AKA_PRIME # EAP-AKA' ifeq ($(CONFIG_EAP_AKA_PRIME), dyn) @@ -516,7 +574,6 @@ endif ifdef CONFIG_EAP_SIM_COMMON OBJS += src/eap_common/eap_sim_common.c -OBJS_h += src/eap_server/eap_sim_db.c NEED_AES=y NEED_FIPS186_2_PRF=y endif @@ -531,7 +588,6 @@ else L_CFLAGS += -DEAP_FAST OBJS += src/eap_peer/eap_fast.c src/eap_peer/eap_fast_pac.c OBJS += src/eap_common/eap_fast_common.c -OBJS_h += src/eap_server/eap_server_fast.c endif TLS_FUNCS=y CONFIG_IEEE8021X_EAPOL=y @@ -546,7 +602,6 @@ EAPDYN += src/eap_peer/eap_pax.so else L_CFLAGS += -DEAP_PAX OBJS += src/eap_peer/eap_pax.c src/eap_common/eap_pax_common.c -OBJS_h += src/eap_server/eap_server_pax.c endif CONFIG_IEEE8021X_EAPOL=y endif @@ -559,7 +614,6 @@ EAPDYN += src/eap_peer/eap_sake.so else L_CFLAGS += -DEAP_SAKE OBJS += src/eap_peer/eap_sake.c src/eap_common/eap_sake_common.c -OBJS_h += src/eap_server/eap_server_sake.c endif CONFIG_IEEE8021X_EAPOL=y endif @@ -572,7 +626,6 @@ EAPDYN += src/eap_peer/eap_gpsk.so else L_CFLAGS += -DEAP_GPSK OBJS += src/eap_peer/eap_gpsk.c src/eap_common/eap_gpsk_common.c -OBJS_h += src/eap_server/eap_server_gpsk.c endif CONFIG_IEEE8021X_EAPOL=y ifdef CONFIG_EAP_GPSK_SHA256 @@ -585,7 +638,6 @@ endif ifdef CONFIG_EAP_PWD L_CFLAGS += -DEAP_PWD OBJS += src/eap_peer/eap_pwd.c src/eap_common/eap_pwd_common.c -OBJS_h += src/eap_server/eap_server_pwd.c CONFIG_IEEE8021X_EAPOL=y NEED_SHA256=y endif @@ -598,19 +650,15 @@ EAPDYN += src/eap_peer/eap_eke.so else L_CFLAGS += -DEAP_EKE OBJS += src/eap_peer/eap_eke.c src/eap_common/eap_eke_common.c -OBJS_h += src/eap_server/eap_server_eke.c endif CONFIG_IEEE8021X_EAPOL=y NEED_DH_GROUPS=y NEED_DH_GROUPS_ALL=y NEED_SHA256=y +NEED_AES_CBC=y endif ifdef CONFIG_WPS -ifdef CONFIG_WPS2 -L_CFLAGS += -DCONFIG_WPS2 -endif - # EAP-WSC L_CFLAGS += -DCONFIG_WPS -DEAP_WSC OBJS += wps_supplicant.c @@ -624,12 +672,10 @@ OBJS += src/wps/wps_attr_process.c OBJS += src/wps/wps_dev_attr.c OBJS += src/wps/wps_enrollee.c OBJS += src/wps/wps_registrar.c -OBJS_h += src/eap_server/eap_server_wsc.c CONFIG_IEEE8021X_EAPOL=y NEED_DH_GROUPS=y NEED_SHA256=y NEED_BASE64=y -NEED_80211_COMMON=y NEED_AES_CBC=y NEED_MODEXP=y @@ -688,8 +734,6 @@ else L_CFLAGS += -DEAP_IKEV2 OBJS += src/eap_peer/eap_ikev2.c src/eap_peer/ikev2.c OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c -OBJS_h += src/eap_server/eap_server_ikev2.c -OBJS_h += src/eap_server/ikev2.c endif CONFIG_IEEE8021X_EAPOL=y NEED_DH_GROUPS=y @@ -705,7 +749,6 @@ EAPDYN += src/eap_peer/eap_vendor_test.so else L_CFLAGS += -DEAP_VENDOR_TEST OBJS += src/eap_peer/eap_vendor_test.c -OBJS_h += src/eap_server/eap_server_vendor_test.c endif CONFIG_IEEE8021X_EAPOL=y endif @@ -715,8 +758,6 @@ ifdef CONFIG_EAP_TNC L_CFLAGS += -DEAP_TNC OBJS += src/eap_peer/eap_tnc.c OBJS += src/eap_peer/tncc.c -OBJS_h += src/eap_server/eap_server_tnc.c -OBJS_h += src/eap_server/tncs.c NEED_BASE64=y ifndef CONFIG_NATIVE_WINDOWS ifndef CONFIG_DRIVER_BSD @@ -738,7 +779,6 @@ endif endif ifdef CONFIG_AP -NEED_80211_COMMON=y NEED_EAP_COMMON=y NEED_RSN_AUTHENTICATOR=y L_CFLAGS += -DCONFIG_AP @@ -762,7 +802,10 @@ OBJS += src/ap/ieee802_11_shared.c OBJS += src/ap/drv_callbacks.c OBJS += src/ap/ap_drv_ops.c OBJS += src/ap/beacon.c +OBJS += src/ap/bss_load.c OBJS += src/ap/eap_user_db.c +OBJS += src/ap/neighbor_db.c +OBJS += src/ap/rrm.c ifdef CONFIG_IEEE80211N OBJS += src/ap/ieee802_11_ht.c ifdef CONFIG_IEEE80211AC @@ -772,6 +815,9 @@ endif ifdef CONFIG_WNM OBJS += src/ap/wnm_ap.c endif +ifdef CONFIG_MBO +OBJS += src/ap/mbo_ap.c +endif ifdef CONFIG_CTRL_IFACE OBJS += src/ap/ctrl_iface_ap.c endif @@ -788,6 +834,11 @@ L_CFLAGS += -DCONFIG_IEEE80211AC endif endif +ifdef CONFIG_MBO +OBJS += mbo.c +L_CFLAGS += -DCONFIG_MBO +endif + ifdef NEED_AP_MLME OBJS += src/ap/wmm.c OBJS += src/ap/ap_list.c @@ -823,34 +874,10 @@ OBJS += src/ap/peerkey_auth.c endif endif -ifdef CONFIG_EAP_SERVER -L_CFLAGS += -DEAP_SERVER -OBJS_h += src/eap_server/eap_server.c -OBJS_h += src/eap_server/eap_server_identity.c -OBJS_h += src/eap_server/eap_server_methods.c -endif - -ifdef CONFIG_RADIUS_CLIENT -OBJS_h += src/utils/ip_addr.c -OBJS_h += src/radius/radius.c -OBJS_h += src/radius/radius_client.c -endif - -ifdef CONFIG_AUTHENTICATOR -OBJS_h += src/eapol_auth/eapol_auth_sm.c -OBJS_h += src/ap/ieee802_1x.c -endif - -ifdef CONFIG_WPA_AUTHENTICATOR -OBJS_h += src/ap/wpa_auth.c -OBJS_h += src/ap/wpa_auth_ie.c -OBJS_h += src/ap/pmksa_cache_auth.c -ifdef CONFIG_IEEE80211R -OBJS_h += src/ap/wpa_auth_ft.c -endif -ifdef CONFIG_PEERKEY -OBJS_h += src/ap/peerkey_auth.c -endif +ifdef CONFIG_ACS +L_CFLAGS += -DCONFIG_ACS +OBJS += src/ap/acs.c +LIBS += -lm endif ifdef CONFIG_PCSC @@ -904,7 +931,6 @@ ifdef TLS_FUNCS NEED_DES=y # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST) OBJS += src/eap_peer/eap_tls_common.c -OBJS_h += src/eap_server/eap_server_tls_common.c ifndef CONFIG_FIPS NEED_TLS_PRF=y NEED_SHA1=y @@ -929,6 +955,7 @@ ifeq ($(CONFIG_TLS), openssl) ifdef TLS_FUNCS L_CFLAGS += -DEAP_TLS_OPENSSL OBJS += src/crypto/tls_openssl.c +OBJS += src/crypto/tls_openssl_ocsp.c LIBS += -lssl endif OBJS += src/crypto/crypto_openssl.c @@ -936,8 +963,14 @@ OBJS_p += src/crypto/crypto_openssl.c ifdef NEED_FIPS186_2_PRF OBJS += src/crypto/fips_prf_openssl.c endif +NEED_SHA256=y +NEED_TLS_PRF_SHA256=y LIBS += -lcrypto LIBS_p += -lcrypto +ifdef CONFIG_TLS_ADD_DL +LIBS += -ldl +LIBS_p += -ldl +endif endif ifeq ($(CONFIG_TLS), gnutls) @@ -948,7 +981,8 @@ endif OBJS += src/crypto/crypto_gnutls.c OBJS_p += src/crypto/crypto_gnutls.c ifdef NEED_FIPS186_2_PRF -OBJS += src/crypto/fips_prf_gnutls.c +OBJS += src/crypto/fips_prf_internal.c +OBJS += src/crypto/sha1-internal.c endif LIBS += -lgcrypt LIBS_p += -lgcrypt @@ -957,36 +991,6 @@ CONFIG_INTERNAL_RC4=y CONFIG_INTERNAL_DH_GROUP5=y endif -ifeq ($(CONFIG_TLS), schannel) -ifdef TLS_FUNCS -OBJS += src/crypto/tls_schannel.c -endif -OBJS += src/crypto/crypto_cryptoapi.c -OBJS_p += src/crypto/crypto_cryptoapi.c -ifdef NEED_FIPS186_2_PRF -OBJS += src/crypto/fips_prf_cryptoapi.c -endif -CONFIG_INTERNAL_SHA256=y -CONFIG_INTERNAL_RC4=y -CONFIG_INTERNAL_DH_GROUP5=y -endif - -ifeq ($(CONFIG_TLS), nss) -ifdef TLS_FUNCS -OBJS += src/crypto/tls_nss.c -LIBS += -lssl3 -endif -OBJS += src/crypto/crypto_nss.c -OBJS_p += src/crypto/crypto_nss.c -ifdef NEED_FIPS186_2_PRF -OBJS += src/crypto/fips_prf_nss.c -endif -LIBS += -lnss3 -LIBS_p += -lnss3 -CONFIG_INTERNAL_MD4=y -CONFIG_INTERNAL_DH_GROUP5=y -endif - ifeq ($(CONFIG_TLS), internal) ifndef CONFIG_CRYPTO CONFIG_CRYPTO=internal @@ -1000,6 +1004,7 @@ OBJS += src/tls/tlsv1_cred.c OBJS += src/tls/tlsv1_client.c OBJS += src/tls/tlsv1_client_write.c OBJS += src/tls/tlsv1_client_read.c +OBJS += src/tls/tlsv1_client_ocsp.c OBJS += src/tls/asn1.c OBJS += src/tls/rsa.c OBJS += src/tls/x509v3.c @@ -1053,6 +1058,8 @@ CONFIG_INTERNAL_SHA1=y CONFIG_INTERNAL_MD4=y CONFIG_INTERNAL_MD5=y CONFIG_INTERNAL_SHA256=y +CONFIG_INTERNAL_SHA384=y +CONFIG_INTERNAL_SHA512=y CONFIG_INTERNAL_RC4=y CONFIG_INTERNAL_DH_GROUP5=y endif @@ -1104,7 +1111,23 @@ ifdef CONFIG_INTERNAL_AES AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-dec.c endif +ifneq ($(CONFIG_TLS), openssl) +NEED_INTERNAL_AES_WRAP=y +endif +ifdef CONFIG_OPENSSL_INTERNAL_AES_WRAP +# Seems to be needed at least with BoringSSL +NEED_INTERNAL_AES_WRAP=y +L_CFLAGS += -DCONFIG_OPENSSL_INTERNAL_AES_WRAP +endif +ifdef CONFIG_FIPS +# Have to use internal AES key wrap routines to use OpenSSL EVP since the +# OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode. +NEED_INTERNAL_AES_WRAP=y +endif + +ifdef NEED_INTERNAL_AES_WRAP AESOBJS += src/crypto/aes-unwrap.c +endif ifdef NEED_AES_EAX AESOBJS += src/crypto/aes-eax.c NEED_AES_CTR=y @@ -1125,17 +1148,24 @@ endif endif ifdef NEED_AES_WRAP NEED_AES_ENC=y +ifdef NEED_INTERNAL_AES_WRAP AESOBJS += src/crypto/aes-wrap.c endif +endif ifdef NEED_AES_CBC NEED_AES_ENC=y +ifneq ($(CONFIG_TLS), openssl) AESOBJS += src/crypto/aes-cbc.c endif +endif ifdef NEED_AES_ENC ifdef CONFIG_INTERNAL_AES AESOBJS += src/crypto/aes-internal-enc.c endif endif +ifdef NEED_AES_SIV +AESOBJS += src/crypto/aes-siv.c +endif ifdef NEED_AES OBJS += $(AESOBJS) endif @@ -1167,9 +1197,12 @@ SHA1OBJS += src/crypto/sha1-tlsprf.c endif endif +MD5OBJS = ifndef CONFIG_FIPS +ifneq ($(CONFIG_TLS), openssl) MD5OBJS += src/crypto/md5.c endif +endif ifdef NEED_MD5 ifdef CONFIG_INTERNAL_MD5 MD5OBJS += src/crypto/md5-internal.c @@ -1191,11 +1224,17 @@ DESOBJS += src/crypto/des-internal.c endif endif +ifdef CONFIG_NO_RC4 +L_CFLAGS += -DCONFIG_NO_RC4 +endif + ifdef NEED_RC4 ifdef CONFIG_INTERNAL_RC4 +ifndef CONFIG_NO_RC4 OBJS += src/crypto/rc4.c endif endif +endif SHA256OBJS = # none by default ifdef NEED_SHA256 @@ -1207,11 +1246,27 @@ SHA256OBJS += src/crypto/sha256-prf.c ifdef CONFIG_INTERNAL_SHA256 SHA256OBJS += src/crypto/sha256-internal.c endif +ifdef CONFIG_INTERNAL_SHA384 +L_CFLAGS += -DCONFIG_INTERNAL_SHA384 +SHA256OBJS += src/crypto/sha384-internal.c +endif +ifdef CONFIG_INTERNAL_SHA512 +L_CFLAGS += -DCONFIG_INTERNAL_SHA512 +SHA256OBJS += src/crypto/sha512-internal.c +endif ifdef NEED_TLS_PRF_SHA256 SHA256OBJS += src/crypto/sha256-tlsprf.c endif +ifdef NEED_HMAC_SHA256_KDF +L_CFLAGS += -DCONFIG_HMAC_SHA256_KDF +SHA256OBJS += src/crypto/sha256-kdf.c +endif OBJS += $(SHA256OBJS) endif +ifdef NEED_SHA384 +L_CFLAGS += -DCONFIG_SHA384 +OBJS += src/crypto/sha384-prf.c +endif ifdef NEED_DH_GROUPS OBJS += src/crypto/dh_groups.c @@ -1246,6 +1301,7 @@ endif L_CFLAGS += -DCONFIG_CTRL_IFACE ifeq ($(CONFIG_CTRL_IFACE), unix) L_CFLAGS += -DCONFIG_CTRL_IFACE_UNIX +OBJS += src/common/ctrl_iface_common.c endif ifeq ($(CONFIG_CTRL_IFACE), udp) L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP @@ -1269,12 +1325,6 @@ ifdef CONFIG_WPS DBUS_OBJS += dbus/dbus_old_handlers_wps.c endif DBUS_OBJS += dbus/dbus_dict_helpers.c -ifndef DBUS_LIBS -DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1) -endif -ifndef DBUS_INCLUDE -DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) -endif DBUS_CFLAGS += $(DBUS_INCLUDE) endif @@ -1290,12 +1340,6 @@ endif ifdef CONFIG_P2P DBUS_OBJS += dbus/dbus_new_handlers_p2p.c endif -ifndef DBUS_LIBS -DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1) -endif -ifndef DBUS_INCLUDE -DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) -endif ifdef CONFIG_CTRL_IFACE_DBUS_INTRO DBUS_OBJS += dbus/dbus_new_introspect.c DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO @@ -1310,7 +1354,11 @@ endif OBJS += $(DBUS_OBJS) L_CFLAGS += $(DBUS_CFLAGS) -LIBS += $(DBUS_LIBS) + +ifdef CONFIG_CTRL_IFACE_BINDER +WPA_SUPPLICANT_USE_BINDER=y +L_CFLAGS += -DCONFIG_BINDER -DCONFIG_CTRL_IFACE_BINDER +endif ifdef CONFIG_READLINE OBJS_c += src/utils/edit_readline.c @@ -1354,14 +1402,12 @@ OBJS += src/utils/base64.c endif ifdef NEED_SME -NEED_80211_COMMON=y OBJS += sme.c L_CFLAGS += -DCONFIG_SME endif -ifdef NEED_80211_COMMON OBJS += src/common/ieee802_11_common.c -endif +OBJS += src/common/hw_features_common.c ifdef NEED_EAP_COMMON OBJS += src/eap_common/eap_common.c @@ -1458,12 +1504,6 @@ endif OBJS += src/drivers/driver_common.c -OBJS_wpa_rm := ctrl_iface.c ctrl_iface_unix.c -OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.c -ifdef CONFIG_AUTHENTICATOR -OBJS_wpa += tests/link_test.c -endif -OBJS_wpa += $(OBJS_l2) OBJS += wpa_supplicant.c events.c blacklist.c wpas_glue.c scan.c OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.c OBJS_t += src/radius/radius_client.c @@ -1486,26 +1526,6 @@ OBJS_priv += wpa_priv.c ifdef CONFIG_DRIVER_NL80211 OBJS_priv += src/common/ieee802_11_common.c endif -ifdef CONFIG_DRIVER_TEST -OBJS_priv += $(SHA1OBJS) -OBJS_priv += $(MD5OBJS) -ifeq ($(CONFIG_TLS), openssl) -OBJS_priv += src/crypto/crypto_openssl.c -endif -ifeq ($(CONFIG_TLS), gnutls) -OBJS_priv += src/crypto/crypto_gnutls.c -endif -ifeq ($(CONFIG_TLS), nss) -OBJS_priv += src/crypto/crypto_nss.c -endif -ifeq ($(CONFIG_TLS), internal) -ifeq ($(CONFIG_CRYPTO), libtomcrypt) -OBJS_priv += src/crypto/crypto_libtomcrypt.c -else -OBJS_priv += src/crypto/crypto_internal.c -endif -endif -endif # CONFIG_DRIVER_TEST OBJS += src/l2_packet/l2_packet_privsep.c OBJS += src/drivers/driver_privsep.c EXTRA_progs += wpa_priv @@ -1550,21 +1570,37 @@ ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),) LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB) endif LOCAL_SHARED_LIBRARIES := libc libcutils liblog - ifdef CONFIG_EAP_PROXY -OBJS += src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).c -include $(LOCAL_PATH)/eap_proxy_$(CONFIG_EAP_PROXY).mk +LOCAL_STATIC_LIBRARIES += $(LIB_STATIC_EAP_PROXY) +LOCAL_SHARED_LIBRARIES += $(LIB_SHARED_EAP_PROXY) endif - ifeq ($(CONFIG_TLS), openssl) LOCAL_SHARED_LIBRARIES += libcrypto libssl libkeystore_binder endif + +# With BoringSSL we need libkeystore-engine in order to provide access to +# keystore keys. +ifneq (,$(wildcard external/boringssl/flavor.mk)) +LOCAL_SHARED_LIBRARIES += libkeystore-engine +endif + ifdef CONFIG_DRIVER_NL80211 +ifneq ($(wildcard external/libnl),) +LOCAL_SHARED_LIBRARIES += libnl +else LOCAL_STATIC_LIBRARIES += libnl_2 endif +endif LOCAL_CFLAGS := $(L_CFLAGS) LOCAL_SRC_FILES := $(OBJS) LOCAL_C_INCLUDES := $(INCLUDES) +ifeq ($(DBUS), y) +LOCAL_SHARED_LIBRARIES += libdbus +endif +ifeq ($(WPA_SUPPLICANT_USE_BINDER), y) +LOCAL_SHARED_LIBRARIES += libbinder libutils +LOCAL_STATIC_LIBRARIES += libwpa_binder libwpa_binder_interface +endif include $(BUILD_EXECUTABLE) ######################## @@ -1601,4 +1637,44 @@ LOCAL_C_INCLUDES = $(INCLUDES) LOCAL_SHARED_LIBRARIES := libcutils liblog LOCAL_COPY_HEADERS_TO := libwpa_client LOCAL_COPY_HEADERS := src/common/wpa_ctrl.h +LOCAL_COPY_HEADERS += src/common/qca-vendor.h include $(BUILD_SHARED_LIBRARY) + +ifeq ($(WPA_SUPPLICANT_USE_BINDER), y) +### Binder interface library ### +######################## + +include $(CLEAR_VARS) +LOCAL_MODULE := libwpa_binder_interface +LOCAL_AIDL_INCLUDES := \ + $(LOCAL_PATH)/binder \ + frameworks/native/aidl/binder +LOCAL_EXPORT_C_INCLUDE_DIRS := \ + $(LOCAL_PATH)/binder +LOCAL_CPPFLAGS := $(L_CPPFLAGS) +LOCAL_SRC_FILES := \ + binder/binder_constants.cpp \ + binder/fi/w1/wpa_supplicant/ISupplicant.aidl \ + binder/fi/w1/wpa_supplicant/ISupplicantCallbacks.aidl \ + binder/fi/w1/wpa_supplicant/IIface.aidl +LOCAL_SHARED_LIBRARIES := libbinder +include $(BUILD_STATIC_LIBRARY) + +### Binder service library ### +######################## + +include $(CLEAR_VARS) +LOCAL_MODULE := libwpa_binder +LOCAL_CPPFLAGS := $(L_CPPFLAGS) +LOCAL_CFLAGS := $(L_CFLAGS) +LOCAL_C_INCLUDES := $(INCLUDES) +LOCAL_SRC_FILES := \ + binder/binder.cpp binder/binder_manager.cpp \ + binder/supplicant.cpp binder/iface.cpp +LOCAL_SHARED_LIBRARIES := \ + libbinder \ + libutils +LOCAL_STATIC_LIBRARIES := libwpa_binder_interface +include $(BUILD_STATIC_LIBRARY) + +endif # BINDER == y