laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/33212 )
Change subject: ts_31_102: Add shell command for GET IDENTITY ......................................................................
ts_31_102: Add shell command for GET IDENTITY
GET IDENTITY is used in the "SUCI computation on USIM" feature.
Change-Id: I619d397900dbd6565f8f46acdabcee511903830c --- M docs/shell.rst M pySim/commands.py M pySim/ts_31_102.py 3 files changed, 39 insertions(+), 0 deletions(-)
Approvals: laforge: Looks good to me, approved fixeria: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/docs/shell.rst b/docs/shell.rst index cce790a..e13d054 100644 --- a/docs/shell.rst +++ b/docs/shell.rst @@ -566,6 +566,12 @@ :module: pySim.ts_31_102 :func: ADF_USIM.AddlShellCommands.envelope_sms_parser
+get_identity +~~~~~~~~~~~~ +.. argparse:: + :module: pySim.ts_31_102 + :func: ADF_USIM.AddlShellCommands.get_id_parser +
File-specific commands ---------------------- diff --git a/pySim/commands.py b/pySim/commands.py index dc0edad..3c6ae49 100644 --- a/pySim/commands.py +++ b/pySim/commands.py @@ -641,3 +641,8 @@ def get_data(self, tag: int, cla: int = 0x00): data, sw = self._tp.send_apdu('%02xca%04x00' % (cla, tag)) return (data, sw) + + # TS 31.102 Section 7.5.2 + def get_identity(self, context: int): + data, sw = self._tp.send_apdu_checksw('807800%02x00' % (context)) + return (data, sw) diff --git a/pySim/ts_31_102.py b/pySim/ts_31_102.py index 342ea87..81b671e 100644 --- a/pySim/ts_31_102.py +++ b/pySim/ts_31_102.py @@ -1664,6 +1664,23 @@ (data, sw) = self._cmd.card._scc.envelope(b2h(sms_dl.to_tlv())) self._cmd.poutput('SW: %s, data: %s' % (sw, data))
+ get_id_parser = argparse.ArgumentParser() + get_id_parser.add_argument("--nswo-context", action='store_true') + + @cmd2.with_argparser(get_id_parser) + def do_get_identity(self, opts): + """Send a GET IDENTITY command to the card. This is part of the + procedure for "SUCI calculation performed on USIM" supported + by USIM with support for both EF.UST service 124 and 125.""" + context = 0x01 # SUCI + if opts.nswo_context: + context = 0x02 # SUCI 5G NSWO + (data, sw) = self._cmd.card._scc.get_identity(context) + do = SUCI_TlvDataObject() + do.from_tlv(h2b(data)) + do_d = do.to_dict() + self._cmd.poutput('SUCI TLV Data Object: %s' % do_d['suci__tlv_data_object']) +
# TS 31.102 Section 7.3 sw_usim = {