pub trait AuthenticationPlugin: Send + Sync {
// Required methods
fn validate_local_identity(
&mut self,
props: &PropertyList,
participant_guid: [u8; 16],
) -> SecurityResult<IdentityHandle>;
fn validate_remote_identity(
&mut self,
local: IdentityHandle,
remote_participant_guid: [u8; 16],
remote_auth_token: &[u8],
) -> SecurityResult<IdentityHandle>;
fn begin_handshake_request(
&mut self,
initiator: IdentityHandle,
replier: IdentityHandle,
) -> SecurityResult<(HandshakeHandle, HandshakeStepOutcome)>;
fn begin_handshake_reply(
&mut self,
replier: IdentityHandle,
initiator: IdentityHandle,
request_token: &[u8],
) -> SecurityResult<(HandshakeHandle, HandshakeStepOutcome)>;
fn process_handshake(
&mut self,
handshake: HandshakeHandle,
token: &[u8],
) -> SecurityResult<HandshakeStepOutcome>;
fn shared_secret(
&self,
handshake: HandshakeHandle,
) -> SecurityResult<SharedSecretHandle>;
fn plugin_class_id(&self) -> &str;
// Provided methods
fn get_identity_token(
&self,
_local: IdentityHandle,
) -> SecurityResult<Vec<u8>> { ... }
fn get_identity_status_token(
&self,
_local: IdentityHandle,
) -> SecurityResult<Vec<u8>> { ... }
fn set_permissions_credential_and_token(
&mut self,
_local: IdentityHandle,
_permissions_credential: &[u8],
_permissions_token: &[u8],
) -> SecurityResult<()> { ... }
fn get_authenticated_peer_credential_token(
&self,
_handshake: HandshakeHandle,
) -> SecurityResult<Vec<u8>> { ... }
}Expand description
Authentication-Plugin-Trait. Spec §8.3.2.7.
Required Methods§
Sourcefn validate_local_identity(
&mut self,
props: &PropertyList,
participant_guid: [u8; 16],
) -> SecurityResult<IdentityHandle>
fn validate_local_identity( &mut self, props: &PropertyList, participant_guid: [u8; 16], ) -> SecurityResult<IdentityHandle>
Wird einmal beim Participant-Start aufgerufen: lokale Identity validieren (Zertifikat, Key, Trust-Anchor) und einen Handle zurueckgeben.
§Spec
§8.3.2.7.1 validate_local_identity.
Sourcefn validate_remote_identity(
&mut self,
local: IdentityHandle,
remote_participant_guid: [u8; 16],
remote_auth_token: &[u8],
) -> SecurityResult<IdentityHandle>
fn validate_remote_identity( &mut self, local: IdentityHandle, remote_participant_guid: [u8; 16], remote_auth_token: &[u8], ) -> SecurityResult<IdentityHandle>
Wird aufgerufen, sobald via SPDP ein Remote-Participant entdeckt
wurde. Plugin validiert das Remote-Cert (aus remote_auth_token)
gegen seinen Trust-Store.
§Spec
§8.3.2.7.2 validate_remote_identity.
Sourcefn begin_handshake_request(
&mut self,
initiator: IdentityHandle,
replier: IdentityHandle,
) -> SecurityResult<(HandshakeHandle, HandshakeStepOutcome)>
fn begin_handshake_request( &mut self, initiator: IdentityHandle, replier: IdentityHandle, ) -> SecurityResult<(HandshakeHandle, HandshakeStepOutcome)>
Startet den Handshake. Liefert das erste Token, das an den Peer gesendet werden muss.
§Spec
§8.3.2.7.3 begin_handshake_request.
Sourcefn begin_handshake_reply(
&mut self,
replier: IdentityHandle,
initiator: IdentityHandle,
request_token: &[u8],
) -> SecurityResult<(HandshakeHandle, HandshakeStepOutcome)>
fn begin_handshake_reply( &mut self, replier: IdentityHandle, initiator: IdentityHandle, request_token: &[u8], ) -> SecurityResult<(HandshakeHandle, HandshakeStepOutcome)>
Peer-Seite des Handshake-Starts. request_token ist was der
Initiator per begin_handshake_request geschickt hat.
§Spec
§8.3.2.7.4 begin_handshake_reply.
Sourcefn process_handshake(
&mut self,
handshake: HandshakeHandle,
token: &[u8],
) -> SecurityResult<HandshakeStepOutcome>
fn process_handshake( &mut self, handshake: HandshakeHandle, token: &[u8], ) -> SecurityResult<HandshakeStepOutcome>
Beendet den Handshake und liefert den finalen SharedSecret.
Fehlschlag bricht ab. Wird nach Complete-Outcome durch den
Caller aufgerufen, um den Secret aus dem Plugin zu ziehen.
Alternative: der Complete-Outcome enthaelt den Handle
bereits — diese Methode ist nur fuer Polling-Integrations.
§Spec
§8.3.2.7.8 get_shared_secret.
Sourcefn plugin_class_id(&self) -> &str
fn plugin_class_id(&self) -> &str
Identity-Plugin-Name (z.B. “DDS:Auth:PKI-DH:1.2”). Wird in SPDP als
dds.sec.auth.plugin_class annonciert.
Provided Methods§
Sourcefn get_identity_token(&self, _local: IdentityHandle) -> SecurityResult<Vec<u8>>
fn get_identity_token(&self, _local: IdentityHandle) -> SecurityResult<Vec<u8>>
Liefert das IdentityToken fuer eine Local-Identity (Spec
§9.3.2.4). Wird im SPDP-Announce als PID_IDENTITY_TOKEN (0x1001)
publiziert. Default: leerer Token (= Plugin unterstuetzt das
Feature nicht).
§Errors
Implementations-spezifisch.
Sourcefn get_identity_status_token(
&self,
_local: IdentityHandle,
) -> SecurityResult<Vec<u8>>
fn get_identity_status_token( &self, _local: IdentityHandle, ) -> SecurityResult<Vec<u8>>
Liefert das IdentityStatusToken fuer eine Local-Identity
(Spec §9.3.2.5.1.2). Default: leer.
§Errors
Implementations-spezifisch.
Sourcefn set_permissions_credential_and_token(
&mut self,
_local: IdentityHandle,
_permissions_credential: &[u8],
_permissions_token: &[u8],
) -> SecurityResult<()>
fn set_permissions_credential_and_token( &mut self, _local: IdentityHandle, _permissions_credential: &[u8], _permissions_token: &[u8], ) -> SecurityResult<()>
Setzt das Permissions-Credential und das Permissions-Token an einer Local-Identity (Spec §9.3.2.4 + §9.3.2.5.4). Wird vom Caller-Layer mit dem Output des AccessControlPlugin gespeist.
§Errors
Default: Unsupported (Plugin ignoriert Permissions-Bind).
Sourcefn get_authenticated_peer_credential_token(
&self,
_handshake: HandshakeHandle,
) -> SecurityResult<Vec<u8>>
fn get_authenticated_peer_credential_token( &self, _handshake: HandshakeHandle, ) -> SecurityResult<Vec<u8>>
Liefert das AuthenticatedPeerCredentialToken (Spec §9.3.2.5.6).
Wird nach erfolgreichem Handshake vom AccessControl-Layer
abgeholt, um den Caller-Subject-Match durchzufuehren.
Default: leer.
§Errors
Implementations-spezifisch.