fn handshake(now: Instant, client: &mut SecretAgent, server: & style='color:red'>mut SecretAgent) { letmut a = client; letmut b = server; letmut records = a.handshake_raw(now, None).unwrap(); let is_done = |agent: &mut SecretAgent| agent.state().is_final(); while !is_done(b) {
records = iflet Ok(r) = forward_records(now, b, records) {
r
} else { // TODO(mt) take the alert generated by the failed handshake // and allow it to be sent to the peer. return;
};
if *b.state() == HandshakeState::AuthenticationPending {
b.authenticated(AuthenticationStatus::Ok);
records = iflet Ok(r) = b.handshake_raw(now, None) {
r
} else { // TODO(mt) - as above. return;
}
}
mem::swap(&mut a, &mut b);
}
}
let server_records = server
.send_ticket(now(), ZERO_RTT_TOKEN_DATA)
.expect("ticket sent");
assert_eq!(server_records.len(), 1); let client_records = client
.handshake_raw(now(), server_records.into_iter().next())
.expect("records ingested");
assert_eq!(client_records.len(), 0);
// `client` is about to go out of scope, // but we only need to keep the resumption token, so clone it. let token = client.resumption_token().expect("token is present");
(anti_replay, token)
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-21)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.