pub trait SaeHandshake: Send {
    // Required methods
    fn initiate_sae(&mut self, sink: &mut SaeUpdateSink);
    fn handle_commit(
        &mut self,
        sink: &mut SaeUpdateSink,
        commit_msg: &CommitMsg<'_>
    );
    fn handle_confirm(
        &mut self,
        sink: &mut SaeUpdateSink,
        confirm_msg: &ConfirmMsg<'_>
    );
    fn handle_anti_clogging_token(
        &mut self,
        sink: &mut SaeUpdateSink,
        act_msg: &AntiCloggingTokenMsg<'_>
    );
    fn handle_timeout(&mut self, sink: &mut SaeUpdateSink, timeout: Timeout);

    // Provided method
    fn handle_frame(
        &mut self,
        sink: &mut SaeUpdateSink,
        frame: &AuthFrameRx<'_>
    ) { ... }
}
Expand description

IEEE 802.11-2016 12.4: Simultaneous Authentication of Equals (SAE)

An SAE handshake with a peer is a symmetric handshake that may be used in place of open authentication as the AKM. A full handshake consists of both peers sending a Commit and Confirm frame, at which point they have both derived a shared key that is unique to those peers and that session.

Structs implementing this trait are responsible for handling both a successful SAE handshake, various failure modes, and edge cases such as retries and timeouts.

None of the functions in this trait return errors. Instead, non-fatal errors are logged, and fatal errors push an SaeUpdate::Reject to the update sink. Once an SaeUpdate::Reject is pushed, all further operations are no-ops.

Required Methods§

source

fn initiate_sae(&mut self, sink: &mut SaeUpdateSink)

Initiate SAE by sending the first commit message. If the peer STA sends the first commit message, handle_commit should be called first and initiate_sae should never be called.

source

fn handle_commit( &mut self, sink: &mut SaeUpdateSink, commit_msg: &CommitMsg<'_> )

source

fn handle_confirm( &mut self, sink: &mut SaeUpdateSink, confirm_msg: &ConfirmMsg<'_> )

source

fn handle_anti_clogging_token( &mut self, sink: &mut SaeUpdateSink, act_msg: &AntiCloggingTokenMsg<'_> )

source

fn handle_timeout(&mut self, sink: &mut SaeUpdateSink, timeout: Timeout)

Provided Methods§

source

fn handle_frame(&mut self, sink: &mut SaeUpdateSink, frame: &AuthFrameRx<'_>)

Implementors§