annotate libcommon/apducmd.c @ 93:6041c601304d

fcsim1-mkprov: revert OTA key addition It appears that GrcardSIM2 cards (which is what we got for FCSIM1) do not support OTA after all, contrary to what we were previously led to believe by some tech support emails from Grcard - apparently those support emails and OTA descriptions referred to some other card model(s).
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 21 Apr 2021 05:38:39 +0000
parents bccf028921bb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This module implements a low-level debug command
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * for users to manually send arbitrary APDUs.
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <sys/types.h>
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdio.h>
57
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
8 #include <stdlib.h>
9
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include "simresp.h"
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 cmd_apdu(argc, argv)
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 char **argv;
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 {
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 u_char cmd[260];
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 int rc;
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 unsigned len;
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 rc = decode_hex_data_from_string(argv[1], cmd, 5, 260);
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 if (rc < 0)
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 return(rc);
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 len = rc;
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 rc = apdu_exchange(cmd, len);
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 if (rc < 0)
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 return(rc);
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 printf("%04X\n", sim_resp_sw);
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 return(0);
c9ef9e91dd8e new libcommon, initial version
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 }
57
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
28
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
29 cmd_apdu_checksw(argc, argv)
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
30 char **argv;
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
31 {
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
32 u_char cmd[260];
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
33 int rc;
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
34 unsigned len, expect_sw;
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
35
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
36 rc = decode_hex_data_from_string(argv[1], cmd, 5, 260);
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
37 if (rc < 0)
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
38 return(rc);
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
39 len = rc;
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
40 expect_sw = strtoul(argv[2], 0, 16);
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
41 rc = apdu_exchange(cmd, len);
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
42 if (rc < 0)
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
43 return(rc);
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
44 if (sim_resp_sw == expect_sw)
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
45 return(0);
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
46 else {
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
47 fprintf(stderr,
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
48 "SW response mismatch: expected %04X, got %04X\n",
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
49 expect_sw, sim_resp_sw);
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
50 return(-1);
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
51 }
bccf028921bb apdu-checksw command added to both fc-simtool and fc-uicc-tool
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
52 }