comparison uicc/pins.c @ 119:0ac0aee0df11

fc-uicc-tool: remaining PIN commands from fc-simtool
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 19 Feb 2021 23:42:18 +0000
parents 5d45cde6e4b2
children a98992e9fe82
comparison
equal deleted inserted replaced
118:5d45cde6e4b2 119:0ac0aee0df11
55 fprintf(stderr, "bad SW response: %04X\n", sim_resp_sw); 55 fprintf(stderr, "bad SW response: %04X\n", sim_resp_sw);
56 return(-1); 56 return(-1);
57 } 57 }
58 return(0); 58 return(0);
59 } 59 }
60
61 cmd_change_pin(argc, argv)
62 char **argv;
63 {
64 u_char cmd[21];
65 int rc;
66
67 /* CHANGE PIN command APDU */
68 cmd[0] = 0x00;
69 cmd[1] = 0x24;
70 cmd[2] = 0x00;
71 cmd[3] = strtoul(argv[1], 0, 0);
72 cmd[4] = 16;
73 rc = encode_pin_entry(argv[2], cmd + 5);
74 if (rc < 0)
75 return(rc);
76 rc = encode_pin_entry(argv[3], cmd + 13);
77 if (rc < 0)
78 return(rc);
79 rc = apdu_exchange(cmd, 21);
80 if (rc < 0)
81 return(rc);
82 if (sim_resp_sw != 0x9000) {
83 fprintf(stderr, "bad SW response: %04X\n", sim_resp_sw);
84 return(-1);
85 }
86 return(0);
87 }
88
89 cmd_disable_pin(argc, argv)
90 char **argv;
91 {
92 u_char cmd[13];
93 int rc;
94
95 /* DISABLE PIN command APDU */
96 cmd[0] = 0x00;
97 cmd[1] = 0x26;
98 cmd[2] = 0x00;
99 cmd[3] = strtoul(argv[1], 0, 0);
100 cmd[4] = 8;
101 rc = encode_pin_entry(argv[2], cmd + 5);
102 if (rc < 0)
103 return(rc);
104 rc = apdu_exchange(cmd, 13);
105 if (rc < 0)
106 return(rc);
107 if (sim_resp_sw != 0x9000) {
108 fprintf(stderr, "bad SW response: %04X\n", sim_resp_sw);
109 return(-1);
110 }
111 return(0);
112 }
113
114 cmd_enable_pin(argc, argv)
115 char **argv;
116 {
117 u_char cmd[13];
118 int rc;
119
120 /* ENABLE PIN command APDU */
121 cmd[0] = 0x00;
122 cmd[1] = 0x28;
123 cmd[2] = 0x00;
124 cmd[3] = strtoul(argv[1], 0, 0);
125 cmd[4] = 8;
126 rc = encode_pin_entry(argv[2], cmd + 5);
127 if (rc < 0)
128 return(rc);
129 rc = apdu_exchange(cmd, 13);
130 if (rc < 0)
131 return(rc);
132 if (sim_resp_sw != 0x9000) {
133 fprintf(stderr, "bad SW response: %04X\n", sim_resp_sw);
134 return(-1);
135 }
136 return(0);
137 }
138
139 cmd_unblock_pin(argc, argv)
140 char **argv;
141 {
142 u_char cmd[21];
143 int rc;
144
145 /* UNBLOCK PIN command APDU */
146 cmd[0] = 0x00;
147 cmd[1] = 0x2C;
148 cmd[2] = 0x00;
149 cmd[3] = strtoul(argv[1], 0, 0);
150 cmd[4] = 16;
151 rc = encode_pin_entry(argv[2], cmd + 5);
152 if (rc < 0)
153 return(rc);
154 rc = encode_pin_entry(argv[3], cmd + 13);
155 if (rc < 0)
156 return(rc);
157 rc = apdu_exchange(cmd, 21);
158 if (rc < 0)
159 return(rc);
160 if (sim_resp_sw != 0x9000) {
161 fprintf(stderr, "bad SW response: %04X\n", sim_resp_sw);
162 return(-1);
163 }
164 return(0);
165 }