FreeCalypso > hg > fc-pcsc-tools
view libcommon/apdu.c @ 0:f7145c77b7fb
starting libcommon: factored out of fc-simtool
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 11 Feb 2021 22:28:45 +0000 |
parents | |
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); }