<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/17999">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">WIP: PIN validation<br><br>Change-Id: I3d8441d6dcd94b8b11bb1fbcee56c754bca9aefe<br>---<br>M utils/osmo-sim-test.c<br>1 file changed, 20 insertions(+), 7 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/99/17999/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/utils/osmo-sim-test.c b/utils/osmo-sim-test.c</span><br><span>index ae55b83..201d22b 100644</span><br><span>--- a/utils/osmo-sim-test.c</span><br><span>+++ b/utils/osmo-sim-test.c</span><br><span>@@ -41,6 +41,7 @@</span><br><span> </span><br><span> static uint8_t g_class = 0x00; /* UICC/USIM */</span><br><span> static const char *g_output_dir;</span><br><span style="color: hsl(120, 100%, 40%);">+static const char *g_pin;</span><br><span> </span><br><span> /* 11.1.1 */</span><br><span> static struct msgb *_select_file(struct osim_chan_hdl *st, uint8_t p1, uint8_t p2,</span><br><span>@@ -77,15 +78,14 @@</span><br><span>       return _select_file(st, 0x00, p2, (uint8_t *)&cfid, 2);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#if 0</span><br><span> /* 11.1.9 */</span><br><span style="color: hsl(0, 100%, 40%);">-static int verify_pin(struct osim_chan_hdl *st, uint8_t pin_nr, char *pin)</span><br><span style="color: hsl(120, 100%, 40%);">+static struct msgb *verify_pin(struct osim_chan_hdl *st, uint8_t pin_nr, const char *pin)</span><br><span> {</span><br><span>  struct msgb *msg;</span><br><span>    char *pindst;</span><br><span> </span><br><span>    if (strlen(pin) > 8)</span><br><span style="color: hsl(0, 100%, 40%);">-         return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+               return NULL;</span><br><span> </span><br><span>     msg = osim_new_apdumsg(g_class, 0x20, 0x00, pin_nr, 8, 0);</span><br><span>   pindst = (char *) msgb_put(msg, 8);</span><br><span>@@ -93,9 +93,10 @@</span><br><span>     /* Do not copy the terminating \0 */</span><br><span>         memcpy(pindst, pin, strlen(pin));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   return osim_transceive_apdu(st, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+ osim_transceive_apdu(st, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      return msg;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span> </span><br><span> /* 11.1.5 */</span><br><span> static struct msgb *read_record_nr(struct osim_chan_hdl *st, uint8_t rec_nr, uint16_t rec_size)</span><br><span>@@ -464,6 +465,7 @@</span><br><span>          " -h  --help               This message\n"</span><br><span>                 " -n  --reader-num NR      Open reader number NR\n"</span><br><span>                " -o  --output-dir DIR     To-be-created output directory for filesystem dump\n"</span><br><span style="color: hsl(120, 100%, 40%);">+            " -p  --pin PIN            Authenticate using the given PIN\n"</span><br><span>           );</span><br><span> }</span><br><span> </span><br><span>@@ -477,10 +479,11 @@</span><br><span>                    { "help", 0, 0, 'h' },</span><br><span>                     { "reader-num", 1, 0, 'n' },</span><br><span>                       { "output-dir", 1, 0, 'o' },</span><br><span style="color: hsl(120, 100%, 40%);">+                        { "pin", 1, 0, 'p' },</span><br><span>                      {0,0,0,0}</span><br><span>            };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-          c = getopt_long(argc, argv, "hn:o:",</span><br><span style="color: hsl(120, 100%, 40%);">+                c = getopt_long(argc, argv, "hn:o:p:",</span><br><span>                             long_options, &option_index);</span><br><span>            if (c == -1)</span><br><span>                         break;</span><br><span>@@ -496,6 +499,9 @@</span><br><span>                 case 'o':</span><br><span>                    g_output_dir = optarg;</span><br><span>                       break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case 'p':</span><br><span style="color: hsl(120, 100%, 40%);">+                     g_pin = optarg;</span><br><span style="color: hsl(120, 100%, 40%);">+                       break;</span><br><span>               default:</span><br><span>                     exit(2);</span><br><span>                     break;</span><br><span>@@ -645,7 +651,14 @@</span><br><span>        if (!chan)</span><br><span>           exit(3);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    //verify_pin(chan, 1, "1653");</span><br><span style="color: hsl(120, 100%, 40%);">+      if (g_pin) {</span><br><span style="color: hsl(120, 100%, 40%);">+          struct msgb *msg;</span><br><span style="color: hsl(120, 100%, 40%);">+             msg = verify_pin(chan, 1, g_pin);</span><br><span style="color: hsl(120, 100%, 40%);">+             if (!msg /*|| FIXME*/) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      fprintf(stderr, "Error authenticating PIN: %s\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                  exit(6);</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span>        rc = osim_uicc_scan_apps(chan);</span><br><span>      if (rc >= 0) {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/17999">change 17999</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/17999"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I3d8441d6dcd94b8b11bb1fbcee56c754bca9aefe </div>
<div style="display:none"> Gerrit-Change-Number: 17999 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>