comparison uicc/select.c @ 152:77832c9f2001

fc-uicc-tool: elem_select_op() implemented like in fc-simtool
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 25 Feb 2021 17:22:20 +0000
parents 58406ead2497
children cb3c40ff443e
comparison
equal deleted inserted replaced
151:d9dd52bc403b 152:77832c9f2001
8 8
9 u_char std_aid_usim[7] = {0xA0, 0x00, 0x00, 0x00, 0x87, 0x10, 0x02}; 9 u_char std_aid_usim[7] = {0xA0, 0x00, 0x00, 0x00, 0x87, 0x10, 0x02};
10 u_char std_aid_isim[7] = {0xA0, 0x00, 0x00, 0x00, 0x87, 0x10, 0x04}; 10 u_char std_aid_isim[7] = {0xA0, 0x00, 0x00, 0x00, 0x87, 0x10, 0x04};
11 11
12 unsigned last_sel_file_record_len; 12 unsigned last_sel_file_record_len;
13
14 elem_select_op(file_id)
15 unsigned file_id;
16 {
17 u_char cmd[7];
18 int rc;
19 unsigned expect_resp_len;
20
21 last_sel_file_record_len = 0;
22 /* SELECT command APDU */
23 cmd[0] = 0x00;
24 cmd[1] = 0xA4;
25 cmd[2] = 0x00;
26 cmd[3] = 0x04;
27 cmd[4] = 2;
28 cmd[5] = file_id >> 8;
29 cmd[6] = file_id;
30 rc = apdu_exchange(cmd, 7);
31 if (rc < 0)
32 return(rc);
33 if (sim_resp_sw == 0x6A82)
34 return(0);
35 if ((sim_resp_sw & 0xFF00) == 0x6100)
36 return(1);
37 fprintf(stderr,
38 "error or unexpected SW response to SELECT of 0x%04X: %04X\n",
39 file_id, sim_resp_sw);
40 return(-1);
41 }
13 42
14 select_op(file_id) 43 select_op(file_id)
15 unsigned file_id; 44 unsigned file_id;
16 { 45 {
17 u_char cmd[7]; 46 u_char cmd[7];