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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sim: Add HPSIM application support<br><br>Change-Id: I883faae5e170803b8301d10c8b9fad7892da009c<br>---<br>M src/sim/Makefile.am<br>A src/sim/card_fs_hpsim.c<br>M src/sim/core.c<br>M src/sim/sim_int.h<br>4 files changed, 79 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/sim/Makefile.am b/src/sim/Makefile.am</span><br><span>index 14bbbd8..0539dd9 100644</span><br><span>--- a/src/sim/Makefile.am</span><br><span>+++ b/src/sim/Makefile.am</span><br><span>@@ -14,7 +14,7 @@</span><br><span> </span><br><span> libosmosim_la_SOURCES = core.c reader.c class_tables.c \</span><br><span>                     card_fs_sim.c card_fs_usim.c card_fs_uicc.c \</span><br><span style="color: hsl(0, 100%, 40%);">-                   card_fs_isim.c card_fs_tetra.c</span><br><span style="color: hsl(120, 100%, 40%);">+                        card_fs_isim.c card_fs_hpsim.c card_fs_tetra.c</span><br><span> libosmosim_la_LDFLAGS = -version-info $(LIBVERSION)</span><br><span> libosmosim_la_LIBADD = \</span><br><span>    $(top_builddir)/src/libosmocore.la \</span><br><span>diff --git a/src/sim/card_fs_hpsim.c b/src/sim/card_fs_hpsim.c</span><br><span>new file mode 100644</span><br><span>index 0000000..4a5f7d9</span><br><span>--- /dev/null</span><br><span>+++ b/src/sim/card_fs_hpsim.c</span><br><span>@@ -0,0 +1,76 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*! \file card_fs_hpsim.c</span><br><span style="color: hsl(120, 100%, 40%);">+ * 3GPP HPSIM specific structures / routines. */</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * (C) 2020 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * All Rights Reserved</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * SPDX-License-Identifier: GPL-2.0+</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; either version 2 of the License, or</span><br><span style="color: hsl(120, 100%, 40%);">+ * (at your option) any later version.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * You should have received a copy of the GNU General Public License along</span><br><span style="color: hsl(120, 100%, 40%);">+ * with this program; if not, write to the Free Software Foundation, Inc.,</span><br><span style="color: hsl(120, 100%, 40%);">+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <errno.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <string.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/sim/sim.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/talloc.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/gsm/gsm48.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include "sim_int.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include "gsm_int.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* TS 31.104 Version 15.0.0 Release 15 / Chapter 7.1.3 */</span><br><span style="color: hsl(120, 100%, 40%);">+const struct osim_card_sw ts31_104_sw[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+     {</span><br><span style="color: hsl(120, 100%, 40%);">+             0x9862, 0xffff, SW_TYPE_STR, SW_CLS_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+            .u.str = "Security management - Authentication error, incorrect MAC",</span><br><span style="color: hsl(120, 100%, 40%);">+       },</span><br><span style="color: hsl(120, 100%, 40%);">+    OSIM_CARD_SW_LAST</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* TS 31.104 Version 15.0.0 Release 15 / Chapter 4.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct osim_file_desc hpsim_ef_in_adf_hpsim[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+      EF_LIN_FIX_N(0x6F06, 0x06, "EF.ARR", 0, 1, 256,</span><br><span style="color: hsl(120, 100%, 40%);">+             "Access Rule TLV data objects"),</span><br><span style="color: hsl(120, 100%, 40%);">+    EF_TRANSP_N(0x6F07, 0x07, "EF.IMST", 0, 9, 9,</span><br><span style="color: hsl(120, 100%, 40%);">+               "IMSI"),</span><br><span style="color: hsl(120, 100%, 40%);">+    EF_TRANSP_N(0x6FAD, 0x03, "EF_AD", 0, 4, 8,</span><br><span style="color: hsl(120, 100%, 40%);">+         "Administrative Data"),</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Annex E - TS 101 220 */</span><br><span style="color: hsl(120, 100%, 40%);">+static const uint8_t adf_hpsim_aid[] = { 0xA0, 0x00, 0x00, 0x00, 0x87, 0x10, 0x0A };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct osim_card_app_profile *osim_aprof_hpsim(void *ctx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     struct osim_card_app_profile *aprof;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct osim_file_desc *iadf;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        aprof = talloc_zero(ctx, struct osim_card_app_profile);</span><br><span style="color: hsl(120, 100%, 40%);">+       aprof->name = "3GPP HPSIM";</span><br><span style="color: hsl(120, 100%, 40%);">+      aprof->sw = ts31_104_sw;</span><br><span style="color: hsl(120, 100%, 40%);">+   aprof->aid_len = sizeof(adf_hpsim_aid);</span><br><span style="color: hsl(120, 100%, 40%);">+    memcpy(aprof->aid, adf_hpsim_aid, aprof->aid_len);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* ADF.HPSIM with its EF siblings */</span><br><span style="color: hsl(120, 100%, 40%);">+  iadf = alloc_adf_with_ef(aprof, adf_hpsim_aid, sizeof(adf_hpsim_aid), "ADF.HPSIM",</span><br><span style="color: hsl(120, 100%, 40%);">+                           hpsim_ef_in_adf_hpsim, ARRAY_SIZE(hpsim_ef_in_adf_hpsim));</span><br><span style="color: hsl(120, 100%, 40%);">+   aprof->adf = iadf;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       return aprof;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/sim/core.c b/src/sim/core.c</span><br><span>index 80a168f..8b2d6f9 100644</span><br><span>--- a/src/sim/core.c</span><br><span>+++ b/src/sim/core.c</span><br><span>@@ -453,6 +453,7 @@</span><br><span> {</span><br><span>     osim_app_profile_register(osim_aprof_usim(ctx));</span><br><span>     osim_app_profile_register(osim_aprof_isim(ctx));</span><br><span style="color: hsl(120, 100%, 40%);">+      osim_app_profile_register(osim_aprof_hpsim(ctx));</span><br><span> </span><br><span>        return 0;</span><br><span> }</span><br><span>diff --git a/src/sim/sim_int.h b/src/sim/sim_int.h</span><br><span>index 99a2242..a96a9cd 100644</span><br><span>--- a/src/sim/sim_int.h</span><br><span>+++ b/src/sim/sim_int.h</span><br><span>@@ -33,5 +33,6 @@</span><br><span> </span><br><span> struct osim_card_app_profile *osim_aprof_usim(void *ctx);</span><br><span> struct osim_card_app_profile *osim_aprof_isim(void *ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+struct osim_card_app_profile *osim_aprof_hpsim(void *ctx);</span><br><span> </span><br><span> #endif</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/17558">change 17558</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/+/17558"/><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: I883faae5e170803b8301d10c8b9fad7892da009c </div>
<div style="display:none"> Gerrit-Change-Number: 17558 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </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-MessageType: merged </div>