Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)