1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// SPDX-License-Identifier: Apache-2.0
// Copyright 2026 ZeroDDS Contributors
//! Crate `zerodds-security`. Safety classification: **SAFE** (die
//! Security-Plugins werden gegen Produktions-Vertrauensgrenzen
//! ausgefuehrt; der SPI-Layer selbst ist trust-neutral).
//!
//! DDS-Security 1.1 (formal/2018-04-01) Plugin-SPI: definiert die
//! abstrakten Plugin-Traits + Datentypen + Generic-Message-Topics;
//! Produktions-Implementationen leben in Schwester-Crates.
//!
//! ## Schichten-Position
//!
//! Layer 4 — Core Services (SPI-Crate). Pure-Rust + `alloc`, **keine**
//! ZeroDDS-Crate-Deps.
//!
//! ## Public API (Stand 1.0.0-rc.1)
//!
//! | Spec | Trait / Modul | Konkrete Impl |
//! |-----------------------|-----------------------------------------------------|---------------|
//! | §8.3 Authentication | [`AuthenticationPlugin`] in [`authentication`] | `zerodds-security-pki` (X.509 + RSA-PSS + ECDSA + OCSP/CRL) |
//! | §8.4 Access Control | [`AccessControlPlugin`] in [`access_control`] | `zerodds-security-permissions` (Governance + Permissions-XML) |
//! | §8.5 Cryptographic | [`CryptographicPlugin`] in [`crypto`] | `zerodds-security-crypto` (AES-GCM 128/256 + HMAC-SHA256 + Receiver-Specific-MACs) |
//! | §8.6 Logging | [`LoggingPlugin`] in [`logging`] | `zerodds-security-logging` |
//! | §8.7 Data Tagging | [`DataTaggingPlugin`] in [`data_tagging`] | `zerodds-security-runtime` (Built-in DataTagging) |
//!
//! Plus Querschnitt:
//! - [`token`] — `IdentityToken`, `PermissionsToken`, `CryptoToken`, `DataHolder`, `BinaryProperty`.
//! - [`generic_message`] — `ParticipantGenericMessage`, `MessageIdentity` + Topic-Konstanten fuer DCPSParticipantStatelessMessage / DCPSParticipantVolatileMessageSecure.
//! - [`properties`] — `Property` / `PropertyList` fuer Plugin-Konfiguration.
//! - [`security_topic_qos`] — Built-in-Security-Topic-QoS-Profile.
//! - [`error`] — `SecurityError`.
//! - [`mock`] (Feature `std`) — Test-Mock-Plugins, niemals produktiv.
//!
//! ## Architektur
//!
//! Das SPI ist Trait-basiert + `Box<dyn Plugin>`-erasable, damit
//! verschiedene Backends (rustls vs. ring vs. mbedtls) ohne Crate-
//! Wiring austauschbar sind. Jeder Plugin-Trait ist in sich geschlossen
//! — keine Cross-References — damit Erweiterungen in einem Plugin nicht
//! andere brechen.
//!
//! ## API-Stability-Pledge
//!
//! Dieses Interface ist **API-frozen** ab `1.0.0-rc.1`. Breaking
//! Changes erfordern ein v2.0-Major-Bump. Semver-Patch + Minor duerfen
//! nur neue Methoden mit Default-Body oder non-breaking Enum-Varianten
//! hinzufuegen.
// zerodds-lint: allow no_dyn_in_safe
// Plugin-SPI benötigt `Box<dyn Plugin>` für austauschbare Backends
// (rustls/ring/mbedtls). Dies ist architektur-bedingt und keine Speicher-
// Sicherheits-Schwäche.
extern crate alloc;
pub use AccessControlPlugin;
pub use AuthenticationPlugin;
pub use CryptographicPlugin;
pub use DataTaggingPlugin;
pub use SecurityError;
pub use ;
pub use ;
pub use ;
pub use ;