laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/37420?usp=email )
Change subject: pySim.esim.saip: Add ProfileElementOpt{USIM,ISIM} classes ......................................................................
pySim.esim.saip: Add ProfileElementOpt{USIM,ISIM} classes
Change-Id: Iebff2e767baa19f272eeddc62d7d5b3a8f665db5 --- M pySim/esim/saip/__init__.py M tests/test_esim_saip.py 2 files changed, 39 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/20/37420/1
diff --git a/pySim/esim/saip/__init__.py b/pySim/esim/saip/__init__.py index 6e17de3..e87e5c0 100644 --- a/pySim/esim/saip/__init__.py +++ b/pySim/esim/saip/__init__.py @@ -270,7 +270,9 @@ 'pinCodes': ProfileElementPin, 'telecom': ProfileElementTelecom, 'usim': ProfileElementUSIM, + 'opt-usim': ProfileElementOptUSIM, 'isim': ProfileElementISIM, + 'opt-isim': ProfileElementOptISIM, 'akaParameter': ProfileElementAKA, } """Construct an instance from given raw, DER encoded bytes.""" @@ -575,6 +577,19 @@ f = File('ef-imsi', self.decoded['ef-imsi']) return dec_imsi(b2h(f.stream.getvalue()))
+class ProfileElementOptUSIM(ProfileElement): + type = 'opt-usim' + + def __init__(self, decoded: Optional[dict] = None): + super().__init__() + if decoded: + self.decoded = decoded + return + # provide some reasonable defaults for a MNO-SD + self.decoded = OrderedDict() + self.decoded['optusim-header'] = { 'mandated': None, 'identification': None} + self.decoded['templateID'] = str(oid.ADF_USIMopt_not_by_default_v2) + class ProfileElementISIM(ProfileElement): type = 'isim'
@@ -594,6 +609,20 @@ def adf_name(self) -> str: return b2h(self.decoded['adf-isim'][0][1]['dfName'])
+class ProfileElementOptISIM(ProfileElement): + type = 'opt-isim' + + def __init__(self, decoded: Optional[dict] = None): + super().__init__() + if decoded: + self.decoded = decoded + return + # provide some reasonable defaults for a MNO-SD + self.decoded = OrderedDict() + self.decoded['optisim-header'] = { 'mandated': None, 'identification': None} + self.decoded['templateID'] = str(oid.ADF_ISIMopt_not_by_default_v2) + + class ProfileElementAKA(ProfileElement): type = 'akaParameter'
diff --git a/tests/test_esim_saip.py b/tests/test_esim_saip.py index 4c1b936..5a1284e 100755 --- a/tests/test_esim_saip.py +++ b/tests/test_esim_saip.py @@ -67,7 +67,7 @@ """Test that DER-encoding of PE created by "empty" constructor works without raising exception.""" for cls in [ProfileElementMF, ProfileElementPuk, ProfileElementPin, ProfileElementTelecom, ProfileElementUSIM, ProfileElementISIM, ProfileElementAKA, ProfileElementSD, - ProfileElementSSD]: + ProfileElementSSD, ProfileElementOptUSIM, ProfileElementOptISIM]: with self.subTest(cls.__name__): pes = ProfileElementSequence() inst = cls()