FreeCalypso > hg > fc-pcsc-tools
view libcommon/apdu.c @ 19:72a24b8538eb
meaty function of pb-dump moved back into simtool, out of libcommon
Upon further reflection, I am not going to keep any of the pb-*
commands in the new version of fc-uicc-tool: they are logically
incorrect for UICC/USIM anyway, as they access phonebook files
via old classic SIM paths, rather than their USIM paths. OTOH,
I am going to implement new SMSP commands in fc-simtool, and I
do not plan to replicate them in fc-uicc-tool either. Guts of
fc-simtool pb-dump belong in simtool/pbdump.c, not in libcommon,
just like the guts of the future smsp-dump command will belong
in its own respective implementation module.
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Fri, 12 Feb 2021 03:33:26 +0000 |
| parents | f7145c77b7fb |
| children |
line wrap: on
line source
#include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <pcsclite.h> #include <winscard.h> #include "cardif.h" u_char sim_resp_data[258]; unsigned sim_resp_data_len, sim_resp_sw; apdu_exchange(cmd_apdu, cmd_apdu_len) u_char *cmd_apdu; unsigned cmd_apdu_len; { LONG rv; DWORD dwRecvLength; u_char *sw; dwRecvLength = 258; rv = SCardTransmit(hCard, SCARD_PCI_T0, cmd_apdu, cmd_apdu_len, NULL, sim_resp_data, &dwRecvLength); if (rv != SCARD_S_SUCCESS) { fprintf(stderr, "SCardTransmit: %s\n", pcsc_stringify_error(rv)); return(-1); } if (dwRecvLength < 2) { fprintf(stderr, "error: SCardTransmit response is shorter than 2 SW bytes\n"); return(-1); } sim_resp_data_len = dwRecvLength - 2; sw = sim_resp_data + sim_resp_data_len; sim_resp_sw = (sw[0] << 8) | sw[1]; return(0); }
