From: Jouni Malinen Date: Thu, 9 Aug 2012 19:13:34 +0000 (+0300) Subject: AOSP: OpenSSL engine/keystore X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=37f8b9da1a7759186b5d70e2e6c50d400ce41ced;p=thirdparty%2Fhostap.git AOSP: OpenSSL engine/keystore --- diff --git a/hostapd/Android.mk b/hostapd/Android.mk index 543c15231..9ce08162c 100644 --- a/hostapd/Android.mk +++ b/hostapd/Android.mk @@ -32,14 +32,11 @@ endif # To allow non-ASCII characters in SSID L_CFLAGS += -DWPA_UNICODE_SSID -# OpenSSL is configured without engines on Android -L_CFLAGS += -DOPENSSL_NO_ENGINE - INCLUDES = $(LOCAL_PATH) INCLUDES += $(LOCAL_PATH)/src INCLUDES += $(LOCAL_PATH)/src/utils INCLUDES += external/openssl/include -INCLUDES += frameworks/base/cmds/keystore +INCLUDES += system/security/keystore ifdef CONFIG_DRIVER_NL80211 INCLUDES += external/libnl-headers endif diff --git a/src/crypto/tls_openssl.c b/src/crypto/tls_openssl.c index 772f0b2f1..aaa920bf8 100644 --- a/src/crypto/tls_openssl.c +++ b/src/crypto/tls_openssl.c @@ -10,9 +10,11 @@ #ifndef CONFIG_SMARTCARD #ifndef OPENSSL_NO_ENGINE +#ifndef ANDROID #define OPENSSL_NO_ENGINE #endif #endif +#endif #include #include @@ -793,16 +795,21 @@ static int tls_engine_init(struct tls_connection *conn, const char *engine_id, wpa_printf(MSG_ERROR, "ENGINE: Engine ID not set"); return -1; } +#ifndef ANDROID if (pin == NULL) { wpa_printf(MSG_ERROR, "ENGINE: Smartcard PIN not set"); return -1; } +#endif if (key_id == NULL) { wpa_printf(MSG_ERROR, "ENGINE: Key Id not set"); return -1; } ERR_clear_error(); +#ifdef ANDROID + ENGINE_load_dynamic(); +#endif conn->engine = ENGINE_by_id(engine_id); if (!conn->engine) { wpa_printf(MSG_ERROR, "ENGINE: engine %s not available [%s]", @@ -817,11 +824,13 @@ static int tls_engine_init(struct tls_connection *conn, const char *engine_id, } wpa_printf(MSG_DEBUG, "ENGINE: engine initialized"); +#ifndef ANDROID if (ENGINE_ctrl_cmd_string(conn->engine, "PIN", pin, 0) == 0) { wpa_printf(MSG_ERROR, "ENGINE: cannot set pin [%s]", ERR_error_string(ERR_get_error(), NULL)); goto err; } +#endif /* load private key first in-case PIN is required for cert */ conn->private_key = ENGINE_load_private_key(conn->engine, key_id, NULL, NULL); diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk index e611d36f2..8d2355738 100644 --- a/wpa_supplicant/Android.mk +++ b/wpa_supplicant/Android.mk @@ -43,9 +43,6 @@ endif # To allow non-ASCII characters in SSID L_CFLAGS += -DWPA_UNICODE_SSID -# OpenSSL is configured without engines on Android -L_CFLAGS += -DOPENSSL_NO_ENGINE - INCLUDES = $(LOCAL_PATH) INCLUDES += $(LOCAL_PATH)/src INCLUDES += $(LOCAL_PATH)/src/common @@ -63,7 +60,7 @@ INCLUDES += $(LOCAL_PATH)/src/tls INCLUDES += $(LOCAL_PATH)/src/utils INCLUDES += $(LOCAL_PATH)/src/wps INCLUDES += external/openssl/include -INCLUDES += frameworks/base/cmds/keystore +INCLUDES += system/security/keystore ifdef CONFIG_DRIVER_NL80211 INCLUDES += external/libnl-headers endif