code: def _read_para_puzzle(self, code, cbit, clen, *, desc, length, version):
          
          if version == 1 and clen != 12:
              raise ProtocolError(f'HIPv{version}: [Parano {code}] invalid format')
  
          _numk = self._read_unpack(1)
          _time = self._read_unpack(1)
          _opak = self._read_fileng(2)
          _rand = self._read_unpack(clen-4)
  
          puzzle = dict(
              type=desc,
              critical=cbit,
              length=clen,
              number=_numk,
              lifetime=2 ** (_time - 32),
              opaque=_opak,
              random=_rand,
          )
  
          _plen = length - clen
          if _plen:
              self._read_fileng(_plen)
  
          return puzzle
docs: Read HIP PUZZLE parameter.
  
          Structure of HIP PUZZLE parameter [RFC 5201][RFC 7401]:
               0                   1                   2                   3
               0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |             Type              |             Length            |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |  #K, 1 byte   |    Lifetime   |        Opaque, 2 bytes        |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |                      Random #I, RHASH_len / 8 bytes           |
              /                                                               /
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
  
              Octets      Bits        Name                    Description
                0           0     puzzle.type             Parameter Type
                1          15     puzzle.critical         Critical Bit
                2          16     puzzle.length           Length of Contents
                4          32     puzzle.number           Number of Verified Bits
                5          40     puzzle.lifetime         Lifetime
                6          48     puzzle.opaque           Opaque
                8          64     puzzle.random           Random Number