From 980282cc12b7c89e29d82e397e47b0d2701ef637 Mon Sep 17 00:00:00 2001 From: Alexander Couzens Date: Thu, 5 Feb 2026 14:12:05 +0100 Subject: [PATCH] euicc: extend get_profiles_info to retrieve all known tags get_profiles_info only request for the default tag list, but not all tags. Add --all to the function to request for all known tags. Change-Id: Ia6878519a480bd625bb1fa2567c1fd2e0e89b071 --- pySim/euicc.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/pySim/euicc.py b/pySim/euicc.py index 36e2d2a6..2884c93e 100644 --- a/pySim/euicc.py +++ b/pySim/euicc.py @@ -444,9 +444,28 @@ class CardApplicationISDR(pySim.global_platform.CardApplicationSD): d = rn.to_dict() self._cmd.poutput_json(flatten_dict_lists(d['notification_sent_resp'])) - def do_get_profiles_info(self, _opts): + get_profiles_info_parser = argparse.ArgumentParser() + get_profiles_info_parser.add_argument('--all', action='store_true', help='Retrieve all known tags of a profile') + + @cmd2.with_argparser(get_profiles_info_parser) + def do_get_profiles_info(self, opts): """Perform an ES10c GetProfilesInfo function.""" - pi = CardApplicationISDR.store_data_tlv(self._cmd.lchan.scc, ProfileInfoListReq(), ProfileInfoListResp) + if opts.all: + tags = [nest.tag for nest in ProfileInfo.nested_collection_cls().nested] + u8tags = [] + # TODO: rework TagList to support 2 byte tags to not filter it into u8 tags + for tag in tags: + if tag <= 255: + u8tags.append(tag) + elif tag <= 65535: + u8tags.append(tag >> 8) + u8tags.append(tag & 0xff) + # Ignoring 3 byte tags + req = ProfileInfoListReq(children=[TagList(decoded=u8tags)]) + else: + req = ProfileInfoListReq() + + pi = CardApplicationISDR.store_data_tlv(self._cmd.lchan.scc, req, ProfileInfoListResp) d = pi.to_dict() self._cmd.poutput_json(flatten_dict_lists(d['profile_info_list_resp']))