FreeCalypso > hg > fc-sim-tools
changeset 57:bccf028921bb
apdu-checksw command added to both fc-simtool and fc-uicc-tool
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 22 Mar 2021 23:58:11 +0000 |
parents | b9fc7022f9ac |
children | 871281cb0555 |
files | libcommon/apducmd.c simtool/cmdtab.c uicc/cmdtab.c |
diffstat | 3 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libcommon/apducmd.c Mon Mar 22 21:30:42 2021 +0000 +++ b/libcommon/apducmd.c Mon Mar 22 23:58:11 2021 +0000 @@ -5,6 +5,7 @@ #include <sys/types.h> #include <stdio.h> +#include <stdlib.h> #include "simresp.h" cmd_apdu(argc, argv) @@ -24,3 +25,28 @@ printf("%04X\n", sim_resp_sw); return(0); } + +cmd_apdu_checksw(argc, argv) + char **argv; +{ + u_char cmd[260]; + int rc; + unsigned len, expect_sw; + + rc = decode_hex_data_from_string(argv[1], cmd, 5, 260); + if (rc < 0) + return(rc); + len = rc; + expect_sw = strtoul(argv[2], 0, 16); + rc = apdu_exchange(cmd, len); + if (rc < 0) + return(rc); + if (sim_resp_sw == expect_sw) + return(0); + else { + fprintf(stderr, + "SW response mismatch: expected %04X, got %04X\n", + expect_sw, sim_resp_sw); + return(-1); + } +}
--- a/simtool/cmdtab.c Mon Mar 22 21:30:42 2021 +0000 +++ b/simtool/cmdtab.c Mon Mar 22 23:58:11 2021 +0000 @@ -6,6 +6,7 @@ extern int cmd_a38(); extern int cmd_apdu(); +extern int cmd_apdu_checksw(); extern int cmd_atr(); extern int cmd_bfsearch(); extern int cmd_bfsearch_full(); @@ -124,6 +125,7 @@ struct cmdtab cmdtab[] = { {"a38", 1, 1, 1, cmd_a38}, {"apdu", 1, 1, 0, cmd_apdu}, + {"apdu-checksw", 2, 2, 0, cmd_apdu_checksw}, {"atr", 0, 0, 0, cmd_atr}, {"bfsearch", 1, 18, 1, cmd_bfsearch}, {"bfsearch-full", 0, 0, 1, cmd_bfsearch_full},
--- a/uicc/cmdtab.c Mon Mar 22 21:30:42 2021 +0000 +++ b/uicc/cmdtab.c Mon Mar 22 23:58:11 2021 +0000 @@ -5,6 +5,7 @@ #include "cmdtab.h" extern int cmd_apdu(); +extern int cmd_apdu_checksw(); extern int cmd_atr(); extern int cmd_bfsearch_adf(); extern int cmd_bfsearch_mf(); @@ -38,6 +39,7 @@ struct cmdtab cmdtab[] = { {"apdu", 1, 1, 0, cmd_apdu}, + {"apdu-checksw", 2, 2, 0, cmd_apdu_checksw}, {"atr", 0, 0, 0, cmd_atr}, {"bfsearch-adf", 0, 0, 1, cmd_bfsearch_adf}, {"bfsearch-mf", 0, 0, 1, cmd_bfsearch_mf},