laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/36929?usp=email )
Change subject: pySim.app: Attempt to retrieve the EID of a SGP.22 / SGP.32 eUICC ...................................................................... pySim.app: Attempt to retrieve the EID of a SGP.22 / SGP.32 eUICC ... and populate the RuntimeState.identity['EID'] wit it, so other [future] parts of the system can use it. Let's also print the EID (if available) from the 'cardinfo' shell command. Change-Id: Idc2ea1d9263f39b3dff403e1535a5e6c4e88b26f --- M pySim-shell.py M pySim/app.py M pySim/euicc.py 3 files changed, 37 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/29/36929/1 diff --git a/pySim-shell.py b/pySim-shell.py index c7539be..26f3d9b 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -760,6 +760,9 @@ self._cmd.poutput("Card info:") self._cmd.poutput(" Name: %s" % self._cmd.card.name) self._cmd.poutput(" ATR: %s" % self._cmd.rs.identity['ATR']) + eid = self._cmd.rs.identity.get('EID', None) + if eid: + self._cmd.poutput(" EID: %s" % eid) self._cmd.poutput(" ICCID: %s" % self._cmd.rs.identity['ICCID']) self._cmd.poutput(" Class-Byte: %s" % self._cmd.lchan.scc.cla_byte) self._cmd.poutput(" Select-Ctrl: %s" % self._cmd.lchan.scc.sel_ctrl) diff --git a/pySim/app.py b/pySim/app.py index e3878b8..5525cd1 100644 --- a/pySim/app.py +++ b/pySim/app.py @@ -25,6 +25,7 @@ from pySim.cdma_ruim import CardProfileRUIM from pySim.ts_102_221 import CardProfileUICC from pySim.utils import all_subclasses +from pySim.exceptions import SwMatchError # we need to import this module so that the SysmocomSJA2 sub-class of # CardModel is created, which will add the ATR-based matching and @@ -106,4 +107,15 @@ # inform the transport that we can do context-specific SW interpretation sl.set_sw_interpreter(rs) + # try to obtain the EID, if any + isd_r = rs.mf.applications.get(pySim.euicc.AID_ISD_R.lower(), None) + if isd_r: + rs.lchan[0].select_file(isd_r) + try: + rs.identity['EID'] = pySim.euicc.CardApplicationISDR.get_eid(scc) + except SwMatchError: + # has ISD-R but not a SGP.22/SGP.32 eUICC - maybe SGP.02? + pass + card.reset() + return rs, card diff --git a/pySim/euicc.py b/pySim/euicc.py index e32fa4d..a771a22 100644 --- a/pySim/euicc.py +++ b/pySim/euicc.py @@ -345,6 +345,13 @@ else: return None + @staticmethod + def get_eid(scc: SimCardCommands) -> str: + ged_cmd = GetEuiccData(children=[TagList(decoded=[0x5A])]) + ged = CardApplicationISDR.store_data_tlv(scc, ged_cmd, GetEuiccData) + d = ged.to_dict() + return flatten_dict_lists(d['get_euicc_data'])['eid_value'] + def decode_select_response(self, data_hex: Hexstr) -> object: t = FciTemplate() t.from_tlv(h2b(data_hex)) -- To view, visit https://gerrit.osmocom.org/c/pysim/+/36929?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: Idc2ea1d9263f39b3dff403e1535a5e6c4e88b26f Gerrit-Change-Number: 36929 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <lafo...@osmocom.org> Gerrit-MessageType: newchange