pub struct SecurityGate<'c, P: CryptographicPlugin> { /* private fields */ }Expand description
Entscheidet pro Topic ob/wie ausgehende Submessages verschluesselt oder signiert werden muessen.
Implementations§
Source§impl<'c, P: CryptographicPlugin> SecurityGate<'c, P>
impl<'c, P: CryptographicPlugin> SecurityGate<'c, P>
Sourcepub fn new(domain_id: u32, governance: Governance, crypto: &'c mut P) -> Self
pub fn new(domain_id: u32, governance: Governance, crypto: &'c mut P) -> Self
Konstruktor.
Sourcepub fn outbound_protection(&self, topic_name: &str) -> ProtectionKind
pub fn outbound_protection(&self, topic_name: &str) -> ProtectionKind
Entscheidet, ob ausgehende Submessage fuer topic_name wrapped
werden muss.
Sourcepub fn encode_outbound(
&mut self,
topic_name: &str,
plaintext: &[u8],
) -> Result<Vec<u8>, SecurityGateError>
pub fn encode_outbound( &mut self, topic_name: &str, plaintext: &[u8], ) -> Result<Vec<u8>, SecurityGateError>
Wrap ausgehende Submessage wenn Governance es verlangt.
Protection-Kind None liefert das Original-Byte-Slice
unveraendert zurueck (Passthrough).
§Errors
Siehe SecurityGateError.
Sourcepub fn decode_inbound(
&mut self,
topic_name: &str,
wire: &[u8],
) -> Result<Vec<u8>, SecurityGateError>
pub fn decode_inbound( &mut self, topic_name: &str, wire: &[u8], ) -> Result<Vec<u8>, SecurityGateError>
Unwrap eingehende Submessage. Wenn das Format KEIN SEC_PREFIX
zeigt, aber Governance SIGN/ENCRYPT verlangt → Policy-
Violation. Wenn Governance None und die Bytes kein SEC_PREFIX,
einfach passthrough.
§Errors
Siehe SecurityGateError.
Loopback-only: dieses Convenience-Entry nutzt den lokalen
Slot fuer Key-Lookup; echte Cross-Participant-Decoding laeuft
ueber Self::decode_inbound_message mit remote_slot.
Sourcepub fn register_remote(
&mut self,
remote_identity: IdentityHandle,
shared_secret: SharedSecretHandle,
) -> Result<CryptoHandle, SecurityGateError>
pub fn register_remote( &mut self, remote_identity: IdentityHandle, shared_secret: SharedSecretHandle, ) -> Result<CryptoHandle, SecurityGateError>
Registriert einen Remote-Peer. Der zurueckgegebene Handle ist
der CryptoHandle im lokalen Plugin, an dem der Remote-Key
danach via Self::set_remote_token angelegt wird.
§Errors
Siehe SecurityGateError.
Sourcepub fn local_token(&mut self) -> Result<Vec<u8>, SecurityGateError>
pub fn local_token(&mut self) -> Result<Vec<u8>, SecurityGateError>
Liefert den Crypto-Token des lokalen Participants (zu senden an Remote via SEDP-Participant-CryptoToken-Submessage).
§Errors
CryptoSetup/Crypto wenn der lokale Handle nicht existiert.
Sourcepub fn set_remote_token(
&mut self,
remote: CryptoHandle,
token: &[u8],
) -> Result<(), SecurityGateError>
pub fn set_remote_token( &mut self, remote: CryptoHandle, token: &[u8], ) -> Result<(), SecurityGateError>
Akzeptiert einen Remote-Crypto-Token und installiert ihn unter dem uebergebenen Remote-Handle.
§Errors
Siehe SecurityGateError.
Sourcepub fn message_protection(&self) -> ProtectionKind
pub fn message_protection(&self) -> ProtectionKind
Ist fuer diese Domain ein RTPS-Message-Level-Schutz konfiguriert?
Schaut in das erste matchende <domain_rule> und liefert den
rtps_protection_kind.
Sourcepub fn encode_outbound_message(
&mut self,
message: &[u8],
) -> Result<Vec<u8>, SecurityGateError>
pub fn encode_outbound_message( &mut self, message: &[u8], ) -> Result<Vec<u8>, SecurityGateError>
Wrap eine komplette RTPS-Message (inkl. 20-byte Header) wenn
rtps_protection_kind != None. Sonst passthrough.
§Errors
Siehe SecurityGateError.
Sourcepub fn decode_inbound_message(
&mut self,
remote_slot: CryptoHandle,
wire: &[u8],
) -> Result<Vec<u8>, SecurityGateError>
pub fn decode_inbound_message( &mut self, remote_slot: CryptoHandle, wire: &[u8], ) -> Result<Vec<u8>, SecurityGateError>
Unwrap eine eingehende RTPS-Message. remote_slot ist der
CryptoHandle unter dem der Sender-Key registriert ist
(liefert register_remote + set_remote_token zurueck).
Implementation-Detail: der Plugin-Trait nutzt local als
Key-Slot-Identifier (siehe OMG §8.5.1.9.4 Mapping), daher
reichen wir remote_slot als local-Arg an den Codec durch —
das ist der Slot in dem Alice’s Master-Key liegt.
§Errors
Siehe SecurityGateError.