Esempio n. 1
0
 def parse_element(script):
     content = None
     content_length = 0
     uns = unhexlify(script)
     mark = uns[0]
     if 0x00 <= mark and mark <= 0x4B:
         content_length = mark
         content = script[2:2 + content_length * 2]
         script = script[2 + content_length * 2:]
     elif 0x4C <= mark and mark <= 0x4E:
         if 0x4C == mark:
             content_length = int(script[2:4], 16)
             content = script[4:4 + content_length * 2]
             script = script[4 + content_length * 2:]
         if 0x4D == mark:
             content_length = int(CT.big_or_little(script[2:6]), 16)
             content = script[6:6 + content_length * 2]
             script = script[6 + content_length * 2:]
         if 0x4E == mark:
             content_length = int(CT.big_or_little(script[2:10]), 16)
             content = script[10:10 + content_length * 2]
             script = script[10 + content_length * 2:]
     elif 0x4F == mark:
         content = -1
         script = script[2:]
     elif 0x51 <= mark and mark <= 0x60:
         content = mark - 0x50
         script = script[2:]
     else:
         pass
     return content, script
Esempio n. 2
0
 def script_to_hash(unhex):
     intermed = hashlib.sha256(unhex).digest()
     return CT.big_or_little(
         hexlify(hashlib.new('ripemd160',
                             intermed).digest()).decode('ascii'))
Esempio n. 3
0
 def parse_return_type(cls, mark):
     if isinstance(mark, str): mark = int(CT.big_or_little(mark), 16)
     if isinstance(mark, int): return cls.get_arg_name(mark)
     raise ValueError('wrong type for return {}'.format(mark))