HIP - Host Identity Protocol¶
Removed in version 1.6.0: pcapkit.protocols.internet.hip.Locator, with no alias: it is in this module, and
pcapkit.protocols.internet.hip exports the protocol class alone
(#2534).
pcapkit.protocols.internet.hip.protocol contains
HIP only,
which implements the extractor for Host Identity
Protocol (HIP) [*], whose structure is:
Octets |
Bits |
Name |
Description |
|---|---|---|---|
0 |
0 |
|
Next Header |
1 |
8 |
|
Header Length |
2 |
16 |
|
Fixed Bit ( |
2 |
17 |
|
Packet Type |
3 |
24 |
|
Version |
3 |
28 |
|
Reserved |
3 |
31 |
|
Fixed Bit ( |
4 |
32 |
|
Checksum |
6 |
48 |
|
Controls |
8 |
64 |
|
Sender’s Host Identity Tag |
24 |
192 |
|
Receiver’s Host Identity Tag |
40 |
320 |
|
HIP Parameters |
- class pcapkit.protocols.internet.hip.protocol.HIP(file=None, length=None, **kwargs)[source]¶
Bases:
IPv6_Ext[HIP,HIP],Internet[HIP,HIP]This class implements Host Identity Protocol.
Double-inherited, per the convention set on #917: a header usable only as an extension header inherits
IPv6_Extalone, while one also usable as a standalone protocol namesInternetas well. HIP is both, on independent grounds:RFC 7401 Section 5.1 states that “the HIP header is logically an IPv6 extension header”, and IANA lists protocol 139 in its IPv6 Extension Header Types registry.
RFC 7401 Appendix C.2, “IPv4 HIP Packet (I1 Packet)”, works a checksum for an IPv4 header carrying
Next Header: 139withPayload Protocol: 59. HIP therefore travels directly as an IPv4 payload, as doAHandESP.
The IPv4 ground separates HIP from
MHand Shim6, which are protocols in their own right but cannot appear under IPv4: RFC 6275 Section 6.1.1 defines the Mobility Header checksum over a pseudo-header of IPv6 header fields with no IPv4 variant, and Mobile IPv4 carries its equivalent messages over UDP port 434 (RFC 5944) rather than as protocol 135.Internetis already reached transitively throughIPv6_Ext; naming it records the classification, so a reader can tell a deliberate standalone protocol from a header that merely inherits one.This class parses the following HIP parameters, which are registered in the
self.__parameter__attribute:Parameter Code
Parameter Parser
Changed in version 1.5.0:
Parameters dispatch through
__parameter__rather than by method name (#429).A parameter is padded to the record length RFC 7401 gives (#651), and
PUZZLE,SOLUTION,R1_COUNTERandLOCATOR_SETare sized as the RFCs give them (#608, #653 to #655, #672, #679).A rebuild reproduces the Header Length, a packet with no parameters, the
PUZZLElifetime, the reserved, padding and Locator flag bits, and the two fixed header bits (#1313, #1314, #1323, #1328, #1365, #1417, #1459).A
(code, data)pair rebuilds from the parsed data model rather than from its fields as keyword arguments, which dropped every field whose constructor keyword is spelled differently (#2352).
Changed in version 1.6.0:
make()and the parameter makers, given an integer argument its field cannot carry – negative, too wide, or aboolfor a field wider than one bit – raiseProtocolError, rather than writing a different value or raising another exception; so doesmake()for parameters too long for the Header Length, and so do thePUZZLEand registration makers for a lifetime that is aboolor not a finite number of seconds (#2614).The same makers raise it for a fixed-size octet argument of the wrong width – the checksum, the
PUZZLEandSOLUTIONopaque data, thePAYLOAD_MICpayload data, or reserved octets – rather than padding or cutting it to the field. The opaque and payload data default to zeros of that width (#2676).Each enumeration field of
make()and of the parameter makers, and the code of each parameter inparameters, as a(code, value)pair or parsed data, takes a member or anintcode, resolved with the enumeration’sget; a name, aboolfor a field wider than one bit, or a code the field cannot carry raisesProtocolError, rather than resolving against an enumeration inferred from the caller’s frame or writing a different value (#2594).A header constructed without
versionis HIP version 2, asmake()writes, rather than 6, the default IP versionIPv6_Exthands on under that name; and theENCRYPTEDmaker, given an IV with a cipher other thanAES-128-CBCandAES-256-CBC, raisesProtocolError, rather than counting an IV in the Length that the parameter does not carry. A parsedENCRYPTEDparameter takes its cipher from theHIP_CIPHERparameters before it, so an AES cipher’s IV is read as the IV, rather than warning of a missingHIP_CIPHERand reading the IV as encrypted data (#2708).A parameter given to
make()as empty raw octets, which hold no type, raisesProtocolError, rather than being dropped from the header (#2723).
Removed in version 1.6.0: The
*_default,*_namespaceand*_reversedarguments that went with each enumeration field ofmake()and of the parameter makers, such asnext_defaultfornextandgroup_defaultfor the items ofgroups; resolve a name withresolve_index()first (#2594).- __parameter__: DefaultDict[Parameter | int, str | tuple[Callable[[Parameter, int, OrderedMultiDict[Parameter, Parameter]], Parameter], Callable[[Parameter, Parameter | None, int, Any], Parameter]]]¶
Parameter code to method mapping, see
_read_hip_param()and/or_make_hip_param(). Astrvalue names the methods_read_param_${name}and_make_param_${name}, falling back to_read_param_unassigned/_make_param_unassignedwhen they do not exist; any other value is a(parser, constructor)pair of callables.
- property payload: ProtocolBase | NoReturn¶
Payload of current instance.
- Raises:
UnsupportedCall – if the protocol is used as an IPv6 extension header
- property protocol: str | None | NoReturn¶
Name of next layer protocol (if any).
- Raises:
UnsupportedCall – if the protocol is used as an IPv6 extension header
- property protochain: ProtoChain | NoReturn¶
Protocol chain of current instance.
- Raises:
UnsupportedCall – if the protocol is used as an IPv6 extension header
- read(length=None, *, extension=False, **kwargs)[source]¶
Read Host Identity Protocol.
Structure of HIP header [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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header | Header Length |0| Packet Type |Version| RES.|1| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Controls | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sender's Host Identity Tag (HIT) | | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Receiver's Host Identity Tag (HIT) | | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | / HIP Parameters / / / | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- make(next=TransType.UDP, packet=Packet.HIP_DATA, packet_fixed=0, version=2, version_reserved=0, version_fixed=1, checksum=b'\x00\x00', controls_anonymous=False, controls_reserved=0, shit=0, rhit=0, parameters=None, payload=b'', **kwargs)[source]¶
Make (construct) packet data.
- Parameters:
packet_fixed (
int) – The fixed leading bit of thePacket Typeoctet; RFC 7401 Section 5.1 prescribes0when sending.version (
int) – HIP version.version_reserved (
int) – The 3 reserved bits betweenVersionand the fixed low-order bit.version_fixed (
int) – The fixed low-order bit of theVersionoctet; RFC 7401 Section 5.1 prescribes1when sending.checksum (
bytes) – Checksum.controls_anonymous (
bool) – If the sender is anonymous.controls_reserved (
int) – The 15 reserved high-order bits ofControls.shit (
int) – Sender’s host identity tag (HIT).rhit (
int) – Receiver’s host identity tag (HIT).parameters (
list[Parameter|tuple[Parameter|int,Parameter|dict[str,Any]] |bytes] |OrderedMultiDict[Parameter,Parameter] |None) – HIP parameters.payload (
bytes|ProtocolBase|Schema) – Payload.**kwargs (
Any) – Arbitrary keyword arguments.
- Return type:
- Returns:
Constructed packet data.
- Raises:
ProtocolError – If
next,packet,version, a fixed or reserved bit,shitorrhitdoes not fit its field,nextorpacketis a name, the code of a parameter inparametersis a name, aboolor a code its field cannot carry,checksumis not two octets, or the parameters make a header too long for its one-octet Header Length.
- classmethod register_parameter(code, meth)[source]¶
Register a parameter parser.
- Parameters:
code (
Parameter) – HIP parameter code.meth (
str|tuple[Callable[[Parameter,int,OrderedMultiDict[Parameter,Parameter]],Parameter],Callable[[Parameter,Parameter|None,int,Any],Parameter]]) – NameXof the_read_param_Xand_make_param_Xmethods, or a(parser, constructor)pair of callables, see__parameter__.
- Warns:
RegistryWarning– If a different entry is already registered forcode; it is overwritten. Handing back the entry already stored, or one equal to it, is a silent no-op. The entrycodeshipped with is accepted like any other, so an override can be undone (#1362, #1363).
- __post_init__(file=None, length=None, *, version=2, extension=False, **kwargs)[source]¶
Post initialisation hook.
- Overloads:
- Parameters:
version (
int) – When constructing, the HIP versionmake()writes, withmake()’s default, the RFC 7401 version; when parsing, the version of the enclosing IP layer, which is not read.extension (
bool) – If the protocol is used as an IPv6 extension header.**kwargs (
Any) – Arbitrary keyword arguments.
See also
For construction arguments, please refer to
self.make.Note
versionis declared here becauseIPv6_Ext.__post_init__defaults it to6, the IP version, and hands it on tomake(), which writes it as the HIP version. Left to that default, a header constructed without one would be HIP version 6, which no RFC defines, rather than the version 2make()called directly writes (#2708).
- _read_hip_param(length, *, version)[source]¶
Read HIP parameters.
- Parameters:
- Return type:
- Returns:
Extracted HIP parameters.
- Raises:
ProtocolError – if packet length threshold check failed
- _make_hip_param(parameters, *, version)[source]¶
Make HIP parameter.
A
(code, value)pair carries either a mapping of keyword arguments for the parameter’s constructor, or a parsedParameterdata model, which goes to the constructor positionally through_make_hip_param_data()rather than expanded as keyword arguments (#2352).- Parameters:
- Return type:
- Returns:
HIP parameters and total length.
- Raises:
ProtocolError – If the code of a
(code, value)pair, or the key of a parameter given as parsed data, is a name, aboolor a code its field cannot carry, or if a parameter given as raw octets is empty (#2723).
- _read_param_unassigned(schema, *, version, options)[source]¶
Read HIP unassigned parameters.
Structure of HIP unassigned parameters [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 |C| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | / Contents / / +-+-+-+-+-+-+-+-+ | | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
UnassignedParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_esp_info(schema, *, version, options)[source]¶
Read HIP
ESP_INFOparameter.Structure of HIP
ESP_INFOparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
ESPInfoParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT12.
- _read_param_r1_counter(schema, *, version, options)[source]¶
Read HIP
R1_COUNTERparameter.Structure of HIP
R1_COUNTERparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved, 4 bytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | R1 generation counter, 8 bytes | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
R1CounterParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT12, or the parameter is the HIPv1-only code128in a packet of another version.
- _read_param_locator_set(schema, *, version, options)[source]¶
Read HIP
LOCATOR_SETparameter.Structure of HIP
LOCATOR_SETparameter [RFC 8046]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Traffic Type | Locator Type | Locator Length | Reserved |P| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Locator Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Locator | | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Traffic Type | Locator Type | Locator Length | Reserved |P| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Locator Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Locator | | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
LocatorSetParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If locator data is malformed.
- _read_param_puzzle(schema, *, version, options)[source]¶
Read HIP
PUZZLEparameter.Structure of HIP
PUZZLEparameter [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 | / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
PuzzleParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
versionis1andschema.lenis NOT12.
- _read_param_solution(schema, *, version, options)[source]¶
Read HIP
SOLUTIONparameter.Structure of HIP
SOLUTIONparameter [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 | Reserved | Opaque, 2 bytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Random #I, n bytes | / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Puzzle solution #J, RHASH_len / 8 bytes | / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
SolutionParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
versionis1andschema.lenis NOT20, or ifschema.len - 4is odd.
- _read_param_seq(schema, *, version, options)[source]¶
Read HIP
SEQparameter.Structure of HIP
SEQparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Update ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
SEQParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT4.
- _read_param_ack(schema, *, version, options)[source]¶
Read HIP
ACKparameter.Structure of HIP
ACKparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | peer Update ID 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / peer Update ID n | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
ACKParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis not a multiple of4.
- _read_param_dh_group_list(schema, *, version, options)[source]¶
Read HIP
DH_GROUP_LISTparameter.Structure of HIP
DH_GROUP_LISTparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DH GROUP ID #1| DH GROUP ID #2| DH GROUP ID #3| DH GROUP ID #4| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DH GROUP ID #n| Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
DHGroupListParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – The parameter is NOT supported in HIPv1.
- _read_param_diffie_hellman(schema, *, version, options)[source]¶
Read HIP
DIFFIE_HELLMANparameter.Structure of HIP
DIFFIE_HELLMANparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Group ID | Public Value Length | Public Value / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
DiffieHellmanParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_hip_transform(schema, *, version, options)[source]¶
Read HIP
HIP_TRANSFORMparameter.Structure of HIP
HIP_TRANSFORMparameter [RFC 5201]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Suite ID #1 | Suite ID #2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Suite ID #n | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
HIPTransformParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If the parameter is used in a version other than HIPv1, or
schema.lenis not a multiple of2.
- _read_param_hip_cipher(schema, *, version, options)[source]¶
Read HIP
HIP_CIPHERparameter.Structure of HIP
HIP_CIPHERparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Cipher ID #1 | Cipher ID #2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Cipher ID #n | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
HIPCipherParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If the parameter is used in HIPv1, or
schema.lenis not a multiple of2.
- _read_param_nat_traversal_mode(schema, *, version, options)[source]¶
Read HIP
NAT_TRAVERSAL_MODEparameter.Structure of HIP
NAT_TRAVERSAL_MODEparameter [RFC 5770]: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 | Mode ID #1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Mode ID #2 | Mode ID #3 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Mode ID #n | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
NATTraversalModeParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis not a multiple of2.
- _read_param_transaction_pacing(schema, *, version, options)[source]¶
Read HIP
TRANSACTION_PACINGparameter.Structure of HIP
TRANSACTION_PACINGparameter [RFC 5770]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Min Ta | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
TransactionPacingParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT4.
- _read_param_encrypted(schema, *, version, options)[source]¶
Read HIP
ENCRYPTEDparameter.Structure of HIP
ENCRYPTEDparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IV / / / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / Encrypted data / / / / +-------------------------------+ / | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
EncryptedParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_host_id(schema, *, version, options)[source]¶
Read HIP
HOST_IDparameter.Structure of HIP
HOST_IDparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HI Length |DI-Type| DI Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Algorithm | Host Identity / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | Domain Identifier / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
HostIDParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_hit_suite_list(schema, *, version, options)[source]¶
Read HIP
HIT_SUITE_LISTparameter.Structure of HIP
HIT_SUITE_LISTparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID #1 | ID #2 | ID #3 | ID #4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID #n | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
HITSuiteListParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – The parameter is NOT supported in HIPv1.
- _read_param_cert(schema, *, version, options)[source]¶
Read HIP
CERTparameter.Structure of HIP
CERTparameter [RFC 8002]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CERT group | CERT count | CERT ID | CERT type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Certificate / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | Padding (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
CertParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_notification(schema, *, version, options)[source]¶
Read HIP
NOTIFICATIONparameter.Structure of HIP
NOTIFICATIONparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | Notify Message Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | / / Notification Data / / +---------------+ / | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
NotificationParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_echo_request_signed(schema, *, version, options)[source]¶
Read HIP
ECHO_REQUEST_SIGNEDparameter.Structure of HIP
ECHO_REQUEST_SIGNEDparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Opaque data (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
EchoRequestSignedParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_reg_info(schema, *, version, options)[source]¶
Read HIP
REG_INFOparameter.Structure of HIP
REG_INFOparameter [RFC 8003]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Min Lifetime | Max Lifetime | Reg Type #1 | Reg Type #2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | ... | Reg Type #n | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Padding + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RegInfoParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_reg_request(schema, *, version, options)[source]¶
Read HIP
REG_REQUESTparameter.Structure of HIP
REG_REQUESTparameter [RFC 8003]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Lifetime | Reg Type #1 | Reg Type #2 | Reg Type #3 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | ... | Reg Type #n | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Padding + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RegRequestParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_reg_response(schema, *, version, options)[source]¶
Read HIP
REG_RESPONSEparameter.Structure of HIP
REG_RESPONSEparameter [RFC 8003]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Lifetime | Reg Type #1 | Reg Type #2 | Reg Type #3 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | ... | Reg Type #n | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Padding + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RegResponseParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_reg_failed(schema, *, version, options)[source]¶
Read HIP
REG_FAILEDparameter.Structure of HIP
REG_FAILEDparameter [RFC 8003]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Failure Type | Reg Type #1 | Reg Type #2 | Reg Type #3 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | ... | Reg Type #n | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Padding + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RegFailedParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_reg_from(schema, *, version, options)[source]¶
Read HIP
REG_FROMparameter.Structure of HIP
REG_FROMparameter [RFC 5770]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Port | Protocol | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Address | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RegFromParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT20.
- _read_param_echo_response_signed(schema, *, version, options)[source]¶
Read HIP
ECHO_RESPONSE_SIGNEDparameter.Structure of HIP
ECHO_RESPONSE_SIGNEDparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Opaque data (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
EchoResponseSignedParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_transport_format_list(schema, *, version, options)[source]¶
Read HIP
TRANSPORT_FORMAT_LISTparameter.Structure of HIP
TRANSPORT_FORMAT_LISTparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TF type #1 | TF type #2 / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / TF type #n | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
TransportFormatListParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If the parameter is used in HIPv1, or
schema.lenis not a multiple of2.
- _read_param_esp_transform(schema, *, version, options)[source]¶
Read HIP
ESP_TRANSFORMparameter.Structure of HIP
ESP_TRANSFORMparameter [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 | Suite ID #1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Suite ID #2 | Suite ID #3 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Suite ID #n | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
ESPTransformParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis not a multiple of2.
- _read_param_seq_data(schema, *, version, options)[source]¶
Read HIP
SEQ_DATAparameter.Structure of HIP
SEQ_DATAparameter [RFC 6078]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
SeqDataParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT4.
- _read_param_ack_data(schema, *, version, options)[source]¶
Read HIP
ACK_DATAparameter.Structure of HIP
ACK_DATAparameter [RFC 6078]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acked Sequence number / / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
AckDataParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis not a multiple of4.
- _read_param_payload_mic(schema, *, version, options)[source]¶
Read HIP
PAYLOAD_MICparameter.Structure of HIP
PAYLOAD_MICparameter [RFC 6078]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | / MIC Value / / +-+-+-+-+-+-+-+-+ | | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
PayloadMICParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_transaction_id(schema, *, version, options)[source]¶
Read HIP
TRANSACTION_IDparameter.Structure of HIP
TRANSACTION_IDparameter [RFC 6078]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
TransactionIDParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_overlay_id(schema, *, version, options)[source]¶
Read HIP
OVERLAY_IDparameter.Structure of HIP
OVERLAY_IDparameter [RFC 6079]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
OverlayIDParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_route_dst(schema, *, version, options)[source]¶
Read HIP
ROUTE_DSTparameter.Structure of HIP
ROUTE_DSTparameter [RFC 6028]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HIT #1 | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HIT #n | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RouteDstParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If the parameter is malformed.
- _read_param_hip_transport_mode(schema, *, version, options)[source]¶
Read HIP
HIP_TRANSPORT_MODEparameter.Structure of HIP
HIP_TRANSPORT_MODEparameter [RFC 6261]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Port | Mode ID #1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Mode ID #2 | Mode ID #3 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Mode ID #n | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
HIPTransportModeParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis not a multiple of2.
- _read_param_hip_mac(schema, *, version, options)[source]¶
Read HIP
HIP_MACparameter.Structure of HIP
HIP_MACparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HMAC | / / / +-------------------------------+ | | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
HIPMACParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_hip_mac_2(schema, *, version, options)[source]¶
Read HIP
HIP_MAC_2parameter.Structure of HIP
HIP_MAC_2parameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HMAC | / / / +-------------------------------+ | | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
HIPMAC2Parameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_hip_signature_2(schema, *, version, options)[source]¶
Read HIP
HIP_SIGNATURE_2parameter.Structure of HIP
HIP_SIGNATURE_2parameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SIG alg | Signature / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
HIPSignature2Parameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_hip_signature(schema, *, version, options)[source]¶
Read HIP
HIP_SIGNATUREparameter.Structure of HIP
HIP_SIGNATUREparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SIG alg | Signature / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
HIPSignatureParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_echo_response_unsigned(schema, *, version, options)[source]¶
Read HIP
ECHO_RESPONSE_UNSIGNEDparameter.Structure of HIP
ECHO_RESPONSE_UNSIGNEDparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Opaque data (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
EchoResponseUnsignedParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_echo_request_unsigned(schema, *, version, options)[source]¶
Read HIP
ECHO_REQUEST_UNSIGNEDparameter.Structure of HIP
ECHO_REQUEST_UNSIGNEDparameter [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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Opaque data (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
EchoRequestUnsignedParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_relay_from(schema, *, version, options)[source]¶
Read HIP
RELAY_FROMparameter.Structure of HIP
RELAY_FROMparameter [RFC 5770]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Port | Protocol | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Address | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RelayFromParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT20.
- _read_param_relay_to(schema, *, version, options)[source]¶
Read HIP
RELAY_TOparameter.Structure of HIP
RELAY_TOparameter [RFC 5770]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Port | Protocol | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Address | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RelayToParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT20.
- _read_param_overlay_ttl(schema, *, version, options)[source]¶
Read HIP
OVERLAY_TTLparameter.Structure of HIP
OVERLAY_TTLparameter [RFC 6079]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TTL | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
OverlayTTLParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT4.
- _read_param_route_via(schema, *, version, options)[source]¶
Read HIP
ROUTE_VIAparameter.Structure of HIP
ROUTE_VIAparameter [RFC 6028]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HIT #1 | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HIT #n | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RouteViaParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If the parameter is malformed.
- _read_param_from(schema, *, version, options)[source]¶
Read HIP
FROMparameter.Structure of HIP
FROMparameter [RFC 8004]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Address | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
FromParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis NOT16.
- _read_param_rvs_hmac(schema, *, version, options)[source]¶
Read HIP
RVS_HMACparameter.Structure of HIP
RVS_HMACparameter [RFC 8004]: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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HMAC | / / / +-------------------------------+ | | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RVSHMACParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _read_param_via_rvs(schema, *, version, options)[source]¶
Read HIP
VIA_RVSparameter.Structure of HIP
VIA_RVSparameter [RFC 8004]: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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Address | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Address | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
ViaRVSParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- Raises:
ProtocolError – If
schema.lenis not a multiple of16.
- _read_param_relay_hmac(schema, *, version, options)[source]¶
Read HIP
RELAY_HMACparameter.Structure of HIP
RELAY_HMACparameter [RFC 5770]: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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HMAC | / / / +-------------------------------+ | | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Parameters:
schema (
RelayHMACParameter) – parsed parameter schemaversion (
int) – HIP protocol versionoptions (
OrderedMultiDict[Parameter,Parameter]) – parsed HIP parameters
- Return type:
- Returns:
Parsed parameter data.
- _make_param_unassigned(code, param=None, *, version, contents=b'', **kwargs)[source]¶
Make HIP unassigned parameter.
- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_esp_info(code, param=None, *, version, reserved=0, index=0, old_spi=0, new_spi=0, **kwargs)[source]¶
Make HIP
ESP_INFOparameter.- Parameters:
code (
Parameter) – parameter codeparam (
ESPInfoParameter|None) – parameter dataversion (
int) – HIP protocol versionreserved (
int) – reserved octets (RFC 7402 Section 5.1.1)index (
int) – KEYMAT indexold_spi (
int) – old SPInew_spi (
int) – new SPI**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
reserved,index,old_spiornew_spidoes not fit its field.
- _make_param_r1_counter(code, param=None, *, version, counter=0, reserved=b'\x00\x00\x00\x00', **kwargs)[source]¶
Make HIP
R1_COUNTERparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
codeis the HIPv1-only128andversionis NOT1, orcounterdoes not fit in eight octets. Also ifreservedis not four octets.
- _make_param_locator_set(code, param=None, *, version, locator_set=None, **kwargs)[source]¶
Make HIP
LOCATOR_SETparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_puzzle(code, param=None, *, version, index=0, lifetime=0, lifetime_exponent=None, opaque=b'\x00\x00', random=0, rhash_len=None, **kwargs)[source]¶
Make HIP
PUZZLEparameter.- Parameters:
code (
Parameter) – parameter codeparam (
PuzzleParameter|None) – parameter dataversion (
int) – HIP protocol versionindex (
int) – #K indexlifetime (
timedelta|int) – lifetime, encoded to the nearest lowerLifetimeoctet; ignored whenlifetime_exponentis givenlifetime_exponent (
int|None) – theLifetimeoctet itself,valuein RFC 7401 Section 5.2.4’s2^(value - 32)secondsopaque (
bytes) – opaque datarandom (
int) – random #I valuerhash_len (
int|None) – on-wire width ofRandom #I, in bits; defaults to the widthparamwas parsed with, or to whatversionfixes, or torandom’s own bit length**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
lifetime_exponentdoes not fit one octet,lifetimecannot be encoded, or the width ofRandom #Iis invalid; see_make_puzzle_lifetimeand_make_puzzle_field_width. Also ifindexdoes not fit one octet, orrandomis negative or abool. Also ifopaqueis not two octets.
- _make_param_solution(code, param=None, *, version, index=0, reserved=None, opaque=b'\x00\x00', random=0, solution=0, rhash_len=None, **kwargs)[source]¶
Make HIP
SOLUTIONparameter.- Parameters:
code (
Parameter) – parameter codeparam (
SolutionParameter|None) – parameter dataversion (
int) – HIP protocol versionindex (
int) – #K indexreserved (
int|None) – theReservedoctet, which RFC 7401 Section 5.2.5 requires to be “zero when sent”. Defaults to the octetparamarrived with, so that re-serialising reproduces it rather than rewriting it, and to that mandated zero otherwise. Pass it explicitly to override either – notably to write the conformant zero over a non-conformant one received from a peer, which is otherwise unreachable becauseSolutionParameteris immutableopaque (
bytes) – opaque datarandom (
int) – random #I valuesolution (
int) – solution #J valuerhash_len (
int|None) – on-wire width ofRandom #IandPuzzle solution #Jalike, in bits; defaults to the widthparamwas parsed with, or to whatversionfixes, or to the values’ own bit length**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If the width of the two fields is invalid; see
_make_puzzle_field_width. Also ifindexorreserveddoes not fit one octet, orrandomorsolutionis negative or abool. Also ifopaqueis not two octets.
- _make_param_seq(code, param=None, *, version, update_id=0, **kwargs)[source]¶
Make HIP
SEQparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
update_iddoes not fit its field.
- _make_param_ack(code, param=None, *, version, update_id=None, **kwargs)[source]¶
Make HIP
ACKparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If an entry of
update_iddoes not fit its field.
- _make_param_dh_group_list(code, param=None, *, version, groups=None, **kwargs)[source]¶
Make HIP
DH_GROUP_LISTparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – The parameter is NOT supported in HIPv1, or an entry of
groupsis a name or does not fit its field.
- _make_param_diffie_hellman(code, param=None, *, version, group=Group.NIST_P_256, pub_val=0, **kwargs)[source]¶
Make HIP
DIFFIE_HELLMANparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
groupis a name or does not fit its field, orpub_valis negative, abool, or wider than itspub_lenoctets.
- _make_param_hip_transform(code, param=None, *, version, suites=None, **kwargs)[source]¶
Make HIP
HIP_TRANSFORMparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – The parameter is NOT supported outside HIPv1, or an entry of
suitesis a name or does not fit its field.
- _make_param_hip_cipher(code, param=None, *, version, ciphers=None, **kwargs)[source]¶
Make HIP
HIP_CIPHERparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – The parameter is NOT supported in HIPv1, or an entry of
ciphersis a name or does not fit its field.
- _make_param_nat_traversal_mode(code, param=None, *, version, modes=None, reserved=b'\x00\x00', **kwargs)[source]¶
Make HIP
NAT_TRAVERSAL_MODEparameter.- Parameters:
code (
Parameter) – parameter codeparam (
NATTraversalModeParameter|None) – parameter dataversion (
int) – HIP protocol versionmodes (
list[NATTraversal|int] |None) – list of mode IDreserved (
bytes) – the two reserved octets**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If an entry of
modesis a name or does not fit its field, orreservedis not two octets.
- _make_param_transaction_pacing(code, param=None, *, version, min_ta=0, **kwargs)[source]¶
Make HIP
TRANSACTION_PACINGparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
min_tadoes not fit its field.
- _make_param_encrypted(code, param=None, *, version, cipher=Cipher.NULL_ENCRYPT, iv=None, data=b'', reserved=b'\x00\x00\x00\x00', **kwargs)[source]¶
Make HIP
ENCRYPTEDparameter.- Parameters:
code (
Parameter) – parameter codeparam (
EncryptedParameter|None) – parameter dataversion (
int) – HIP protocol versioncipher (
Cipher|int) – cipher ID, of the widthHIP_CIPHERcarries it iniv (
bytes|None) – initialization vector, given for the AES ciphers and only for themdata (
bytes) – encrypted datareserved (
bytes) – the four reserved octets**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
cipheris a name or does not fit its field, the cipher isAES-128-CBCorAES-256-CBCandivis missing or NOT 16 octets, orivis given with any other cipher, which takes none. Also ifreservedis not four octets.
- _make_param_host_id(code, param=None, *, version, hi=None, hi_curve=None, hi_pub_key=b'', hi_algorithm=HIAlgorithm.NULL_ENCRYPT, di=b'', di_type=DITypes.none_included, **kwargs)[source]¶
Make HIP
HOST_IDparameter.- Parameters:
code (
Parameter) – parameter codeparam (
HostIDParameter|None) – parameter dataversion (
int) – HIP protocol versionhi (
HostIdentity|bytes|HostIdentity|None) – host identityhi_curve (
ECDSACurve|ECDSALowCurve|EdDSACurve|None) – host identity curvehi_pub_key (
bytes) – host identity public keyhi_algorithm (
HIAlgorithm|int) – host identity algorithmdi (
bytes) – domain identifier**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
hi_algorithmordi_typeis a name or does not fit its field, if neitherhinorparamis given andhi_curveis not an ECDSA, ECDSA_LOW or EdDSA curve, or ifhiis aHostIdentitywhosecurveis none of those.
- _make_param_hit_suite_list(code, param=None, *, version, suites=None, **kwargs)[source]¶
Make HIP
HIT_SUITE_LISTparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – The parameter is NOT supported in HIPv1, or an entry of
suitesis a name or does not fit its field.
- _make_param_cert(code, param=None, *, version, cert_group=0, cert_count=0, cert_id=0, cert_type=Certificate.X_509_v3, cert=b'', **kwargs)[source]¶
Make HIP
CERTparameter.- Parameters:
code (
Parameter) – parameter codeparam (
CertParameter|None) – parameter dataversion (
int) – HIP protocol versioncert_group (
int) – certificate group ID – an arbitrary number, locally managed by the sender per RFC 8002 Section 2cert_count (
int) – certificate countcert_id (
int) – certificate IDcert_type (
Certificate|int) – certificate typecert (
bytes) – certificate data**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
cert_group,cert_count,cert_idorcert_typedoes not fit its field, orcert_typeis a name.
- _make_param_notification(code, param=None, *, version, msg_type=NotifyMessage.I2_ACKNOWLEDGEMENT, msg=b'', reserved=b'\x00\x00', **kwargs)[source]¶
Make HIP
NOTIFICATIONparameter.- Parameters:
code (
Parameter) – parameter codeparam (
NotificationParameter|None) – parameter dataversion (
int) – HIP protocol versionmsg_type (
NotifyMessage|int) – notification message typemsg (
bytes) – notification messagereserved (
bytes) – the two reserved octets**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
msg_typeis a name or does not fit its field, orreservedis not two octets.
- _make_param_echo_request_signed(code, param=None, *, version, opaque=b'', **kwargs)[source]¶
Make HIP
ECHO_REQUEST_SIGNEDparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_reg_info(code, param=None, *, version, min_lifetime=0, max_lifetime=0xf, min_lifetime_exponent=None, max_lifetime_exponent=None, reg_info=None, **kwargs)[source]¶
Make HIP
REG_INFOparameter.- Parameters:
code (
Parameter) – parameter codeparam (
RegInfoParameter|None) – parameter dataversion (
int) – HIP protocol versionmin_lifetime (
timedelta|int|float) – minimum lifetime, encoded to the nearest lowerMin Lifetimeoctet; ignored whenmin_lifetime_exponentis givenmax_lifetime (
timedelta|int|float) – maximum lifetime, encoded to the nearest lowerMax Lifetimeoctet; ignored whenmax_lifetime_exponentis givenmin_lifetime_exponent (
int|None) – theMin Lifetimeoctet itself,lifetimein RFC 8003 Section 4.1’s2^((lifetime - 64)/8)secondsmax_lifetime_exponent (
int|None) – theMax Lifetimeoctet itselfreg_info (
list[Registration|int] |None) – registration information list**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If either exponent does not fit one octet, either lifetime cannot be encoded, see
_make_registration_lifetime, or an entry ofreg_infois a name or does not fit its field.
Changed in version 1.5.0:
min_lifetimeandmax_lifetimeare durations encoded per RFC 8003 Section 4.1 rather than octets written verbatim, and the newmin_lifetime_exponentandmax_lifetime_exponenttake the octets directly (#2281).
- _make_param_reg_request(code, param=None, *, version, lifetime=0, lifetime_exponent=None, reg_request=None, **kwargs)[source]¶
Make HIP
REG_REQUESTparameter.- Parameters:
code (
Parameter) – parameter codeparam (
RegRequestParameter|None) – parameter dataversion (
int) – HIP protocol versionlifetime (
timedelta|int|float) – lifetime, encoded to the nearest lowerLifetimeoctet; ignored whenlifetime_exponentis givenlifetime_exponent (
int|None) – theLifetimeoctet itself,lifetimein RFC 8003 Section 4.1’s2^((lifetime - 64)/8)secondsreg_request (
list[Registration|int] |None) – registration request list**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
lifetime_exponentdoes not fit one octet,lifetimecannot be encoded, see_make_registration_lifetime, or an entry ofreg_requestis a name or does not fit its field.
Changed in version 1.5.0:
lifetimeis a duration encoded per RFC 8003 Section 4.1 rather than an octet written verbatim, and the newlifetime_exponenttakes the octet directly (#2281).
- _make_param_reg_response(code, param=None, *, version, lifetime=0, lifetime_exponent=None, reg_response=None, **kwargs)[source]¶
Make HIP
REG_RESPONSEparameter.- Parameters:
code (
Parameter) – parameter codeparam (
RegResponseParameter|None) – parameter dataversion (
int) – HIP protocol versionlifetime (
timedelta|int|float) – lifetime, encoded to the nearest lowerLifetimeoctet; ignored whenlifetime_exponentis givenlifetime_exponent (
int|None) – theLifetimeoctet itself,lifetimein RFC 8003 Section 4.1’s2^((lifetime - 64)/8)secondsreg_response (
list[Registration|int] |None) – registration response list**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
lifetime_exponentdoes not fit one octet,lifetimecannot be encoded, see_make_registration_lifetime, or an entry ofreg_responseis a name or does not fit its field.
Changed in version 1.5.0:
lifetimeis a duration encoded per RFC 8003 Section 4.1 rather than an octet written verbatim, and the newlifetime_exponenttakes the octet directly (#2281).
- _make_param_reg_failed(code, param=None, *, version, failure_type=RegistrationFailure.Registration_requires_additional_credentials, reg_failed=None, **kwargs)[source]¶
Make HIP
REG_FAILEDparameter.Changed in version 1.5.0:
lifetimeis replaced byfailure_type, with no alias, andreg_failedtakes registration types rather than failure types (#2309).- Parameters:
code (
Parameter) – parameter codeparam (
RegFailedParameter|None) – parameter dataversion (
int) – HIP protocol versionfailure_type (
RegistrationFailure|int) – registration failure typereg_failed (
list[Registration|int] |None) – list of registration types that failed**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
failure_typeor an entry ofreg_failedis a name or does not fit its field.
- _make_param_reg_from(code, param=None, *, version, port=0, protocol=TransType.UDP, address='::', reserved=b'\x00', **kwargs)[source]¶
Make HIP
REG_FROMparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
portorprotocoldoes not fit its field, orprotocolis a name. Also ifreservedis not one octet.
- _make_param_echo_response_signed(code, param=None, *, version, opaque=b'', **kwargs)[source]¶
Make HIP
ECHO_RESPONSE_SIGNEDparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_transport_format_list(code, param=None, *, version, formats=None, **kwargs)[source]¶
Make HIP
TRANSPORT_FORMAT_LISTparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – The parameter is NOT supported in HIPv1, or an entry of
formatsis a name or does not fit its field.
- _make_param_esp_transform(code, param=None, *, version, suites=None, reserved=b'\x00\x00', **kwargs)[source]¶
Make HIP
ESP_TRANSFORMparameter.- Parameters:
code (
Parameter) – parameter codeparam (
ESPTransformParameter|None) – parameter dataversion (
int) – HIP protocol versionsuites (
list[ESPTransformSuite|int] |None) – ESP transform suite listreserved (
bytes) – the two reserved octets**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If an entry of
suitesis a name or does not fit its field, orreservedis not two octets.
- _make_param_seq_data(code, param=None, *, version, seq=0, **kwargs)[source]¶
Make HIP
SEQ_DATAparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
seqdoes not fit its field.
- _make_param_ack_data(code, param=None, *, version, ack=None, **kwargs)[source]¶
Make HIP
ACK_DATAparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If an entry of
ackdoes not fit its field.
- _make_param_payload_mic(code, param=None, *, version, next=TransType.UDP, payload=b'\x00\x00\x00\x00', mic=b'', reserved=b'\x00\x00\x00', **kwargs)[source]¶
Make HIP
PAYLOAD_MICparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
nextis a name or does not fit its field,payloadis not four octets, orreservedis not three.
- _make_param_transaction_id(code, param=None, *, version, id=0, id_len=None, **kwargs)[source]¶
Make HIP
TRANSACTION_IDparameter.- Parameters:
code (
Parameter) – parameter codeparam (
TransactionIDParameter|None) – parameter dataversion (
int) – HIP protocol versionid (
int) – transaction IDid_len (
int|None) – on-wire width ofIdentifier, in octets; defaults to the widthparamwas parsed with, or toid’s own bit length**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If the width of
Identifieris invalid; see_make_identifier_width.
Changed in version 1.5.0: New
id_lenargument, so that an identifier with leading zero octets rebuilds at the width it was read with (#2271).
- _make_param_overlay_id(code, param=None, *, version, id=0, id_len=None, **kwargs)[source]¶
Make HIP
OVERLAY_IDparameter.- Parameters:
code (
Parameter) – parameter codeparam (
OverlayIDParameter|None) – parameter dataversion (
int) – HIP protocol versionid (
int) – overlay IDid_len (
int|None) – on-wire width ofIdentifier, in octets; defaults to the widthparamwas parsed with, or toid’s own bit length**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If the width of
Identifieris invalid; see_make_identifier_width.
Changed in version 1.5.0: New
id_lenargument, so that an identifier with leading zero octets rebuilds at the width it was read with (#2271).
- _make_param_route_dst(code, param=None, *, version, symmetric=False, must_follow=False, flags_reserved=0, hit=None, reserved=b'\x00\x00', **kwargs)[source]¶
Make HIP
ROUTE_DSTparameter.- Parameters:
code (
Parameter) – parameter codeparam (
RouteDstParameter|None) – parameter dataversion (
int) – HIP protocol versionsymmetric (
bool) – symmetric flagmust_follow (
bool) – must-follow flagflags_reserved (
int) – the 14 reserved low-order bits ofFlagshit (
list[bytes|str|int|IPv6Address] |None) – list of HITsreserved (
bytes) – the two reserved octets**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
flags_reserveddoes not fit its field. Also ifreservedis not two octets.
- _make_param_hip_transport_mode(code, param=None, *, version, port=0, modes=None, **kwargs)[source]¶
Make HIP
HIP_TRANSPORT_MODEparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
portor an entry ofmodesdoes not fit its field, or an entry ofmodesis a name.
- _make_param_hip_mac(code, param=None, *, version, hmac=b'', **kwargs)[source]¶
Make HIP
HIP_MACparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_hip_mac_2(code, param=None, *, version, hmac=b'', **kwargs)[source]¶
Make HIP
HIP_MAC_2parameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_hip_signature_2(code, param=None, *, version, algorithm=HIAlgorithm.NULL_ENCRYPT, signature=b'', **kwargs)[source]¶
Make HIP
HIP_SIGNATURE_2parameter.- Parameters:
code (
Parameter) – parameter codeparam (
HIPSignature2Parameter|None) – parameter dataversion (
int) – HIP protocol versionalgorithm (
HIAlgorithm|int) – signature algorithmsignature (
bytes) – signature value**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
algorithmis a name or does not fit its field.
- _make_param_hip_signature(code, param=None, *, version, algorithm=HIAlgorithm.NULL_ENCRYPT, signature=b'', **kwargs)[source]¶
Make HIP
HIP_SIGNATUREparameter.- Parameters:
code (
Parameter) – parameter codeparam (
HIPSignatureParameter|None) – parameter dataversion (
int) – HIP protocol versionalgorithm (
HIAlgorithm|int) – signature algorithmsignature (
bytes) – signature value**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
algorithmis a name or does not fit its field.
- _make_param_echo_response_unsigned(code, param=None, *, version, opaque=b'', **kwargs)[source]¶
Make HIP
ECHO_RESPONSE_UNSIGNEDparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_echo_request_unsigned(code, param=None, *, version, opaque=b'', **kwargs)[source]¶
Make HIP
ECHO_REQUEST_UNSIGNEDparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_relay_from(code, param=None, *, version, port=0, protocol=TransType.UDP, address='::', reserved=b'\x00', **kwargs)[source]¶
Make HIP
RELAY_FROMparameter.- Parameters:
code (
Parameter) – parameter codeparam (
RelayFromParameter|None) – parameter dataversion (
int) – HIP protocol versionport (
int) – port numberaddress (
IPv6Address|str|int|bytes) – the address the relay server received the relayed packet from (RFC 5770)reserved (
bytes) – the reserved octet**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
portorprotocoldoes not fit its field, orprotocolis a name. Also ifreservedis not one octet.
- _make_param_relay_to(code, param=None, *, version, port=0, protocol=TransType.UDP, address='::', reserved=b'\x00', **kwargs)[source]¶
Make HIP
RELAY_TOparameter.- Parameters:
code (
Parameter) – parameter codeparam (
RelayToParameter|None) – parameter dataversion (
int) – HIP protocol versionport (
int) – port numberaddress (
IPv6Address|str|int|bytes) – the address the relay server forwards the packet to (RFC 5770)reserved (
bytes) – the reserved octet**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
portorprotocoldoes not fit its field, orprotocolis a name. Also ifreservedis not one octet.
- _make_param_overlay_ttl(code, param=None, *, version, ttl=0, reserved=b'\x00\x00', **kwargs)[source]¶
Make HIP
OVERLAY_TTLparameter.- Parameters:
code (
Parameter) – parameter codeparam (
OverlayTTLParameter|None) – parameter dataversion (
int) – HIP protocol versionttl (
int) – overlay time-to-live (TTL), as a count of remaining overlay hops rather than a duration – seeOverlayTTLParameter.ttlreserved (
bytes) – the two reserved octets**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
ttldoes not fit its field. Also ifreservedis not two octets.
- _make_param_route_via(code, param=None, *, version, symmetric=False, must_follow=False, flags_reserved=0, hit=None, reserved=b'\x00\x00', **kwargs)[source]¶
Make HIP
ROUTE_VIAparameter.- Parameters:
code (
Parameter) – parameter codeparam (
RouteViaParameter|None) – parameter dataversion (
int) – HIP protocol versionsymmetric (
bool) – symmetric flagmust_follow (
bool) – must-follow flagflags_reserved (
int) – the 14 reserved low-order bits ofFlagshit (
list[bytes|str|int|IPv6Address] |None) – list of HITsreserved (
bytes) – the two reserved octets**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- Raises:
ProtocolError – If
flags_reserveddoes not fit its field. Also ifreservedis not two octets.
- _make_param_from(code, param=None, *, version, address='::', **kwargs)[source]¶
Make HIP
FROMparameter.- Parameters:
code (
Parameter) – parameter codeparam (
FromParameter|None) – parameter dataversion (
int) – HIP protocol versionaddress (
IPv6Address|str|int|bytes) – the original source address of the relayed packet (RFC 8004)**kwargs (
Any) – arbitrary keyword arguments
- Return type:
- Returns:
HIP parameter schema.
- _make_param_rvs_hmac(code, param=None, *, version, hmac=b'', **kwargs)[source]¶
Make HIP
RVS_HMACparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_via_rvs(code, param=None, *, version, address=None, **kwargs)[source]¶
Make HIP
VIA_RVSparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_param_relay_hmac(code, param=None, *, version, hmac=b'', **kwargs)[source]¶
Make HIP
RELAY_HMACparameter.- Parameters:
- Return type:
- Returns:
HIP parameter schema.
- _make_hip_param_data(meth, code, param, *, version)[source]¶
Make a HIP parameter from the data model its reader produced.
The parsed parameter goes to
methpositionally. Expanding it as keyword arguments instead would drop every field whose constructor keyword is spelled differently –HIP_TRANSFORMkeeps its suites insuite_idand_make_param_hip_transform()takes them assuites, so**paramleft the parameter empty (#2352).- Parameters:
- Return type:
- Returns:
HIP parameter schema.
Added in version 1.5.0.
Type Stubs¶
- class pcapkit.protocols.internet.hip.protocol.Locator[source]¶
Bases:
TypedDictLocator dictionary type.
- reserved: NotRequired[int]¶
Reserved bits of the flags octet.
- ip: IPv6Address | bytes | int | str¶
IP address.
- spi: NotRequired[int]¶
SPI.
Header Schemas¶
Removed in version 1.6.0: pcapkit.protocols.schema.internet.hip, with no alias: the module moved here
(#2534).
- class pcapkit.protocols.internet.hip.schema.HIP(next=NO_VALUE, len=NO_VALUE, pkt=NO_VALUE, ver=NO_VALUE, checksum=NO_VALUE, control=NO_VALUE, shit=NO_VALUE, rhit=NO_VALUE, param=NO_VALUE, payload=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
SchemaHeader schema for HIP packet.
- pkt: PacketType = <BitField pkt>¶
Packet type.
- ver: VersionType = <BitField ver>¶
HIP version.
- control: ControlsType = <BitField control>¶
HIP controls.
- class pcapkit.protocols.internet.hip.schema.Parameter(*args, **kwargs)[source]¶
Bases:
EnumSchema[Parameter]Base schema for HIP parameters.
- class pcapkit.protocols.internet.hip.schema.UnassignedParameter(type=NO_VALUE, len=NO_VALUE, value=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP unassigned parameters.
- class pcapkit.protocols.internet.hip.schema.ESPInfoParameter(type=NO_VALUE, len=NO_VALUE, reserved=NO_VALUE, index=NO_VALUE, old_spi=NO_VALUE, new_spi=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ESP_INFOparameters.Changed in version 1.5.0:
reservedis read as anintrather than as zero paddingbytes, and written back as given (#1328).- reserved: int = <UInt16Field reserved>¶
Reserved. RFC 7402 Section 5.1.1 draws it in the diagram but gives it no description in the field list that follows. Read as a value rather than as padding, so that re-serialising a parsed parameter reproduces the octets it arrived with.
- class pcapkit.protocols.internet.hip.schema.R1CounterParameter(type=NO_VALUE, len=NO_VALUE, reserved=NO_VALUE, counter=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
R1_COUNTERparameters.Registered under both codes, not 129 alone. RFC 5201 Section 5.2.3 (HIPv1) and RFC 7401 Section 5.2.3 (HIPv2) give the identical 4 + 8 layout to code 128 (
R1_Counter) and code 129 (R1_COUNTER) – one parameter under two numbers, the difference being HIP’s own C-bit rather than an unrelated code – and the field list below is that layout exactly.__parameter__carries two hand-written entries – not a name-normalisation rule;R1_CounterandR1_COUNTERdiffer only in case, and each needs its own line – mapping both codes to the same_read_param_r1_counter, and_make_param_r1_counterbuilds this class for either code. The schema lookup this class’s owncode=feeds – consulted on the parse path byOptionField– would fall back toUnassignedParameterfor 128 if a single-codecode=registered 129 alone and left 128 unclaimed.- counter: int = <UInt64Field counter>¶
R1 counter.
Eight octets, not four. RFC 7401 Section 5.2.3 labels the field “R1 generation counter, 8 bytes” in its diagram and then says outright that the parameter “contains a 64-bit unsigned integer in network byte order”, so the width is stated twice and inferred from neither. RFC 5201 Section 5.2.3 gives the same 4 + 8 layout, so there is no version under which four octets is right, and both codes that reach this class –
R1_Counter(128, HIPv1) andR1_COUNTER(129) – take the eight. With the fourreservedoctets the contents are 12 octets, which RFC 7401 Section 5.2.1’s arithmetic pads to a 16-octet record.
- class pcapkit.protocols.internet.hip.schema.LocatorSetParameter(type=NO_VALUE, len=NO_VALUE, locators=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
LOCATOR_SETparameters.- locators: list[Locator] = <ListField locators>¶
List of locators.
The
lengthcallback is the parameter’s ownLength, and that is correct on the unpacking path for the reasonLOCATOR_SET_LENgives – nothing has shadowedlenyet when this field is resolved, sincetypeandlenare the only fields ahead of it. What matters is the quantity it is handed: RFC 7401 Section 5.2.1’sLengthis a byte count, not the 4-octet units RFC 8046 Section 4 givesLocator Length, and_make_param_locator_set()writes it as one.Schema.unpackreads exactlyfield.lengthoctets off the stream and hands only those toListField.unpack, so aLengthsummed from the locators’Locator Lengthvalues would offer a set of n plain IPv6 locators4noctets of a24n-octet contents, parse one truncated locator and leave the rest of the record unconsumed. WithLengtha byte count the budget is the contents, and each locator bills the 8 +Locator Length* 4 octets it actually consumed.
- padding: bytes = <PaddingField padding>¶
Padding.
Not
parameter_padding_len(), which every other parameter in this module uses, butlocator_set_padding_len()– the same arithmetic read off a snapshot of this parameter’sLengthrather than offpkt['len']directly.LOCATOR_SET_LENdocuments why the direct read does not work here: the nestedLocatorschemas share this parameter’s packet context while they pack, and their ownlenoverwrites it beforepaddingis reached.The shadowed
lenis 4 for any IPv6 locator, so a padding read offpkt['len']directly would append no padding at all whatever the locator count, where a set of plain IPv6 locators needs four octets.
- class pcapkit.protocols.internet.hip.schema.Locator(traffic=NO_VALUE, type=NO_VALUE, len=NO_VALUE, flags=NO_VALUE, lifetime=NO_VALUE, value=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
SchemaHeader schema for HIP locators.
- flags: LocatorFlags = <BitField flags>¶
Reserved and flags.
- value: IPv6Address | LocatorData = <SwitchField value>¶
Locator value.
- class pcapkit.protocols.internet.hip.schema.LocatorData(spi=NO_VALUE, ip=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
SchemaHeader schema for HIP locator data.
- ip: IPv6Address = <IPv6AddressField ip>¶
Locator.
- class pcapkit.protocols.internet.hip.schema.PuzzleParameter(type=NO_VALUE, len=NO_VALUE, index=NO_VALUE, lifetime=NO_VALUE, opaque=NO_VALUE, random=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
PUZZLEparameters.
- class pcapkit.protocols.internet.hip.schema.SolutionParameter(type=NO_VALUE, len=NO_VALUE, index=NO_VALUE, reserved=NO_VALUE, opaque=NO_VALUE, random=NO_VALUE, solution=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
SOLUTIONparameters.- reserved: int = <UInt8Field reserved>¶
Reserved octet – “zero when sent, ignored when received” (RFC 7401 Section 5.2.5, and RFC 5201 Section 5.2.5 identically). This octet is not a lifetime: only
PUZZLEcarries one, at the same offset, and only thePUZZLEsection (RFC 7401 Section 5.2.4, and RFC 5201 Section 5.2.4 identically) defines the2^(value - 32)seconds encoding that goes in it.
- class pcapkit.protocols.internet.hip.schema.SEQParameter(type=NO_VALUE, len=NO_VALUE, update_id=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
SEQparameters.
- class pcapkit.protocols.internet.hip.schema.ACKParameter(type=NO_VALUE, len=NO_VALUE, update_id=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ACKparameters.
- class pcapkit.protocols.internet.hip.schema.DHGroupListParameter(type=NO_VALUE, len=NO_VALUE, groups=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
DH_GROUP_LISTparameters.
- class pcapkit.protocols.internet.hip.schema.DiffieHellmanParameter(type=NO_VALUE, len=NO_VALUE, group=NO_VALUE, pub_len=NO_VALUE, pub_val=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
DIFFIE_HELLMANparameters.
- class pcapkit.protocols.internet.hip.schema.HIPTransformParameter(type=NO_VALUE, len=NO_VALUE, suites=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
HIP_TRANSFORMparameters.
- class pcapkit.protocols.internet.hip.schema.HIPCipherParameter(type=NO_VALUE, len=NO_VALUE, ciphers=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
HIP_CIPHERparameters.- post_process(packet)[source]¶
Revise
schemadata after unpacking process.Note
The cipher IDs are added to the
__hip_ciphers__key ofpacket, the one context every parameter of the area is unpacked with, for anENCRYPTEDparameter after this one to read its cipher from (seeEncryptedParameter.pre_unpack()). The parameters already parsed reach neither that context nor the reader’soptionsbefore the whole area is read (#2708).
- class pcapkit.protocols.internet.hip.schema.NATTraversalModeParameter(type=NO_VALUE, len=NO_VALUE, reserved=NO_VALUE, modes=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
NAT_TRAVERSAL_MODEparameters.- modes: list[NATTraversal] = <ListField modes>¶
NAT traversal modes.
- class pcapkit.protocols.internet.hip.schema.TransactionPacingParameter(type=NO_VALUE, len=NO_VALUE, min_ta=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
TRANSACTION_PACINGparameters.
- class pcapkit.protocols.internet.hip.schema.EncryptedParameter(type=NO_VALUE, len=NO_VALUE, reserved=NO_VALUE, iv=NO_VALUE, data=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ENCRYPTEDparameters.- classmethod pre_unpack(packet)[source]¶
Prepare
packetdata for unpacking process.Notes
When
packetalready carries a resolvedcipher– as it does when this schema was built viaHIP._make_param_encrypted, which sets it as a plain attribute sopack()’s ownpacket.update(self.__dict__)carries it in here – that value is trusted over theHIP_CIPHERlookup below.Otherwise the cipher comes from the cipher IDs that the
HIP_CIPHERparameters before this one in the area carry, in order, under__hip_ciphers__(seeHIPCipherParameter.post_process()): the firstENCRYPTEDparameter takes the first cipher ID, the next one the next, as__hip_encrypted__counts them (#2708).
- cipher: Cipher¶
Cipher ID. Not a schema field – set as a plain attribute, either by
post_process()after unpacking, or byHIP._make_param_encryptedbefore packing – so it is documented here rather than accepted by__init__.
- class pcapkit.protocols.internet.hip.schema.HostIDParameter(type=NO_VALUE, len=NO_VALUE, hi_len=NO_VALUE, di_data=NO_VALUE, algorithm=NO_VALUE, hi=NO_VALUE, di=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
HOST_IDparameters.- algorithm: HIAlgorithm = <EnumField algorithm>¶
Algorithm type.
- hi: bytes | HostIdentity = <SwitchField hi>¶
Host ID.
- class pcapkit.protocols.internet.hip.schema.HostIdentity(*args, **kwargs)[source]¶
Bases:
EnumSchema[HIAlgorithm]Host identity schema.
- class pcapkit.protocols.internet.hip.schema.ECDSACurveHostIdentity(curve=NO_VALUE, pub_key=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
HostIdentityHost identity schema with ECDSA curve.
- curve: ECDSACurve = <EnumField curve>¶
Algorithm curve type.
- class pcapkit.protocols.internet.hip.schema.ECDSALowCurveHostIdentity(curve=NO_VALUE, pub_key=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
HostIdentityHost identity schema with ECDSA_LOW curve.
- curve: ECDSALowCurve = <EnumField curve>¶
Algorithm curve type.
- class pcapkit.protocols.internet.hip.schema.EdDSACurveHostIdentity(curve=NO_VALUE, pub_key=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
HostIdentityHost identity schema with EdDSA curve.
- curve: EdDSACurve = <EnumField curve>¶
Algorithm curve type.
- class pcapkit.protocols.internet.hip.schema.HITSuiteListParameter(type=NO_VALUE, len=NO_VALUE, suites=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
HIT_SUITE_LISTparameters.
- class pcapkit.protocols.internet.hip.schema.CertParameter(type=NO_VALUE, len=NO_VALUE, cert_group=NO_VALUE, cert_count=NO_VALUE, cert_id=NO_VALUE, cert_type=NO_VALUE, cert=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
CERTparameters.- cert_group: int = <UInt8Field cert_group>¶
Certificate group – the “Group ID grouping multiple related CERT parameters” of RFC 8002 Section 2. A plain octet, not a registry value: that section puts the CERT group namespace under local management by the sending host, so there is nothing to look it up in. It was an
EnumFieldover the Diffie-Hellman group registry, which read a group of7back as the curve nameNIST_P_256. See #2283.
- cert_type: Certificate = <EnumField cert_type>¶
Certificate type.
- class pcapkit.protocols.internet.hip.schema.NotificationParameter(type=NO_VALUE, len=NO_VALUE, reserved=NO_VALUE, msg_type=NO_VALUE, msg=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
NOTIFICATIONparameters.- msg_type: NotifyMessage = <EnumField msg_type>¶
Notify message type.
- class pcapkit.protocols.internet.hip.schema.EchoRequestSignedParameter(type=NO_VALUE, len=NO_VALUE, opaque=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ECHO_REQUEST_SIGNEDparameters.
- class pcapkit.protocols.internet.hip.schema.RegInfoParameter(type=NO_VALUE, len=NO_VALUE, min_lifetime=NO_VALUE, max_lifetime=NO_VALUE, reg_info=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
REG_INFOparameters.- reg_info: list[Registration] = <ListField reg_info>¶
Registration types.
- class pcapkit.protocols.internet.hip.schema.RegRequestParameter(type=NO_VALUE, len=NO_VALUE, lifetime=NO_VALUE, reg_request=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
REG_REQUESTparameters.- reg_request: list[Registration] = <ListField reg_request>¶
Registration types.
- class pcapkit.protocols.internet.hip.schema.RegResponseParameter(type=NO_VALUE, len=NO_VALUE, lifetime=NO_VALUE, reg_response=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
REG_RESPONSEparameters.- reg_response: list[Registration] = <ListField reg_response>¶
Registration types.
- class pcapkit.protocols.internet.hip.schema.RegFailedParameter(type=NO_VALUE, len=NO_VALUE, failure_type=NO_VALUE, reg_failed=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
REG_FAILEDparameters.- failure_type: RegistrationFailure = <EnumField failure_type>¶
Registration failure type.
- reg_failed: list[Registration] = <ListField reg_failed>¶
Registration types.
- class pcapkit.protocols.internet.hip.schema.RegFromParameter(type=NO_VALUE, len=NO_VALUE, port=NO_VALUE, protocol=NO_VALUE, reserved=NO_VALUE, address=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
REG_FROMparameters.- address: IPv6Address = <IPv6AddressField address>¶
Address.
- class pcapkit.protocols.internet.hip.schema.EchoResponseSignedParameter(type=NO_VALUE, len=NO_VALUE, opaque=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ECHO_RESPONSE_SIGNEDparameters.
- class pcapkit.protocols.internet.hip.schema.TransportFormatListParameter(type=NO_VALUE, len=NO_VALUE, formats=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
TRANSPORT_FORMAT_LISTparameters.
- class pcapkit.protocols.internet.hip.schema.ESPTransformParameter(type=NO_VALUE, len=NO_VALUE, reserved=NO_VALUE, suites=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ESP_TRANSFORMparameters.- suites: list[ESPTransformSuite] = <ListField suites>¶
Suite IDs.
- class pcapkit.protocols.internet.hip.schema.SeqDataParameter(type=NO_VALUE, len=NO_VALUE, seq=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
SEQ_DATAparameters.
- class pcapkit.protocols.internet.hip.schema.AckDataParameter(type=NO_VALUE, len=NO_VALUE, ack=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ACK_DATAparameters.
- class pcapkit.protocols.internet.hip.schema.PayloadMICParameter(type=NO_VALUE, len=NO_VALUE, next=NO_VALUE, reserved=NO_VALUE, payload=NO_VALUE, mic=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
PAYLOAD_MICparameters.
- class pcapkit.protocols.internet.hip.schema.TransactionIDParameter(type=NO_VALUE, len=NO_VALUE, id=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
TRANSACTION_IDparameters.
- class pcapkit.protocols.internet.hip.schema.OverlayIDParameter(type=NO_VALUE, len=NO_VALUE, id=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
OVERLAY_IDparameters.
- class pcapkit.protocols.internet.hip.schema.RouteDstParameter(type=NO_VALUE, len=NO_VALUE, flags=NO_VALUE, reserved=NO_VALUE, hit=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ROUTE_DSTparameters.- flags: RouteFlags = <BitField flags>¶
Flags.
- hit: list[IPv6Address] = <ListField hit>¶
HIT addresses.
- class pcapkit.protocols.internet.hip.schema.HIPTransportModeParameter(type=NO_VALUE, len=NO_VALUE, port=NO_VALUE, mode=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
HIP_TRANSPORT_MODEparameters.
- class pcapkit.protocols.internet.hip.schema.HIPMACParameter(type=NO_VALUE, len=NO_VALUE, hmac=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
HIP_MACparameters.
- class pcapkit.protocols.internet.hip.schema.HIPMAC2Parameter(type=NO_VALUE, len=NO_VALUE, hmac=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
HIP_MAC_2parameters.
- class pcapkit.protocols.internet.hip.schema.HIPSignature2Parameter(type=NO_VALUE, len=NO_VALUE, algorithm=NO_VALUE, signature=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
HIP_SIGNATURE_2parameters.- algorithm: HIAlgorithm = <EnumField algorithm>¶
Signature algorithm.
- class pcapkit.protocols.internet.hip.schema.HIPSignatureParameter(type=NO_VALUE, len=NO_VALUE, algorithm=NO_VALUE, signature=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
HIP_SIGNATUREparameters.- algorithm: HIAlgorithm = <EnumField algorithm>¶
Signature algorithm.
- class pcapkit.protocols.internet.hip.schema.EchoRequestUnsignedParameter(type=NO_VALUE, len=NO_VALUE, opaque=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ECHO_REQUEST_UNSIGNEDparameters.
- class pcapkit.protocols.internet.hip.schema.EchoResponseUnsignedParameter(type=NO_VALUE, len=NO_VALUE, opaque=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ECHO_RESPONSE_UNSIGNEDparameters.
- class pcapkit.protocols.internet.hip.schema.RelayFromParameter(type=NO_VALUE, len=NO_VALUE, port=NO_VALUE, protocol=NO_VALUE, reserved=NO_VALUE, address=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
RELAY_FROMparameters.- address: IPv6Address = <IPv6AddressField address>¶
Address.
- class pcapkit.protocols.internet.hip.schema.RelayToParameter(type=NO_VALUE, len=NO_VALUE, port=NO_VALUE, protocol=NO_VALUE, reserved=NO_VALUE, address=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
RELAY_TOparameters.- address: IPv6Address = <IPv6AddressField address>¶
Address.
- class pcapkit.protocols.internet.hip.schema.OverlayTTLParameter(type=NO_VALUE, len=NO_VALUE, ttl=NO_VALUE, reserved=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
OVERLAY_TTLparameters.
- class pcapkit.protocols.internet.hip.schema.RouteViaParameter(type=NO_VALUE, len=NO_VALUE, flags=NO_VALUE, reserved=NO_VALUE, hit=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
ROUTE_VIAparameters.- flags: RouteFlags = <BitField flags>¶
Flags.
- hit: list[IPv6Address] = <ListField hit>¶
HIT addresses.
- class pcapkit.protocols.internet.hip.schema.FromParameter(type=NO_VALUE, len=NO_VALUE, address=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
FROMparameters.- address: IPv6Address = <IPv6AddressField address>¶
Address.
- class pcapkit.protocols.internet.hip.schema.RVSHMACParameter(type=NO_VALUE, len=NO_VALUE, hmac=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
RVS_HMACparameters.
- class pcapkit.protocols.internet.hip.schema.ViaRVSParameter(type=NO_VALUE, len=NO_VALUE, address=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
VIA_RVSparameters.- address: list[IPv6Address] = <ListField address>¶
Address.
- class pcapkit.protocols.internet.hip.schema.RelayHMACParameter(type=NO_VALUE, len=NO_VALUE, hmac=NO_VALUE, padding=NO_VALUE, *, __packet__=None, **kwargs)[source]¶
Bases:
ParameterHeader schema for HIP
RELAY_HMACparameters.
Type Stubs¶
Auxiliary Functions¶
- pcapkit.protocols.internet.hip.schema.locator_value_selector(pkt)[source]¶
Selector function for
Locator.valuefield.- Parameters:
- Return type:
- Returns:
The field for the locator, chosen by its type and length.
If
typeis0andlenis4, i.e. a 16-octet locator, returns anIPv6AddressFieldinstance.If
typeis1andlenis5, i.e. a 20-octet locator, returns aSchemaFieldwrappedLocatorDatainstance.
- Raises:
FieldValueError – For any other locator type and length.
- pcapkit.protocols.internet.hip.schema.host_id_hi_selector(pkt)[source]¶
Selector function for
HostIDParameter.hifield.- Parameters:
- Return type:
- Returns:
The field for the host identity, chosen by its algorithm.
If
algorithmis7(ECDSA), returns aSchemaFieldwrappedECDSACurveHostIdentityinstance.If
algorithmis9(ECDSA_LOW), returns aSchemaFieldwrappedECDSALowCurveHostIdentityinstance.If
algorithmis13(EdDSA), returns aSchemaFieldwrappedEdDSACurveHostIdentityinstance.Otherwise, returns a
BytesFieldinstance ofhi_lenoctets.
- pcapkit.protocols.internet.hip.schema.registration_type_list_len(pkt)[source]¶
Return registration type list length.
Used by the
reg_request,reg_responseandreg_failedfields ofRegRequestParameter,RegResponseParameterandRegFailedParameterrespectively, each of which follows a single prefix octet (thelifetimeof the first two, thefailure_typeof the last) with a list of registration type octets sized by the remainder of the parameter.- Parameters:
- Return type:
- Returns:
Registration type list length.
- Raises:
FieldValueError – If the parameter’s
Lengthon the wire is too short to hold the prefix octet already read, which would otherwise underflow the list length below zero.
- pcapkit.protocols.internet.hip.schema.reg_info_list_len(pkt)[source]¶
Return
REG_INFOregistration type list length.Used by the
reg_infofield ofRegInfoParameter, which follows a pair ofmin_lifetimeandmax_lifetimeoctets with a list of registration type octets sized by the remainder of the parameter.- Parameters:
- Return type:
- Returns:
Registration type list length.
- Raises:
FieldValueError – If the parameter’s
Lengthon the wire is too short to hold themin_lifetimeandmax_lifetimeoctets already read, which would otherwise underflow the list length below zero.
- pcapkit.protocols.internet.hip.schema.two_octet_prefix_list_len(pkt)[source]¶
Return list length for a parameter with a two-octet prefix.
Used by the
modes,suitesandmodefields ofNATTraversalModeParameter,ESPTransformParameterandHIPTransportModeParameterrespectively, each of which follows a two-octetreservedorportfield with a list of items sized by the remainder of the parameter.TransportFormatListParameteris not a call site: seetransport_format_list_len()for why it has no such prefix to subtract.- Parameters:
- Return type:
- Returns:
List length.
- Raises:
FieldValueError – If the parameter’s
Lengthon the wire is too short to hold the two octets already read, which would otherwise underflow the list length below zero.
- pcapkit.protocols.internet.hip.schema.transport_format_list_len(pkt)[source]¶
Return
TRANSPORT_FORMAT_LISTtransport format list length.Used by the
formatsfield ofTransportFormatListParameter. Unliketwo_octet_prefix_list_len()’s call sites, this parameter has noreservedorportfield betweenLengthand the list: RFC 7401 Section 5.2.11 definesLengthas literally “2x number of TF types” and places the list directly after it –| Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TF type #1 | TF type #2 /
– so the list’s byte length is
Length, with nothing to subtract. Subtracting 2 anyway, as the genuine two-octet-prefix sites do, would drop the trailing two octets of every non-empty list on parse, and reject the parameter’s own legitimate empty-list encoding (Length = 0,formats = []) as malformed.“2x number of TF types” also fixes each
TF typeentry’s own width at two octets – the same width the baseParameterclass uses for its owntypefield, since a TF type is a HIP parameter type number – which is whyformats’item_typeisEnumField(length=2, ...), the width of the items at every one oftwo_octet_prefix_list_len()’s call sites as well. This function only answers how many bytes the list occupies; getting that number right and the item width wrong – one octet instead of two – would still corrupt every non-empty list, just by reading twice as many entries as the wire holds instead of dropping octets.- Parameters:
- Return type:
- Returns:
Transport format list length.
- Raises:
FieldValueError – If the parameter’s
Lengthon the wire is negative. This cannot happen from real wire bytes –lenis an unsigned 16-bit field – but a caller constructing the schema directly, bypassing_make_param_transport_format_list(), could still pass one; this keeps that path to the same floor-and-raise discipline astwo_octet_prefix_list_len().
- pcapkit.protocols.internet.hip.schema.encrypted_data_len(pkt)[source]¶
Return
ENCRYPTEDencrypted-data length.Used by the
datafield ofEncryptedParameter, which follows a four-octetreservedfield and a conditional sixteen-octetivwith the ciphertext, sized by the remainder of the parameter. RFC 7401 Section 5.2.18 puts all three insideLength–| Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IV | / / / Encrypted data /
– so both have to come off
Lengthto leave the data, and_make_param_encrypted()writeslen=4 + len(iv) + len(data)to match.- Parameters:
- Return type:
- Returns:
Encrypted data length.
- Raises:
FieldValueError – If the parameter’s
Lengthon the wire is too short to hold thereservedoctets, and theivoctets where a cipher that carries one was resolved – which would otherwise underflow the data length below zero.
- pcapkit.protocols.internet.hip.schema.parameter_total_len(length)[source]¶
Return the total on-wire length of a HIP parameter.
RFC 7401 Section 5.2.1 states the arithmetic outright, so there is nothing here to infer from the diagram –
All of the encoded TLV parameters have a length (that includes the Type and Length fields), which is a multiple of 8 bytes. When needed, padding MUST be added to the end of the parameter so that the total length is a multiple of 8 bytes. Total Length = 11 + Length - (Length + 3) % 8;
– which is
4 + Length, the header and the contents, padded to the next multiple of eight. This function spells it that way, throughpad_length(); the two agree at everyLength.The distinction that matters is which quantity gets aligned.
Lengthis “Length of the Contents, in bytes, excluding Type, Length, and Padding”, and it is the total – contents plus the four octets ofTypeandLengthplus padding – that must land on a multiple of eight. Aligning the contents alone would put every parameter at4 (mod 8)for every possibleLength: never a multiple of eight and never the length the RFC gives. It is not even a consistent offset, because the two formulas disagree in both directions – atLength = 4(a wholeSEQ) the contents are already 8-aligned with the header, so the RFC requires no padding at all and aligning the contents would append four octets that must not be there; atLength = 8the contents are 8-aligned on their own, so aligning them would append nothing and leave the record four octets short.- Parameters:
length (
int) – The parameter’sLengthfield, i.e. its contents length in octets, excludingType,LengthandPadding.- Return type:
- Returns:
Total length of the parameter in octets, including
Type,Length,ContentsandPadding. Always a multiple of eight.- Raises:
FieldValueError – If
lengthis negative. This cannot happen from real wire bytes –lenis an unsigned 16-bit field – but a caller constructing a schema directly could still pass one, and the RFC formula is meaningless there: it would answer 8 forLength = -1, a “total” smaller than the four-octet header alone. Raising keeps this to the same floor-and-raise discipline astwo_octet_prefix_list_len().
- pcapkit.protocols.internet.hip.schema.parameter_padding_len(pkt)[source]¶
Return the number of padding octets a HIP parameter needs.
Used by the
paddingfield of every parameter schema in this module. The count is whateverparameter_total_len()leaves over once the four-octetTypeandLengthheader and theLengthoctets of contents are accounted for, which RFC 7401 Section 5.2.1 bounds at “0-7 bytes”.This is one function shared by every parameter rather than a lambda repeated per class, so the RFC’s arithmetic is stated in one place.
- Parameters:
- Return type:
- Returns:
Padding length in octets, between 0 and 7 inclusive.
- Raises:
FieldValueError – If the parameter’s
Lengthon the wire is negative; seeparameter_total_len().
- pcapkit.protocols.internet.hip.schema.locator_set_len_callback(field, pkt)[source]¶
Snapshot
LOCATOR_SET’s ownLengthbefore its locators shadow it.Installed as the
callbackofLocatorSetParameter.locators, whichListField.__call__runs when the field is resolved against the packet – i.e. before any nestedLocatorhas been packed into it. SeeLOCATOR_SET_LENfor why the snapshot is needed at all.
- pcapkit.protocols.internet.hip.schema.locator_set_padding_len(pkt)[source]¶
Return the number of padding octets a
LOCATOR_SETparameter needs.The same arithmetic as
parameter_padding_len()– it defers to it rather than repeating it – but read off the snapshotlocator_set_len_callback()took, for the reasonLOCATOR_SET_LENgives.- Parameters:
- Return type:
- Returns:
Padding length in octets, between 0 and 7 inclusive.
- Raises:
FieldValueError – If the parameter’s
Lengthon the wire is negative; seeparameter_total_len().
- pcapkit.protocols.internet.hip.schema.LOCATOR_SET_LEN = '__locator_set_len__'¶
Packet-context key under which
LocatorSetParameterkeeps its ownLengthfor the benefit oflocator_set_padding_len().It exists because the contents of
LOCATOR_SETare aListFieldof nested schemas, and a nested schema packed through one shares the enclosing packet context:Schema.packopens withpacket.update(self.__dict__), andLocatordeclares alenof its own. So by the timepaddingis evaluated – after the list, since fields are packed in declaration order –pkt['len']is the last locator’slen, not the parameter’s – 4 for any IPv6 locator, whatever the locator count.The shadowing is specific to the packing path.
Schema.unpackhands each fieldpacket.copy(), so nested writes do not propagate back andpkt['len']stays the parameter’s there. Snapshotting under a key no nested schema declares is what makes one callback correct on both paths rather than accidentally correct on one.
Data Models¶
Removed in version 1.6.0: pcapkit.protocols.data.internet.hip, with no alias: the module moved here
(#2534).
- class pcapkit.protocols.internet.hip.data.HIP(next, length, type, packet_fixed, version, reserved, version_fixed, chksum, control, shit, rhit)[source]¶
Bases:
ProtocolData model for HIP header.
Changed in version 1.5.0: New required fields
packet_fixed,reservedandversion_fixed(#1417, #1459), andparametersis an immutableOrderedMultiInforather than anOrderedMultiDict(#1484).- packet_fixed: int¶
Fixed bit – the leading bit of the
Packet Typeoctet, sent as0and ignored on receipt (RFC 7401 Section 5.1), carried verbatim so that re-serialising reproduces it.
- reserved: int¶
Reserved bits – the three bits between
Versionand the fixed low-order bit, carried verbatim so that re-serialising reproduces them.
- version_fixed: int¶
Fixed bit – the low-order bit of the
Versionoctet, sent as1and ignored on receipt (RFC 7401 Section 5.1), carried verbatim so that re-serialising reproduces it.
- parameters: OrderedMultiInfo[Parameter, Parameter]¶
HIP parameters.
- class pcapkit.protocols.internet.hip.data.Control(anonymous, reserved)[source]¶
Bases:
DataData model for HIP controls.
Changed in version 1.5.0: New required field
reserved(#1328).
- class pcapkit.protocols.internet.hip.data.Parameter(*args, **kwargs)[source]¶
Bases:
DataData model for HIP parameter data.
- length: int¶
Parameter length, in octets – the whole record, including
Type,LengthandPadding(RFC 7401 Section 5.2.1).
- class pcapkit.protocols.internet.hip.data.UnassignedParameter(type, critical, length, contents)[source]¶
Bases:
ParameterData model for unassigned parameter.
- class pcapkit.protocols.internet.hip.data.ESPInfoParameter(type, critical, length, reserved, index, old_spi, new_spi)[source]¶
Bases:
ParameterData model for HIP
ESP_INFOparameter.Changed in version 1.5.0: New required field
reserved(#1328).
- class pcapkit.protocols.internet.hip.data.R1CounterParameter(type, critical, length, reserved, counter)[source]¶
Bases:
ParameterData model for HIP
R1_COUNTERparameter.Changed in version 1.5.0: New required field
reserved(#1223).
- class pcapkit.protocols.internet.hip.data.LocatorSetParameter(type, critical, length, locator_set)[source]¶
Bases:
ParameterData model for HIP
LOCATOR_SETparameter.
- class pcapkit.protocols.internet.hip.data.Locator(traffic, type, length, preferred, reserved, lifetime, locator)[source]¶
Bases:
DataData model for HIP locator.
Changed in version 1.5.0: New required field
reserved(#1365).- reserved: int¶
Reserved bits – the 7 high-order bits of the flags octet, carried verbatim so that re-serialising reproduces them.
- locator: LocatorData | IPv6Address¶
Locator data.
- class pcapkit.protocols.internet.hip.data.LocatorData(spi, ip)[source]¶
Bases:
DataData model for HIP locator data.
- ip: IPv6Address¶
IP address.
- class pcapkit.protocols.internet.hip.data.PuzzleParameter(type, critical, length, index, lifetime_exponent, lifetime, opaque, random, rhash_len)[source]¶
Bases:
ParameterData model for HIP
PUZZLEparameter.Changed in version 1.5.0: New required fields
lifetime_exponentandrhash_len(#653, #1323), andlifetimeisNonepastdatetime.timedelta.max(#1323).- lifetime_exponent: int¶
The
Lifetimeoctet as it appears on the wire. RFC 7401 Section 5.2.4 defines the lifetime as2^(value - 32)seconds, and this isvalue. It is what re-serialising writes back, since most of the 256 octets have no exacttimedelta.
- lifetime: timedelta | None¶
Lifetime, derived from
lifetime_exponenttotimedelta’s microsecond resolution, so octets below12read astimedelta(0).Nonefor octets of79and above, whose duration exceedsdatetime.timedelta.max.
- rhash_len: int¶
On-wire width of
random, in bits –RHASH_lenin RFC 7401 Section 2.3 terms, which RFC 7401 Section 5.2.4 makes the exact width ofRandom #I. Declared rather than recomputed fromint.bit_length(), which cannot see a leading zero octet: without it a parameter read withLength = 12re-serialised asLength = 5. See #653.
- class pcapkit.protocols.internet.hip.data.SolutionParameter(type, critical, length, index, reserved, opaque, random, solution, rhash_len)[source]¶
Bases:
ParameterData model for HIP
SOLUTIONparameter.Changed in version 1.5.0: New required field
rhash_len(#653).- reserved: int¶
Reserved octet – “zero when sent, ignored when received” (RFC 7401 Section 5.2.5, and RFC 5201 Section 5.2.5 identically). Carried verbatim rather than interpreted, so that re-serialising a parsed parameter reproduces the octet it arrived with. It is not a
Lifetime: onlyPUZZLEhas one (RFC 7401 Section 5.2.4), and reading it as one would leave the conformant0x00impossible to re-serialise. See #654.
- rhash_len: int¶
On-wire width of
randomand ofsolution– which are equal and eachRHASH_len / 8octets – in bits.RHASH_lenin RFC 7401 Section 2.3 terms; RFC 7401 Section 5.2.5 makes it the exact width of both fields. Declared rather than recomputed fromint.bit_length(), which cannot see a leading zero octet: without it a parameter read withLength = 20re-serialised asLength = 6. See #653.
- class pcapkit.protocols.internet.hip.data.SEQParameter(type, critical, length, id)[source]¶
Bases:
ParameterData model for HIP
SEQparameter.
- class pcapkit.protocols.internet.hip.data.ACKParameter(type, critical, length, update_id)[source]¶
Bases:
ParameterData model for HIP
ACKparameter.
- class pcapkit.protocols.internet.hip.data.DHGroupListParameter(type, critical, length, group_id)[source]¶
Bases:
ParameterData model for HIP
DH_GROUP_LISTparameter.
- class pcapkit.protocols.internet.hip.data.DiffieHellmanParameter(type, critical, length, group_id, pub_len, pub_val)[source]¶
Bases:
ParameterData model for HIP
DIFFIE_HELLMANparameter.
- class pcapkit.protocols.internet.hip.data.HIPTransformParameter(type, critical, length, suite_id)[source]¶
Bases:
ParameterData model for HIP
HIP_TRANSFORMparameter.
- class pcapkit.protocols.internet.hip.data.HIPCipherParameter(type, critical, length, cipher_id)[source]¶
Bases:
ParameterData model for HIP
HIP_CIPHERparameter.
- class pcapkit.protocols.internet.hip.data.NATTraversalModeParameter(type, critical, length, reserved, mode_id)[source]¶
Bases:
ParameterData model for HIP
NAT_TRAVERSAL_MODEparameter.Changed in version 1.5.0: New required field
reserved(#1223).- mode_id: tuple[NATTraversal, ...]¶
Mode IDs.
- class pcapkit.protocols.internet.hip.data.TransactionPacingParameter(type, critical, length, min_ta)[source]¶
Bases:
ParameterData model for HIP
TRANSACTION_PACINGparameter.
- class pcapkit.protocols.internet.hip.data.EncryptedParameter(type, critical, length, reserved, cipher, iv, data)[source]¶
Bases:
ParameterData model for HIP
ENCRYPTEDparameter.Changed in version 1.5.0: New required field
reserved(#1223).
- class pcapkit.protocols.internet.hip.data.HostIDParameter(type, critical, length, hi_len, di_type, di_len, algorithm, hi, di)[source]¶
Bases:
ParameterData model for HIP
HOST_IDparameter.- algorithm: HIAlgorithm¶
Algorithm type.
- hi: HostIdentity | bytes¶
Host identity.
- class pcapkit.protocols.internet.hip.data.HostIdentity(curve, pubkey)[source]¶
Bases:
DataData model for host identity.
- curve: ECDSACurve | ECDSALowCurve | EdDSACurve¶
Curve type.
- class pcapkit.protocols.internet.hip.data.HITSuiteListParameter(type, critical, length, suite_id)[source]¶
Bases:
ParameterData model for HIP
HIT_SUITE_LISTparameter.
- class pcapkit.protocols.internet.hip.data.CertParameter(type, critical, length, cert_group, cert_count, cert_id, cert_type, cert)[source]¶
Bases:
ParameterData model for HIP
CERTparameter.Changed in version 1.5.0:
cert_groupis anintrather than aGroup(#2283).- cert_group: int¶
Certificate group – RFC 8002 Section 2’s “Group ID grouping multiple related CERT parameters”. An arbitrary number, since that section leaves the CERT group namespace to each sending host, so no registry stands behind it.
- cert_type: Certificate¶
Certificate type.
- class pcapkit.protocols.internet.hip.data.NotificationParameter(type, critical, length, reserved, msg_type, msg)[source]¶
Bases:
ParameterData model for HIP
NOTIFICATIONparameter.Changed in version 1.5.0: New required field
reserved(#1223).- msg_type: NotifyMessage¶
Notify message type.
- class pcapkit.protocols.internet.hip.data.EchoRequestSignedParameter(type, critical, length, opaque)[source]¶
Bases:
ParameterData model for HIP
ECHO_REQUEST_SIGNEDparameter.
- class pcapkit.protocols.internet.hip.data.RegInfoParameter(type, critical, length, lifetime, reg_type)[source]¶
Bases:
ParameterData model for HIP
REG_INFOparameter.Changed in version 1.5.0:
lifetimecarries the raw octets alongside the durations, and the durations follow RFC 8003 Section 4.1 – seeLifetime(#2281).- reg_type: tuple[Registration, ...]¶
Registration type.
- class pcapkit.protocols.internet.hip.data.Lifetime(min_exponent, max_exponent, min, max)[source]¶
Bases:
DataData model for registration lifetime.
Changed in version 1.5.0: New required fields
min_exponentandmax_exponent, andminandmaxfollow RFC 8003 Section 4.1’s exponential encoding rather than reading the octet as a count of seconds (#2281).- min_exponent: int¶
The
Min Lifetimeoctet as it appears on the wire. It is what re-serialising writes back, since most of the 256 octets have no exacttimedelta.
- min: timedelta¶
Minimum lifetime, decoded from
min_exponentper RFC 8003 Section 4.1.
- max: timedelta¶
Maximum lifetime, decoded from
max_exponentper RFC 8003 Section 4.1.
- class pcapkit.protocols.internet.hip.data.RegRequestParameter(type, critical, length, lifetime_exponent, lifetime, reg_type)[source]¶
Bases:
ParameterData model for HIP
REG_REQUESTparameter.Changed in version 1.5.0: New required field
lifetime_exponent, andlifetimefollows RFC 8003 Section 4.1’s exponential encoding rather than reading the octet as a count of seconds (#2281).- lifetime_exponent: int¶
The
Lifetimeoctet as it appears on the wire. RFC 8003 Section 4.1 makes a non-zero octet an exponent standing for2^((lifetime - 64)/8)seconds, and this is that octet. It is what re-serialising writes back, since most of the 256 octets have no exacttimedelta.
- lifetime: timedelta¶
Registration lifetime, decoded from
lifetime_exponentper RFC 8003 Section 4.1.
- reg_type: tuple[Registration, ...]¶
Registration type.
- class pcapkit.protocols.internet.hip.data.RegResponseParameter(type, critical, length, lifetime_exponent, lifetime, reg_type)[source]¶
Bases:
ParameterData model for HIP
REG_RESPONSEparameter.Changed in version 1.5.0: New required field
lifetime_exponent, andlifetimefollows RFC 8003 Section 4.1’s exponential encoding rather than reading the octet as a count of seconds (#2281).- lifetime_exponent: int¶
The
Lifetimeoctet as it appears on the wire, for the reasonRegRequestParameter.lifetime_exponentgives.
- lifetime: timedelta¶
Registration lifetime, decoded from
lifetime_exponentper RFC 8003 Section 4.1.
- reg_type: tuple[Registration, ...]¶
Registration type.
- class pcapkit.protocols.internet.hip.data.RegFailedParameter(type, critical, length, failure_type, reg_type)[source]¶
Bases:
ParameterData model for HIP
REG_FAILEDparameter.Changed in version 1.5.0:
lifetimeis replaced byfailure_type, with no alias, andreg_typeholdsRegistrationvalues:REG_FAILEDcarries a Failure Type octet ahead of its registration types and no lifetime (RFC 8003 Section 4.5, #2309).- failure_type: RegistrationFailure¶
Registration failure type.
- reg_type: tuple[Registration, ...]¶
Registration types that failed with
failure_type.
- class pcapkit.protocols.internet.hip.data.RegFromParameter(type, critical, length, reserved, port, protocol, address)[source]¶
Bases:
ParameterData model for HIP
REG_FROMparameter.Changed in version 1.5.0: New required field
reserved(#1223).- address: IPv6Address¶
Address.
- class pcapkit.protocols.internet.hip.data.EchoResponseSignedParameter(type, critical, length, opaque)[source]¶
Bases:
ParameterData model for HIP
ECHO_RESPONSE_SIGNEDparameter.
- class pcapkit.protocols.internet.hip.data.TransportFormatListParameter(type, critical, length, tf_type)[source]¶
Bases:
ParameterData model for HIP
TRANSPORT_FORMAT_LISTparameter.
- class pcapkit.protocols.internet.hip.data.ESPTransformParameter(type, critical, length, reserved, suite_id)[source]¶
Bases:
ParameterData model for HIP
ESP_TRANSFORMparameter.Changed in version 1.5.0: New required field
reserved(#1223).- suite_id: tuple[ESPTransformSuite, ...]¶
ESP transform.
- class pcapkit.protocols.internet.hip.data.SeqDataParameter(type, critical, length, seq)[source]¶
Bases:
ParameterData model for HIP
SEQ_DATAparameter.
- class pcapkit.protocols.internet.hip.data.AckDataParameter(type, critical, length, ack)[source]¶
Bases:
ParameterData model for HIP
ACK_DATAparameter.
- class pcapkit.protocols.internet.hip.data.PayloadMICParameter(type, critical, length, reserved, next, payload, mic)[source]¶
Bases:
ParameterData model for HIP
PAYLOAD_MICparameter.Changed in version 1.5.0: New required field
reserved(#1223).
- class pcapkit.protocols.internet.hip.data.TransactionIDParameter(type, critical, length, id, id_len)[source]¶
Bases:
ParameterData model for HIP
TRANSACTION_IDparameter.Changed in version 1.5.0: New required field
id_len(#2271).- id_len: int¶
On-wire width of
id, in octets – the parameter’s ownLength, which RFC 6078 Section 4.4 gives as the “Length of the Identifier, in octets” for what is otherwise an opaque value. Declared rather than recomputed fromint.bit_length(), which cannot see a leading zero octet: without it a parameter read withLength = 4re-serialised asLength = 1. Same class of bug as #653; see #2271.
- class pcapkit.protocols.internet.hip.data.OverlayIDParameter(type, critical, length, id, id_len)[source]¶
Bases:
ParameterData model for HIP
OVERLAY_IDparameter.Changed in version 1.5.0: New required field
id_len(#2271).- id_len: int¶
On-wire width of
id, in octets – the parameter’s ownLength, which RFC 6079 Section 6.1 gives as the “Length of the Identifier, in octets” for what is otherwise an opaque value. Declared for the reasonTransactionIDParameter.id_lengives. See #2271.
- class pcapkit.protocols.internet.hip.data.RouteDstParameter(type, critical, length, reserved, flags, hit)[source]¶
Bases:
ParameterData model for HIP
ROUTE_DSTparameter.Changed in version 1.5.0: New required field
reserved(#1223).- hit: tuple[IPv6Address, ...]¶
Destination HITs.
- class pcapkit.protocols.internet.hip.data.Flags(symmetric, must_follow, reserved)[source]¶
Bases:
DataData model for the flags in HIP
ROUTE_DSTandROUTE_VIAparameters.Changed in version 1.5.0: New required field
reserved(#1417).
- class pcapkit.protocols.internet.hip.data.HIPTransportModeParameter(type, critical, length, port, mode_id)[source]¶
Bases:
ParameterData model for HIP
HIP_TRANSPORT_MODEparameter.
- class pcapkit.protocols.internet.hip.data.HIPMACParameter(type, critical, length, hmac)[source]¶
Bases:
ParameterData model for HIP
HIP_MACparameter.
- class pcapkit.protocols.internet.hip.data.HIPMAC2Parameter(type, critical, length, hmac)[source]¶
Bases:
ParameterData model for HIP
HIP_MAC_2parameter.
- class pcapkit.protocols.internet.hip.data.HIPSignature2Parameter(type, critical, length, algorithm, signature)[source]¶
Bases:
ParameterData model for HIP
HIP_SIGNATURE_2parameter.- algorithm: HIAlgorithm¶
Signature algorithm.
- class pcapkit.protocols.internet.hip.data.HIPSignatureParameter(type, critical, length, algorithm, signature)[source]¶
Bases:
ParameterData model for HIP
HIP_SIGNATUREparameter.- algorithm: HIAlgorithm¶
Signature algorithm.
- class pcapkit.protocols.internet.hip.data.EchoRequestUnsignedParameter(type, critical, length, opaque)[source]¶
Bases:
ParameterData model for HIP
ECHO_REQUEST_UNSIGNEDparameter.
- class pcapkit.protocols.internet.hip.data.EchoResponseUnsignedParameter(type, critical, length, opaque)[source]¶
Bases:
ParameterData model for HIP
ECHO_RESPONSE_UNSIGNEDparameter.
- class pcapkit.protocols.internet.hip.data.RelayFromParameter(type, critical, length, reserved, port, protocol, address)[source]¶
Bases:
ParameterData model for HIP
RELAY_FROMparameter.Changed in version 1.5.0: New required field
reserved(#1223).- address: IPv6Address¶
Address.
- class pcapkit.protocols.internet.hip.data.RelayToParameter(type, critical, length, reserved, port, protocol, address)[source]¶
Bases:
ParameterData model for HIP
RELAY_TOparameter.Changed in version 1.5.0: New required field
reserved(#1223).- address: IPv6Address¶
Address.
- class pcapkit.protocols.internet.hip.data.OverlayTTLParameter(type, critical, length, reserved, ttl)[source]¶
Bases:
ParameterData model for HIP
OVERLAY_TTLparameter.Changed in version 1.5.0: New required field
reserved(#1223), andttlis anintrather than atimedelta(#2282).- ttl: int¶
TTL value – “the number of overlay hops this packet has left” (RFC 6079 Section 6.2), decremented by one per overlay hop. A count, not a duration, so it is a plain
int: reading it astimedelta(seconds=ttl)reported a 5-hop budget as five seconds. See #2282.
- class pcapkit.protocols.internet.hip.data.RouteViaParameter(type, critical, length, reserved, flags, hit)[source]¶
Bases:
ParameterData model for HIP
ROUTE_VIAparameter.Changed in version 1.5.0: New required field
reserved(#1223).- hit: tuple[IPv6Address, ...]¶
HIT addresses.
- class pcapkit.protocols.internet.hip.data.FromParameter(type, critical, length, address)[source]¶
Bases:
ParameterData model for HIP
FROMparameter.- address: IPv6Address¶
Address.
- class pcapkit.protocols.internet.hip.data.RVSHMACParameter(type, critical, length, hmac)[source]¶
Bases:
ParameterData model for HIP
RVS_HMACparameter.
- class pcapkit.protocols.internet.hip.data.ViaRVSParameter(type, critical, length, address)[source]¶
Bases:
ParameterData model for HIP
VIA_RVSparameter.- address: tuple[IPv6Address, ...]¶
Addresses.
- class pcapkit.protocols.internet.hip.data.RelayHMACParameter(type, critical, length, hmac)[source]¶
Bases:
ParameterData model for HIP
RELAY_HMACparameter.
Footnotes