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§
Sourcefn initiate_sae(&mut self, sink: &mut SaeUpdateSink)
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.