# HG changeset patch # User Mychaela Falconia # Date 1616457491 0 # Node ID bccf028921bb5f677e65414ddd69d620e147e7d4 # Parent b9fc7022f9ac41dc74218ce5ab62170afae428c2 apdu-checksw command added to both fc-simtool and fc-uicc-tool diff -r b9fc7022f9ac -r bccf028921bb libcommon/apducmd.c --- 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 #include +#include #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); + } +} diff -r b9fc7022f9ac -r bccf028921bb simtool/cmdtab.c --- 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}, diff -r b9fc7022f9ac -r bccf028921bb uicc/cmdtab.c --- 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},