FreeCalypso > hg > fc-pcsc-tools
annotate libcommon/apducmd.c @ 184:8d073ff62c48
fc-simtool: imsi command does higher-level parsing,
the old version is now imsi-raw
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sat, 06 Mar 2021 05:44:17 +0000 | 
| parents | 8e70ee7c194f | 
| children | 
| rev | line source | 
|---|---|
| 121 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 * This module implements a low-level debug command | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 * for users to manually send arbitrary APDUs. | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 */ | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 #include <sys/types.h> | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 #include <stdio.h> | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 #include "simresp.h" | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 cmd_apdu(argc, argv) | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 char **argv; | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 { | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 u_char cmd[260]; | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 int rc; | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 unsigned len; | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 rc = decode_hex_data_from_string(argv[1], cmd, 5, 260); | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 if (rc < 0) | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 return(rc); | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 len = rc; | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 rc = apdu_exchange(cmd, len); | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 if (rc < 0) | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 return(rc); | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 printf("%04X\n", sim_resp_sw); | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 return(0); | 
| 
8e70ee7c194f
fc-simtool & fc-uicc-tool: raw apdu command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 } | 
