def set_val(self, vals): if isinstance(vals, dict) and 'Type' in vals: type = vals['Type'] del vals['Type'] self.encode(type, **vals) else: Envelope.set_val(self, vals)
def encode(self, type, **kwargs): """sets the 5GS mobile identity with given type The given types correspond to the following classes: FGSIDTYPE_NO (0) -> FGSIDNone FGSIDTYPE_SUPI (1) -> FGSIDSUPI FGSIDTYPE_GUTI (2) -> FGSIDGUTI FGSIDTYPE_IMEI (3) -> FGSIDDigit FGSIDTYPE_TMSI (4) -> FGSIDTMSI FGSIDTYPE_IMEISV (5) -> FGSIDDigit FGSIDTYPE_MAC (6) -> FGSIDMAC 7 (undefined) -> FGSIDUnk """ if not isinstance(type, integer_types) or not 0 <= type <= 7: raise(PycrateErr('invalid 5GS identity type: %r' % type)) # set the appropriate content self._set_content(type) # pass the value to encode Envelope.set_val(self, kwargs)
def set_val(self, vals): ti, disp = None, True if isinstance(vals, integer_types): ti = vals disp = False elif isinstance(vals, dict) and 'TI' in vals: ti = vals['TI'] if ti is not None: if 0 <= ti < 7: self[1].set_val(ti) self[3].set_trans(True) self[4].set_trans(True) self[4].set_val(None) elif ti < 128: # extended self[1].set_val(7) self[3].set_trans(False) self[4].set_trans(False) self[4].set_val(ti) if disp: Envelope.set_val(self, vals)