Ejemplo n.º 1
0
 def extend(self, value):
     if isinstance(value, list):
         try:
             self.__value.extend(value)
             self.__encoded_value.extend(bytearray([item.encode()
                                                    for item in value]))
         except:
             raise TypeError('List must contain ASN1 objects')
     else:
         self.__encoded_value.extend(value)
         try:
             i = 0
             while i < len(value):
                 ident = value[i]
                 ident_len = value[i + 1]
                 if ident_len < 0x80:
                     data_len = ident_len
                     data_start = i + 2
                 else:
                     len_start = i + 1
                     data_start = len_start + (ident_len - 0x80) + 1
                     data_len = intcodecs.defdecode(value[len_start : 
                                                     data_start])
                 data_stop = data_start + data_len
                 self.__value.append(make_object(ident, value[data_start :
                                                          data_stop]))
                 i = data_stop
         except:
             raise TypeError('Invalid bytes passed')
Ejemplo n.º 2
0
 def __parse_bytes(self, key_bytes):
     maintype = key_bytes[0]
     cur_len = key_bytes[1]
     if cur_len < 0x80:
         parsed_len = cur_len
         data_start = 2
         data_stop = data_start + parsed_len + 1
     else:
         len_start = 1
         len_stop = len_start + cur_len - 0x80 + 1
         parsed_len = intcodecs.defdecode(key_bytes[len_start :
                                                    len_stop])
         data_start = len_stop
         data_stop = data_start + parsed_len + 1
     self.value = asn1key.make_object(maintype,
                                      key_bytes[data_start : data_stop])