SCARD: Fix GSM authentication on USIM
authorSimon Baatz <gmbnomis@gmail.com>
Thu, 15 May 2014 18:10:39 +0000 (20:10 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 15 May 2014 22:01:25 +0000 (01:01 +0300)
scard_gsm_auth() used SIM_CMD_GET_RESPONSE for both SIM and USIM. Convert
the command into USIM_CMD_GET_RESPONSE for USIM.

Since commit eb324600295 ("Fix switching from EAP-SIM to EAP-AKA/AKA'")
EAP-SIM is using the USIM if available. This triggers a probably ancient
bug in scard_gsm_auth(), which results in sending the wrong get response
command to the USIM. Thus, EAP-SIM stopped to work after this change on
USIMs that expect the proper command.

Signed-off-by: Simon Baatz <gmbnomis@gmail.com>
src/utils/pcsc_funcs.c

index ee90d25..ec06556 100644 (file)
@@ -1237,6 +1237,7 @@ int scard_gsm_auth(struct scard_data *scard, const unsigned char *_rand,
                cmd[4] = 17;
                cmd[5] = 16;
                os_memcpy(cmd + 6, _rand, 16);
+               get_resp[0] = USIM_CLA;
        }
        len = sizeof(resp);
        ret = scard_transmit(scard, cmd, cmdlen, resp, &len);