Interworking: Use EAP-AKA if USIM is used
authorJouni Malinen <j@w1.fi>
Sun, 4 Mar 2012 14:11:02 +0000 (16:11 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 4 Mar 2012 14:11:02 +0000 (16:11 +0200)
Signed-hostap: Jouni Malinen <j@w1.fi>

src/utils/pcsc_funcs.c
src/utils/pcsc_funcs.h
wpa_supplicant/interworking.c

index 5607adc..08510d0 100644 (file)
@@ -1419,3 +1419,9 @@ int scard_umts_auth(struct scard_data *scard, const unsigned char *_rand,
        wpa_printf(MSG_DEBUG, "SCARD: Unrecognized response");
        return -1;
 }
+
+
+int scard_supports_umts(struct scard_data *scard)
+{
+       return scard->sim_type == SCARD_USIM;
+}
index 9b945cc..092b147 100644 (file)
@@ -30,6 +30,7 @@ int scard_umts_auth(struct scard_data *scard, const unsigned char *_rand,
                    unsigned char *res, size_t *res_len,
                    unsigned char *ik, unsigned char *ck, unsigned char *auts);
 int scard_get_pin_retry_counter(struct scard_data *scard);
+int scard_supports_umts(struct scard_data *scard);
 
 #else /* PCSC_FUNCS */
 
@@ -40,6 +41,7 @@ int scard_get_pin_retry_counter(struct scard_data *scard);
 #define scard_gsm_auth(s, r, s2, k) -1
 #define scard_umts_auth(s, r, a, r2, rl, i, c, a2) -1
 #define scard_get_pin_retry_counter(s) -1
+#define scard_supports_umts(s) 0
 
 #endif /* PCSC_FUNCS */
 
index a721e5d..f826791 100644 (file)
@@ -12,6 +12,7 @@
 #include "common/ieee802_11_defs.h"
 #include "common/gas.h"
 #include "common/wpa_ctrl.h"
+#include "utils/pcsc_funcs.h"
 #include "drivers/driver.h"
 #include "eap_common/eap_defs.h"
 #include "eap_peer/eap_methods.h"
@@ -656,6 +657,8 @@ static int interworking_connect_3gpp(struct wpa_supplicant *wpa_s,
                wpa_printf(MSG_DEBUG, "EAP-SIM not supported");
                goto fail;
        }
+       if (cred->pcsc && wpa_s->scard && scard_supports_umts(wpa_s->scard))
+               wpa_config_set(ssid, "eap", "AKA", 0);
        if (!cred->pcsc && set_root_nai(ssid, cred->imsi, '1') < 0) {
                wpa_printf(MSG_DEBUG, "Failed to set Root NAI");
                goto fail;