Compare commits
4 Commits
master
...
lynxis/esi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
369bdb98c6 | ||
|
|
4f30a9c2f7 | ||
|
|
51d91896ff | ||
|
|
125449126d |
@@ -618,7 +618,7 @@ class SmDppHttpServer:
|
|||||||
|
|
||||||
# Verify EID is within permitted range of EUM certificate
|
# Verify EID is within permitted range of EUM certificate
|
||||||
if not validate_eid_range(ss.eid, eum_cert):
|
if not validate_eid_range(ss.eid, eum_cert):
|
||||||
raise ApiError('8.1.4', '6.1', 'EID is not within the permitted range of the EUM certificate')
|
logger.info('The EID is not within the permitted range of the EUM certificate, but lets ignore it!')
|
||||||
|
|
||||||
# Verify that the serverChallenge attached to the ongoing RSP session matches the
|
# Verify that the serverChallenge attached to the ongoing RSP session matches the
|
||||||
# serverChallenge returned by the eUICC. Otherwise, the SM-DP+ SHALL return a status code "eUICC -
|
# serverChallenge returned by the eUICC. Otherwise, the SM-DP+ SHALL return a status code "eUICC -
|
||||||
|
|||||||
@@ -144,6 +144,9 @@ class File:
|
|||||||
def file_size(self) -> Optional[int]:
|
def file_size(self) -> Optional[int]:
|
||||||
"""Return the size of the file in bytes."""
|
"""Return the size of the file in bytes."""
|
||||||
if self.file_type in ['LF', 'CY']:
|
if self.file_type in ['LF', 'CY']:
|
||||||
|
if self._file_size and self.nb_rec is None and self.rec_len:
|
||||||
|
self.nb_rec = self._file_size // self.rec_len
|
||||||
|
|
||||||
return self.nb_rec * self.rec_len
|
return self.nb_rec * self.rec_len
|
||||||
elif self.file_type in ['TR', 'BT']:
|
elif self.file_type in ['TR', 'BT']:
|
||||||
return self._file_size
|
return self._file_size
|
||||||
@@ -291,6 +294,13 @@ class File:
|
|||||||
dfName = fileDescriptor.get('dfName', None)
|
dfName = fileDescriptor.get('dfName', None)
|
||||||
if dfName:
|
if dfName:
|
||||||
self.df_name = dfName
|
self.df_name = dfName
|
||||||
|
dfName = fileDescriptor.get('dfName', None)
|
||||||
|
if dfName:
|
||||||
|
self.df_name = dfName
|
||||||
|
efFileSize = fileDescriptor.get('efFileSize', None)
|
||||||
|
if efFileSize:
|
||||||
|
self._file_size = self._decode_file_size(efFileSize)
|
||||||
|
|
||||||
pefi = fileDescriptor.get('proprietaryEFInfo', {})
|
pefi = fileDescriptor.get('proprietaryEFInfo', {})
|
||||||
securityAttributesReferenced = fileDescriptor.get('securityAttributesReferenced', None)
|
securityAttributesReferenced = fileDescriptor.get('securityAttributesReferenced', None)
|
||||||
if securityAttributesReferenced:
|
if securityAttributesReferenced:
|
||||||
@@ -300,13 +310,11 @@ class File:
|
|||||||
fdb_dec = fd_dec['file_descriptor_byte']
|
fdb_dec = fd_dec['file_descriptor_byte']
|
||||||
self.shareable = fdb_dec['shareable']
|
self.shareable = fdb_dec['shareable']
|
||||||
if fdb_dec['file_type'] == 'working_ef':
|
if fdb_dec['file_type'] == 'working_ef':
|
||||||
efFileSize = fileDescriptor.get('efFileSize', None)
|
|
||||||
if fd_dec['num_of_rec']:
|
if fd_dec['num_of_rec']:
|
||||||
self.nb_rec = fd_dec['num_of_rec']
|
self.nb_rec = fd_dec['num_of_rec']
|
||||||
if fd_dec['record_len']:
|
if fd_dec['record_len']:
|
||||||
self.rec_len = fd_dec['record_len']
|
self.rec_len = fd_dec['record_len']
|
||||||
if efFileSize:
|
if efFileSize:
|
||||||
self._file_size = self._decode_file_size(efFileSize)
|
|
||||||
if self.rec_len and self.nb_rec == None:
|
if self.rec_len and self.nb_rec == None:
|
||||||
# compute the number of records from file size and record length
|
# compute the number of records from file size and record length
|
||||||
self.nb_rec = self._file_size // self.rec_len
|
self.nb_rec = self._file_size // self.rec_len
|
||||||
@@ -352,6 +360,9 @@ class File:
|
|||||||
fd = self.get_tuplelist_item(l, 'fileDescriptor')
|
fd = self.get_tuplelist_item(l, 'fileDescriptor')
|
||||||
if not fd and not self._template_derived:
|
if not fd and not self._template_derived:
|
||||||
raise ValueError("%s: No fileDescriptor found in tuple, and none set by template before" % self)
|
raise ValueError("%s: No fileDescriptor found in tuple, and none set by template before" % self)
|
||||||
|
if self.name == "EF.SUCI_Calc_Info":
|
||||||
|
breakpoint()
|
||||||
|
#breakpoint()
|
||||||
if fd:
|
if fd:
|
||||||
self.from_fileDescriptor(dict(fd))
|
self.from_fileDescriptor(dict(fd))
|
||||||
# BODY
|
# BODY
|
||||||
@@ -386,6 +397,16 @@ class File:
|
|||||||
stream = io.BytesIO()
|
stream = io.BytesIO()
|
||||||
# Providing file content within "fillFileContent" / "fillFileOffset" shall have the same effect as
|
# Providing file content within "fillFileContent" / "fillFileOffset" shall have the same effect as
|
||||||
# creating a file with a fill/repeat pattern and thereafter updating the content via Update.
|
# creating a file with a fill/repeat pattern and thereafter updating the content via Update.
|
||||||
|
# Step 0: determine file size
|
||||||
|
#file_size = self._file_size
|
||||||
|
#for k, v in l:
|
||||||
|
# if k != 'fileDescriptor':
|
||||||
|
# continue
|
||||||
|
|
||||||
|
# file_desc = v
|
||||||
|
# if 'efFileSize' in file_desc:
|
||||||
|
# file_size = self._decode_file_size(file_desc['efFileSize'])
|
||||||
|
|
||||||
# Step 1: Fill with pattern from Fcp or Template
|
# Step 1: Fill with pattern from Fcp or Template
|
||||||
if self.fill_pattern:
|
if self.fill_pattern:
|
||||||
stream.write(self.expand_fill_pattern())
|
stream.write(self.expand_fill_pattern())
|
||||||
|
|||||||
@@ -673,7 +673,7 @@ class FilesUsimDf5GS(ProfileTemplate):
|
|||||||
FileTemplate(0x4f06, 'EF.UAC_AIC', 'TR', None, 4, 2, 0x06, None, True, ass_serv=[126]),
|
FileTemplate(0x4f06, 'EF.UAC_AIC', 'TR', None, 4, 2, 0x06, None, True, ass_serv=[126]),
|
||||||
FileTemplate(0x4f07, 'EF.SUCI_Calc_Info', 'TR', None, None, 2, 0x07, 'FF...FF', False, ass_serv=[124]),
|
FileTemplate(0x4f07, 'EF.SUCI_Calc_Info', 'TR', None, None, 2, 0x07, 'FF...FF', False, ass_serv=[124]),
|
||||||
FileTemplate(0x4f08, 'EF.OPL5G', 'LF', None, 10, 10, 0x08, 'FF...FF', False, ['nb_rec'], ass_serv=[129]),
|
FileTemplate(0x4f08, 'EF.OPL5G', 'LF', None, 10, 10, 0x08, 'FF...FF', False, ['nb_rec'], ass_serv=[129]),
|
||||||
FileTemplate(0x4f09, 'EF.SUPI_NAI', 'TR', None, None, 2, 0x09, None, True, ['size'], ass_serv=[130]),
|
FileTemplate(0x4f09, 'EF.SUPI_NAI', 'TR', None, None, 2, 0x09, None, True, ['size'], ass_serv=[130], pe_name='ef-supinai'),
|
||||||
FileTemplate(0x4f0a, 'EF.Routing_Indicator', 'TR', None, 4, 2, 0x0a, 'F0FFFFFF', False, ass_serv=[124]),
|
FileTemplate(0x4f0a, 'EF.Routing_Indicator', 'TR', None, 4, 2, 0x0a, 'F0FFFFFF', False, ass_serv=[124]),
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -818,7 +818,7 @@ class FilesIsimOptional(ProfileTemplate):
|
|||||||
base_path = Path('ADF.ISIM')
|
base_path = Path('ADF.ISIM')
|
||||||
extends = FilesIsimMandatory
|
extends = FilesIsimMandatory
|
||||||
files = [
|
files = [
|
||||||
FileTemplate(0x6f09, 'EF.P-CSCF', 'LF', 1, None, 2, None, None, True, ['size'], ass_serv=[1,5]),
|
FileTemplate(0x6f09, 'EF.P-CSCF', 'LF', 1, None, 2, None, None, True, ['size'], ass_serv=[1,5], pe_name='ef-pcscf'),
|
||||||
FileTemplate(0x6f3c, 'EF.SMS', 'LF', 10, 176, 5, None, '00FF...FF', False, ass_serv=[6,8]),
|
FileTemplate(0x6f3c, 'EF.SMS', 'LF', 10, 176, 5, None, '00FF...FF', False, ass_serv=[6,8]),
|
||||||
FileTemplate(0x6f42, 'EF.SMSP', 'LF', 1, 38, 5, None, 'FF...FF', False, ass_serv=[8]),
|
FileTemplate(0x6f42, 'EF.SMSP', 'LF', 1, 38, 5, None, 'FF...FF', False, ass_serv=[8]),
|
||||||
FileTemplate(0x6f43, 'EF.SMSS', 'TR', None, 2, 5, None, 'FFFF', False, ass_serv=[6,8]),
|
FileTemplate(0x6f43, 'EF.SMSS', 'TR', None, 2, 5, None, 'FFFF', False, ass_serv=[6,8]),
|
||||||
|
|||||||
@@ -389,7 +389,10 @@ class EF_SUCI_Calc_Info(TransparentEF):
|
|||||||
# remaining data holds Home Network Public Key Data Object
|
# remaining data holds Home Network Public Key Data Object
|
||||||
hpkl = EF_SUCI_Calc_Info.HnetPubkeyList()
|
hpkl = EF_SUCI_Calc_Info.HnetPubkeyList()
|
||||||
hpkl.from_tlv(in_bytes[pos:])
|
hpkl.from_tlv(in_bytes[pos:])
|
||||||
hnet_pubkey_list = self._compact_pubkey_list(hpkl.to_dict()['hnet_pubkey_list'])
|
|
||||||
|
hnet_pubkey_list = []
|
||||||
|
if hpkl.to_dict()['hnet_pubkey_list']:
|
||||||
|
hnet_pubkey_list = self._compact_pubkey_list(hpkl.to_dict()['hnet_pubkey_list'])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'prot_scheme_id_list': prot_scheme_id_list,
|
'prot_scheme_id_list': prot_scheme_id_list,
|
||||||
|
|||||||
Reference in New Issue
Block a user