Skip to main content

AuthenticationPlugin

Trait AuthenticationPlugin 

Source
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§

Source

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.

Source

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.

Source

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.

Source

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.

Source

fn process_handshake( &mut self, handshake: HandshakeHandle, token: &[u8], ) -> SecurityResult<HandshakeStepOutcome>

Folge-Nachrichten des Handshakes durchreichen.

§Spec

§8.3.2.7.5 process_handshake.

Source

fn shared_secret( &self, handshake: HandshakeHandle, ) -> SecurityResult<SharedSecretHandle>

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.

Source

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§

Source

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.

Source

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.

Source

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).

Source

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.

Implementors§