pub struct PeerCapabilities {
pub auth_plugin_class: Option<String>,
pub crypto_plugin_class: Option<String>,
pub access_plugin_class: Option<String>,
pub supported_suites: Vec<SuiteHint>,
pub offered_protection: ProtectionLevel,
pub has_valid_cert: bool,
pub validity_window: Option<Validity>,
pub vendor_hint: Option<String>,
pub cert_cn: Option<String>,
pub delegation_chain: Option<DelegationChain>,
}Expand description
Security-relevante Capabilities eines Remote-Peers.
Wird aus SPDP-Properties (Auth-/Crypto-/Access-Plugin-Class,
zerodds.sec.supported_suites, zerodds.sec.offered_protection)
sowie aus SEDP-Permissions-Tokens befuellt. Legacy-Peers ohne
Security-Properties landen mit auth_plugin_class=None hier —
kein Drop, die crate::PolicyEngine entscheidet pro
Domain-Rule, ob Legacy akzeptiert wird.
Alle Felder sind Option-/Vec-basiert, damit Partial-Updates
(Upgrade-Pfad in §4.3 der Architektur-Doc) sauber moeglich sind.
Fields§
§auth_plugin_class: Option<String>DDS:Auth:PKI-DH:1.2 (Spec 1.2 §10.3.2.1) etc. None = Legacy-
Peer ohne Auth-Plugin.
crypto_plugin_class: Option<String>DDS:Crypto:AES-GCM-GMAC:1.2 (Spec 1.2 §10.5) etc.
access_plugin_class: Option<String>DDS:Access:Permissions:1.2 (Spec 1.2 §10.4) etc.
supported_suites: Vec<SuiteHint>Suites, die der Peer laut SPDP-Annonce akzeptieren wuerde.
offered_protection: ProtectionLevelProtection-Level, das der Peer selbst anbietet.
has_valid_cert: booltrue wenn Cert-Chain + OCSP geprueft und ok — wird vom
Authentication-Plugin gesetzt, nicht aus SPDP.
validity_window: Option<Validity>Validity-Window aus dem Permissions-Token.
vendor_hint: Option<String>Vendor-Identifikation (z.B. "Cyclone DDS", "Fast DDS")
fuer Quirks.
cert_cn: Option<String>Subject-Common-Name aus dem Peer-Cert (z.B.
"writer1.fast.example"). Wird vom Authentication-Plugin nach
erfolgreichem Handshake gesetzt; nicht via SPDP propagiert.
Genutzt fuer <zerodds:peer_class><match cert_cn_pattern=...>
.
delegation_chain: Option<DelegationChain>Delegation-Chain. Wird vom Edge- oder Sub-Gateway
via SPDP-Property zerodds.sec.delegation_chain propagiert.
Validation gegen ein Delegation-Profile passiert in
peer_matches_class (j-d). None = Peer ohne Chain (= direkt
authentifizierter Peer oder Legacy).
Implementations§
Source§impl PeerCapabilities
impl PeerCapabilities
Sourcepub fn merge_update(&mut self, other: &PeerCapabilities)
pub fn merge_update(&mut self, other: &PeerCapabilities)
Mischt nicht-leere Felder aus other in self. Leere Felder
(None, []) bleiben unveraendert — damit sind mehrere
partielle SPDP-Updates idempotent und reihenfolge-tolerant.
Sonderregeln:
offered_protectionwird immer uebernommen (monoton steigend viaProtectionLevel::stronger) — ein Peer kann sein Level upgraden, aber nicht still herunterstufen.has_valid_cert=trueist sticky: einmal validiert, kann es nicht zufalsezurueckfallen (Cert-Rotation erfordert explizitesPeerCache::forget).
Trait Implementations§
Source§impl Clone for PeerCapabilities
impl Clone for PeerCapabilities
Source§fn clone(&self) -> PeerCapabilities
fn clone(&self) -> PeerCapabilities
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PeerCapabilities
impl Debug for PeerCapabilities
Source§impl Default for PeerCapabilities
impl Default for PeerCapabilities
Source§fn default() -> PeerCapabilities
fn default() -> PeerCapabilities
Source§impl PartialEq for PeerCapabilities
impl PartialEq for PeerCapabilities
Source§fn eq(&self, other: &PeerCapabilities) -> bool
fn eq(&self, other: &PeerCapabilities) -> bool
self and other values to be equal, and is used by ==.