pub fn finish(
        self,
        message: CredentialFinalization<CS>,
    ) -> Result<ServerLoginFinishResult<CS>, ProtocolError> {
        let session_key = <CS::KeyExchange as KeyExchange<CS::Hash, CS::KeGroup>>::finish_ke(
            message.ke3_message,
            &self.ke2_state,
        )?;

        Ok(ServerLoginFinishResult {
            session_key,
            _cs: PhantomData,
            #[cfg(test)]
            state: self,
        })
    }
/// From the client's second and final message, check the client's
/// authentication and produce a message transport
From the client's second and final message, check the client's
authentication and produce a message transport
From the client ' s second and final message check the client ' s authentication and produce a message transport
pub fn finish(
        self,
        message: CredentialFinalization<CS>,
    ) -> Result<ServerLoginFinishResult<CS>, ProtocolError> {
        let session_key = <CS::KeyExchange as KeyExchange<CS::Hash, CS::KeGroup>>::finish_ke(
            message.ke3_message,
            &self.ke2_state,
        )?;
        Ok(ServerLoginFinishResult {
            session_key,
            _cs: PhantomData,
            #[cfg(test)]
            state: self,
        })
    }
pub fn finish ( self , message : CredentialFinalization < CS > , ) -> Result < ServerLoginFinishResult < CS > , ProtocolError > { let session_key = < CS :: KeyExchange as KeyExchange < CS :: Hash , CS :: KeGroup > > :: finish_ke ( message . ke3_message , & self . ke2_state , ) ? ; Ok ( ServerLoginFinishResult { session_key , _cs : PhantomData , # [ cfg ( test ) ] state : self , } ) }
From the client's second and final message, check the client's
authentication and produce a message transport
From the client ' s second and final message check the client ' s authentication and produce a message transport
self
message
CredentialFinalization<CS>
self
message
CredentialFinalization<CS>