<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>