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_POSTFIXAuf 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_submessagemit&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 (
0x01flag).
§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§
- Security
Rtps Error - 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 PreSharedKeyFlagim 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 denPreSharedKeyFlagim 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. LiefertNonewenn die Wire kein gueltiges SRTPS-Wrapping ist.