pySim.saip: Add ProfileElementRFM class

Change-Id: I547e02c12345932deafa4b914fcaeaa183b69798
This commit is contained in:
Harald Welte
2024-07-06 13:47:09 +02:00
committed by laforge
parent 2668eb6148
commit 3b7e2ae2c1
2 changed files with 35 additions and 0 deletions

View File

@@ -553,6 +553,34 @@ class ProfileElementSSD(ProfileElementSD):
'uiccToolkitApplicationSpecificParametersField': h2b('01000001000000020112036C756500'),
}
class ProfileElementRFM(ProfileElement):
type = 'rfm'
def __init__(self, decoded: Optional[dict] = None,
inst_aid: Optional[bytes] = None, sd_aid: Optional[bytes] = None,
adf_aid: Optional[bytes] = None,
tar_list: Optional[List[bytes]] = [], msl: Optional[int] = 0x06):
super().__init__()
ADM1_ACCESS = h2b('02000100')
if decoded:
self.decoded = decoded
return
# provide some reasonable defaults for a MNO-SD
self.decoded = OrderedDict()
self.decoded['rfm-header'] = { 'mandated': None, 'identification': None}
self.decoded['instanceAID'] = inst_aid
self.decoded['securityDomainAID'] = sd_aid
self.decoded['tarList'] = tar_list
self.decoded['minimumSecurityLevel'] = bytes([msl])
self.decoded['uiccAccessDomain'] = ADM1_ACCESS
self.decoded['uiccAdminAccessDomain'] = ADM1_ACCESS
if adf_aid:
self.decoded['adfRFMAccess'] = {
'adfAID': adf_aid,
'adfAccessDomain': ADM1_ACCESS,
'adfAdminAccessDomain': ADM1_ACCESS,
}
class ProfileElementUSIM(ProfileElement):
type = 'usim'

View File

@@ -74,6 +74,13 @@ class SaipTest(unittest.TestCase):
pes.append(inst)
pes.to_der()
# RFM requires some constructor arguments
cls = ProfileElementRFM
with self.subTest(cls.__name__):
pes = ProfileElementSequence()
inst = cls(inst_aid=b'\x01\x02', sd_aid=b'\x03\x04', tar_list=[b'\x01\x02\x03'])
pes.append(inst)
pes.to_der()
if __name__ == "__main__":