Protocol Utilities#
- icspacket.proto.iso_pres.util.presentation_context_id(item: Member_TYPE) int[source]#
Return the integer presentation context identifier for a context item.
- icspacket.proto.iso_pres.util.presentation_context_transfer_syntaxes(item: Member_TYPE) list[str][source]#
Return transfer syntax object identifiers from a context item.
- icspacket.proto.iso_pres.util.validate_presentation_context_items(pres_context_items: list[Member_TYPE]) None[source]#
Validate client-side CP presentation context definition items.
- icspacket.proto.iso_pres.util.build_connect_ppdu(user_data: bytes, pres_context_id: int | None = None, *, calling_presentation_selector: bytes | None = None, called_presentation_selector: bytes | None = None, use_version_1: bool = False, requirements: Presentation_requirements | None = None, pres_context_items: list[Member_TYPE] | None = None) CP_type[source]#
Construct a
CP-type(CONNECT PPDU) for initiating a COPP session.Assembles a presentation-layer connection request including version, selectors, requirements, context definitions, and user data (ASN.1 payloads wrapped in PDV-lists).
- Parameters:
user_data (bytes) – Encoded ASN.1 payload to embed into the user data field.
pres_context_id (int | None) – Identifier for the presentation context associated with the
user_data. Defaults to1if not provided.calling_presentation_selector (bytes | None) – Optional selector identifying the calling presentation entity.
called_presentation_selector (bytes | None) – Optional selector identifying the called presentation entity.
use_version_1 (bool) – If
True, explicitly requests version 1 of the Presentation protocol. Defaults toFalse(version negotiation left open).requirements (Presentation_requirements | None) – Presentation requirements field. If not set, a default empty
Presentation_requirementsinstance is used.pres_context_items (list[PresentaionContextItem] | None) – Optional list of presentation context definitions (e.g., abstract syntax + transfer syntax pairs).
- Returns:
A fully-formed
CP-typeconnect PDU.- Return type:
CP_type
Note
This constructs only a
normal-modeconnect PDU. X.226 also defines other connection modes and negotiation structures that may be added in future extensions.
- icspacket.proto.iso_pres.util.build_user_data(user_data: bytes, presentation_context_id: int, transfer_syntax_name: str | None = None) User_data[source]#
Build a
User_datastructure wrapping raw ASN.1 data.This creates a
PDV-listentry with the given presentation context identifier, assigning the payload as asingle-ASN1-type.- Parameters:
user_data (bytes) – Encoded ASN.1 payload to embed.
presentation_context_id (int) – Identifier for the presentation context under which the payload is interpreted.
transfer_syntax_name (str | None) – Name of the transfer syntax to record in the PDV list entry. It is optional in general, but this library still supplies it, according to X.226, whenever the referenced context originally offered more than one transfer syntax for a CP’s user data, so the decoder knows which one was actually chosen.
- Returns:
A
User_dataelement containing fully encoded data.- Return type:
User_data
Note
This helper assumes single ASN.1 type encoding. If multiple PDVs or different encodings (octet-aligned, arbitrary) are needed, the construction must be extended.
- icspacket.proto.iso_pres.util.build_x410_user_data(user_data: bytes) User_data[source]#
Build X.410-1984 mode user data.
Used for ACSE APCI exchanged in X.410-1984 mode, a mode that has no concept of presentation context identifiers; the payload is therefore stored as plain “simply encoded data” instead of being wrapped in a PDV-list like
build_user_data()does.
- icspacket.proto.iso_pres.util.user_data_get_single_asn1(user_data: User_data, *, context: dict[int, type] | None = None) Any[source]#
Extract and decode a single ASN.1 object from
User_data.Validates that the input is fully encoded, contains exactly one
PDV-list, and that the encoding is of typesingle-ASN1-type. The payload is then decoded using the ASN.1 class mapped to the presentation context identifier.- Parameters:
user_data (User_data) – The presentation user data structure to inspect.
context (dict[int, type[Any]] | None) – Mapping of presentation context identifiers to ASN.1 classes that implement a
ber_decodemethod. If not provided, defaults to an empty map (error if lookup fails).
- Raises:
ValueError – If the data is not fully encoded, contains multiple PDVs, has an unexpected data type, or references an unknown context id.
- Returns:
The decoded ASN.1 object.
- Return type:
Any
Warning
This function assumes that the
contextdictionary correctly maps presentation context identifiers to decodable ASN.1 types. Incorrect mappings may lead to misinterpretation of payloads.