<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/25495">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">osmo-auc-gen: Print RFC3310 IMS HTTP-AKA style base64 nonce/res<br><br>This is useful when debugging IMS Authentication which uses<br>RFC3310 representation of the nonce and expected result.<br><br>Change-Id: Ibfa72410d8ff8e5b42063f1a12bff69ad2bebbb8<br>---<br>M tests/osmo-auc-gen/osmo-auc-gen_test.ok<br>M utils/osmo-auc-gen.c<br>2 files changed, 50 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/osmo-auc-gen/osmo-auc-gen_test.ok b/tests/osmo-auc-gen/osmo-auc-gen_test.ok</span><br><span>index 2840783..3c41f41 100644</span><br><span>--- a/tests/osmo-auc-gen/osmo-auc-gen_test.ok</span><br><span>+++ b/tests/osmo-auc-gen/osmo-auc-gen_test.ok</span><br><span>@@ -9,6 +9,8 @@</span><br><span> IK:   6cf555588bb61ab2ff23cd333c05ed09</span><br><span> CK: f0b29f50a7d873f30336473bdc35d04f</span><br><span> RES:        f511d3a7f06e6a30</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    amEFB2XKoyyQNxNw5dbcLXkMXYDEewAAcWzgCIO8OeE=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  9RHTp/BuajA=</span><br><span> SRES:   057fb997</span><br><span> Kc: 60524000cc5e5407</span><br><span> SQN:        0</span><br><span>@@ -24,6 +26,8 @@</span><br><span> IK:    6cf555588bb61ab2ff23cd333c05ed09</span><br><span> CK: f0b29f50a7d873f30336473bdc35d04f</span><br><span> RES:        f511d3a7f06e6a30</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    amEFB2XKoyyQNxNw5dbcLXkMXYDEegAAWFCKs4ZOJqA=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  9RHTp/BuajA=</span><br><span> SRES:   057fb997</span><br><span> Kc: 60524000cc5e5407</span><br><span> SQN:        1</span><br><span>@@ -39,6 +43,8 @@</span><br><span> IK:    6cf555588bb61ab2ff23cd333c05ed09</span><br><span> CK: f0b29f50a7d873f30336473bdc35d04f</span><br><span> RES:        f511d3a7f06e6a30</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    amEFB2XKoyyQNxNw5dbcLXkMXYDEbAAA5015bsCV2+4=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  9RHTp/BuajA=</span><br><span> SRES:   057fb997</span><br><span> Kc: 60524000cc5e5407</span><br><span> SQN:        23</span><br><span>@@ -54,6 +60,8 @@</span><br><span> IK:   d7213dd74860ccb8c14e54c0c4abc91c</span><br><span> CK: c350653d72f7a5bac3a27422e5186019</span><br><span> RES:        912cdfaadd7b0154</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    HcT5dDJczmEeVPUW3B/sVkNKRqca6wAA/txWPyegkWw=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  kSzfqt17AVQ=</span><br><span> SRES:   4c57defe</span><br><span> Kc: 169d78081b24c007</span><br><span> SQN:        42</span><br><span>@@ -69,6 +77,8 @@</span><br><span> IK:   191a93c4396113bff6939d4f98e169a6</span><br><span> CK: 9c38d9089265ed5ea164e190a65c200d</span><br><span> RES:        fd40205be2c9c7b2</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    KkgWL/PtykrfC3teUn1sFr+/MzLJHgAA1hmcrTHRXyY=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  /UAgW+LJx7I=</span><br><span> SRES:   1f89e7e9</span><br><span> Kc: d2d5361395b9b74a</span><br><span> SQN:        99</span><br><span>@@ -84,6 +94,8 @@</span><br><span> IK:   c348c2fe2f3e1fb37a7ae1638163bd98</span><br><span> CK: e740c156278705a14e1a99ba6d31334f</span><br><span> RES:        7c04e86a67967fcd</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    amEFB2XKoyyQNxNw5dbcLa+5k+T0uAAAac3uu0pLW1g=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  fAToameWf80=</span><br><span> SRES:   1b9297a7</span><br><span> Kc: 10687b71e4eb94c5</span><br><span> SQN:        281474976710655</span><br><span>@@ -99,6 +111,8 @@</span><br><span> IK:     27497388b6cb044648f396aa155b95ef</span><br><span> CK: f64735036e5871319c679f4742a75ea1</span><br><span> RES:        e229c19e791f2e41</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    OfovTj1SPYYZpztPZcPhTYcE9bpV0wAAVB3ed+pbHYw=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  4inBnnkfLkE=</span><br><span> SRES:   9b36efdf</span><br><span> Kc: 059a4f668f6fbe39</span><br><span> SQN:        32</span><br><span>@@ -115,6 +129,8 @@</span><br><span> IK: 27497388b6cb044648f396aa155b95ef</span><br><span> CK: f64735036e5871319c679f4742a75ea1</span><br><span> RES:        e229c19e791f2e41</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    OfovTj1SPYYZpztPZcPhTYcE9bpV1gAAeSZ6SzR62JA=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  4inBnnkfLkE=</span><br><span> SRES:   9b36efdf</span><br><span> Kc: 059a4f668f6fbe39</span><br><span> SQN:        37</span><br><span>@@ -131,6 +147,8 @@</span><br><span> IK: 27497388b6cb044648f396aa155b95ef</span><br><span> CK: f64735036e5871319c679f4742a75ea1</span><br><span> RES:        e229c19e791f2e41</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    OfovTj1SPYYZpztPZcPhTYcE9bpVxAAAEp3apPUBbiU=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  4inBnnkfLkE=</span><br><span> SRES:   9b36efdf</span><br><span> Kc: 059a4f668f6fbe39</span><br><span> SQN:        55</span><br><span>@@ -147,6 +165,8 @@</span><br><span> IK: 27497388b6cb044648f396aa155b95ef</span><br><span> CK: f64735036e5871319c679f4742a75ea1</span><br><span> RES:        e229c19e791f2e41</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    OfovTj1SPYYZpztPZcPhTYcE9bpVzAAAnRafX/ifYIc=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  4inBnnkfLkE=</span><br><span> SRES:   9b36efdf</span><br><span> Kc: 059a4f668f6fbe39</span><br><span> SQN:        63</span><br><span>@@ -163,6 +183,8 @@</span><br><span> IK: 27497388b6cb044648f396aa155b95ef</span><br><span> CK: f64735036e5871319c679f4742a75ea1</span><br><span> RES:        e229c19e791f2e41</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    OfovTj1SPYYZpztPZcPhTYcE9bpV6wAA1/xPfxnPwYA=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  4inBnnkfLkE=</span><br><span> SRES:   9b36efdf</span><br><span> Kc: 059a4f668f6fbe39</span><br><span> SQN:        24</span><br><span>@@ -179,6 +201,8 @@</span><br><span> IK: 27497388b6cb044648f396aa155b95ef</span><br><span> CK: f64735036e5871319c679f4742a75ea1</span><br><span> RES:        e229c19e791f2e41</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    OfovTj1SPYYZpztPZcPhTYcE9bpV6wAA1/xPfxnPwYA=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  4inBnnkfLkE=</span><br><span> SRES:   9b36efdf</span><br><span> Kc: 059a4f668f6fbe39</span><br><span> SQN:        24</span><br><span>@@ -195,6 +219,8 @@</span><br><span> IK: 27497388b6cb044648f396aa155b95ef</span><br><span> CK: f64735036e5871319c679f4742a75ea1</span><br><span> RES:        e229c19e791f2e41</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    OfovTj1SPYYZpztPZcPhTYcE9bpV6gAAqrBt4/1sAa8=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  4inBnnkfLkE=</span><br><span> SRES:   9b36efdf</span><br><span> Kc: 059a4f668f6fbe39</span><br><span> SQN:        25</span><br><span>@@ -211,6 +237,8 @@</span><br><span> IK: 27497388b6cb044648f396aa155b95ef</span><br><span> CK: f64735036e5871319c679f4742a75ea1</span><br><span> RES:        e229c19e791f2e41</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    OfovTj1SPYYZpztPZcPhTYcE9bpU8wAAy7ovu6PF4kI=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  4inBnnkfLkE=</span><br><span> SRES:   9b36efdf</span><br><span> Kc: 059a4f668f6fbe39</span><br><span> SQN:        256</span><br><span>@@ -227,6 +255,8 @@</span><br><span> IK:        27497388b6cb044648f396aa155b95ef</span><br><span> CK: f64735036e5871319c679f4742a75ea1</span><br><span> RES:        e229c19e791f2e41</span><br><span style="color: hsl(120, 100%, 40%);">+IMS nonce:    OfovTj1SPYYZpztPZcPhTYcE9bpU8gAAj44UV52l7Ls=</span><br><span style="color: hsl(120, 100%, 40%);">+IMS res:  4inBnnkfLkE=</span><br><span> SRES:   9b36efdf</span><br><span> Kc: 059a4f668f6fbe39</span><br><span> SQN:        257</span><br><span>diff --git a/utils/osmo-auc-gen.c b/utils/osmo-auc-gen.c</span><br><span>index eb6c65b..446d8ec 100644</span><br><span>--- a/utils/osmo-auc-gen.c</span><br><span>+++ b/utils/osmo-auc-gen.c</span><br><span>@@ -1,7 +1,7 @@</span><br><span> /*! \file osmo-auc-gen.c</span><br><span>  * GSM/GPRS/3G authentication testing tool. */</span><br><span> /*</span><br><span style="color: hsl(0, 100%, 40%);">- * (C) 2010-2012 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(120, 100%, 40%);">+ * (C) 2010-2021 by Harald Welte <laforge@gnumonks.org></span><br><span>  *</span><br><span>  * All Rights Reserved</span><br><span>  *</span><br><span>@@ -34,8 +34,20 @@</span><br><span> </span><br><span> #include <osmocom/crypt/auth.h></span><br><span> #include <osmocom/core/utils.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/base64.h></span><br><span> #include <osmocom/gsm/gsm_utils.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static void print_base64(const char *fmt, const uint8_t *data, unsigned int len)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      uint8_t outbuf[256];</span><br><span style="color: hsl(120, 100%, 40%);">+  size_t olen;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        OSMO_ASSERT(osmo_base64_encode(outbuf, sizeof(outbuf), &olen, data, len) == 0);</span><br><span style="color: hsl(120, 100%, 40%);">+   OSMO_ASSERT(sizeof(outbuf) > olen);</span><br><span style="color: hsl(120, 100%, 40%);">+        outbuf[olen] = '\0';</span><br><span style="color: hsl(120, 100%, 40%);">+  printf(fmt, outbuf);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void dump_triplets_dat(struct osmo_auth_vector *vec)</span><br><span> {</span><br><span>        if (vec->auth_types & OSMO_AUTH_TYPE_UMTS) {</span><br><span>@@ -53,10 +65,17 @@</span><br><span>    printf("RAND:\t%s\n", osmo_hexdump_nospc(vec->rand, sizeof(vec->rand)));</span><br><span> </span><br><span>         if (vec->auth_types & OSMO_AUTH_TYPE_UMTS) {</span><br><span style="color: hsl(120, 100%, 40%);">+           uint8_t inbuf[sizeof(vec->rand) + sizeof(vec->autn)];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>                printf("AUTN:\t%s\n", osmo_hexdump_nospc(vec->autn, sizeof(vec->autn)));</span><br><span>             printf("IK:\t%s\n", osmo_hexdump_nospc(vec->ik, sizeof(vec->ik)));</span><br><span>           printf("CK:\t%s\n", osmo_hexdump_nospc(vec->ck, sizeof(vec->ck)));</span><br><span>           printf("RES:\t%s\n", osmo_hexdump_nospc(vec->res, vec->res_len));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           memcpy(inbuf, vec->rand, sizeof(vec->rand));</span><br><span style="color: hsl(120, 100%, 40%);">+            memcpy(inbuf + sizeof(vec->rand), vec->autn, sizeof(vec->autn));</span><br><span style="color: hsl(120, 100%, 40%);">+             print_base64("IMS nonce:\t%s\n", inbuf, sizeof(inbuf));</span><br><span style="color: hsl(120, 100%, 40%);">+             print_base64("IMS res:\t%s\n", vec->res, vec->res_len);</span><br><span>      }</span><br><span> </span><br><span>        if (vec->auth_types & OSMO_AUTH_TYPE_GSM) {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/25495">change 25495</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/+/25495"/><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: Ibfa72410d8ff8e5b42063f1a12bff69ad2bebbb8 </div>
<div style="display:none"> Gerrit-Change-Number: 25495 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>