def _read_para_esp_info(self, code, cbit, clen, *, desc, length, version):
if clen != <NUM_LIT:12>:<EOL><INDENT>raise ProtocolError(f'<STR_LIT>')<EOL><DEDENT>_resv = self._read_fileng(<NUM_LIT:2>)<EOL>_kind = self._read_unpack(<NUM_LIT:2>)<EOL>_olds = self._read_unpack(<NUM_LIT:2>)<EOL>_news = self._read_unpack(<NUM_LIT:2>)<EOL>esp_info = dict(<EOL>type=desc,<EOL>critical=cbit,<EOL>length=clen,<EOL>index=_kind,<EOL>old_spi=_olds,<EOL>new_spi=_news,<EOL>)<EOL>return esp_info<EOL>
Read HIP ESP_INFO parameter.

        Structure of HIP ESP_INFO parameter [RFC 7402]:
             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            |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |           Reserved            |         KEYMAT Index          |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |                            OLD SPI                            |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |                            NEW SPI                            |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Octets      Bits        Name                    Description
              0           0     esp_info.type           Parameter Type
              1          15     esp_info.critical       Critical Bit
              2          16     esp_info.length         Length of Contents
              4          32     -                       Reserved
              6          48     esp_info.index          KEYMAT Index
              8          64     esp_info.old_spi        OLD SPI
              12         96     esp_info.new_spi        NEW SPI