Skip to main content

Crate zerodds_security_rtps

Crate zerodds_security_rtps 

Source
Expand description

Crate zerodds-security-rtps. Safety classification: SAFE (reiner Wire-Format-Adapter; die eigentliche Crypto delegiert an ein [CryptographicPlugin]).

Secure-Submessage-Wrapper (OMG DDS-Security 1.1 §7.3.6) + RTPS-Header-AAD-Codec (§9.5).

§Schichten-Position

Layer 4 — Core Services. Konsumiert zerodds-security (SPI) + zerodds-rtps (RTPS-Submessage-Layout). Wird vom DCPS-Runtime via Box<dyn CryptographicPlugin> und dem Inbound/Outbound-Datapath genutzt.

§Public API (Stand 1.0.0-rc.1)

Nimmt eine oder mehrere plain-RTPS-Submessages (als opaque Bytes) und wrapped sie in:

SEC_PREFIX  | SEC_BODY (ciphertext)  | SEC_POSTFIX

Auf Empfaenger-Seite macht decode_secured_submessage den Schritt rueckwaerts: SEC_BODY extrahieren, durch den Crypto-Plugin schicken, plaintext zurueckgeben.

  • Submessage-IDs + -Flags gemaess Spec §7.3.6.
  • encode_secured_submessage + decode_secured_submessage mit &mut dyn CryptographicPlugin-Callback — damit AES-GCM, HMAC, oder zukuenftige Backends austauschbar sind.
  • SRTPS-Wrap (§9.5 RTPS-Message-Protection): SRTPS_PREFIX + SRTPS_POSTFIX-Codec.
  • Receiver-Specific-MAC-Liste im POSTFIX (MAX_RECEIVER_MACS): pro Remote-Reader ein 16-byte MAC; Single-Receiver-Pfade lassen die Liste leer (Spec §7.3.6.3 erlaubt das).
  • Little-Endian-Submessage-Header (0x01 flag).

§Nicht-Ziele

  • Big-Endian-Submessage-Header — Spec erlaubt beide; alle Vendoren nutzen LE per Default. Re-Add additiv bei Major-2.0.

Re-exports§

pub use header_aad::build_rtps_header_aad;
pub use header_aad::build_submessage_aad;

Modules§

header_aad
RTPS-Header-AAD fuer SRTPS-Wrapping — DDS-Security 1.2 §7.4.6.6 + §8.1.

Enums§

SecurityRtpsError
Fehler beim Kodieren/Dekodieren.

Constants§

MAX_RECEIVER_MACS
DoS-Cap fuer die MAC-Liste im SEC_POSTFIX. Jeder MAC ist 20 Bytes; 256 MACs = 5 KiB — ausreichend fuer Hetero-Deployments mit hundertschaft Readers pro Writer, aber weit unter RAM-Angriffs- Threshold.
PRE_SHARED_KEY_FLAG
PreSharedKeyFlag im SRTPS_PREFIX-Submessage-Header — Spec DDS-Security 1.2 §10.9.1.
RTPS_HEADER_LEN
RTPS-Header-Groesse (Spec §8.3.3.1).
SEC_BODY
SEC_BODY Submessage-ID (Spec §7.3.6.4).
SEC_POSTFIX
SEC_POSTFIX Submessage-ID (Spec §7.3.6.3).
SEC_PREFIX
SEC_PREFIX Submessage-ID (Spec §7.3.6.2).
SRTPS_POSTFIX
SRTPS_POSTFIX Submessage-ID (Spec §7.3.6.6).
SRTPS_PREFIX
SRTPS_PREFIX Submessage-ID (Spec §7.3.6.5).

Functions§

decode_secured_rtps_message
Unwrap eine ganze RTPS-Message. Erwartet das gleiche Format wie encode_secured_rtps_message. Liefert die rekonstruierte plaintext-Message ([header | body]).
decode_secured_submessage
Dekodiert eine Secure-Submessage-Sequenz und liefert den plaintext zurueck.
decode_secured_submessage_multi
Dekodiert eine Secure-Submessage-Sequenz MIT Multi-MAC-SEC_POSTFIX und liefert den plaintext zurueck.
encode_secured_rtps_message
Schuetzt eine ganze RTPS-Message. Die ersten 20 byte (Header) bleiben plaintext; alles dahinter (Submessage-Stream) wird verschluesselt + authentifiziert. Output:
encode_secured_rtps_message_psk
Wie encode_secured_rtps_message, aber setzt zusaetzlich den PreSharedKeyFlag im SRTPS_PREFIX (Spec §10.9.1) — fuer den PSK-Crypto-Pfad.
encode_secured_submessage
Kodiert ein plain-Submessage-Blob als secured Submessage- Sequenz (SEC_PREFIX + SEC_BODY + SEC_POSTFIX).
encode_secured_submessage_multi
Encoded ein plain-Submessage-Blob als secured Sequenz MIT Receiver-Specific-MACs im SEC_POSTFIX(Spec §7.3.6.3).
srtps_psk_flag
Liest den PreSharedKeyFlag-Bit aus dem SRTPS_PREFIX einer secured RTPS-Message. Liefert None wenn die Wire kein gueltiges SRTPS-Wrapping ist.