use crate::{
dds::qos::QosPolicies,
security::{access_control::*, SecurityResult},
structure::guid::{GuidPrefix, GUID},
};
use super::*;
pub trait Authentication: Send {
fn validate_local_identity(
&mut self,
domain_id: u16,
participant_qos: &QosPolicies,
candidate_participant_guid: GUID,
) -> SecurityResult<(ValidationOutcome, IdentityHandle, GUID)>;
fn validate_remote_identity(
&mut self,
remote_auth_request_token: Option<AuthRequestMessageToken>,
local_identity_handle: IdentityHandle,
remote_identity_token: IdentityToken,
remote_participant_guidp: GuidPrefix,
) -> SecurityResult<(
ValidationOutcome,
IdentityHandle,
Option<AuthRequestMessageToken>,
)>;
fn begin_handshake_request(
&mut self,
initiator_identity_handle: IdentityHandle,
replier_identity_handle: IdentityHandle,
serialized_local_participant_data: Vec<u8>,
) -> SecurityResult<(ValidationOutcome, HandshakeHandle, HandshakeMessageToken)>;
fn begin_handshake_reply(
&mut self,
handshake_message_in: HandshakeMessageToken,
initiator_identity_handle: IdentityHandle,
replier_identity_handle: IdentityHandle,
serialized_local_participant_data: Vec<u8>,
) -> SecurityResult<(ValidationOutcome, HandshakeHandle, HandshakeMessageToken)>;
fn process_handshake(
&mut self,
handshake_message_in: HandshakeMessageToken,
handshake_handle: HandshakeHandle,
) -> SecurityResult<(ValidationOutcome, Option<HandshakeMessageToken>)>;
fn get_shared_secret(
&self,
handshake_handle: IdentityHandle,
) -> SecurityResult<SharedSecretHandle>;
fn get_authenticated_peer_credential_token(
&self,
handshake_handle: HandshakeHandle,
) -> SecurityResult<AuthenticatedPeerCredentialToken>;
fn get_identity_token(&self, handle: IdentityHandle) -> SecurityResult<IdentityToken>;
fn get_identity_status_token(
&self,
handle: IdentityHandle,
) -> SecurityResult<IdentityStatusToken>;
fn set_permissions_credential_and_token(
&mut self,
handle: IdentityHandle,
permissions_credential_token: PermissionsCredentialToken,
permissions_token: PermissionsToken,
) -> SecurityResult<()>;
fn set_listener(&self) -> SecurityResult<()>;
}