Available on crate feature
quic
only.Expand description
Key material for use in QUIC packet spaces
QUIC uses 4 different sets of keys (and progressive key updates for long-running connections):
- Initial: these can be created from
Keys::initial()
- 0-RTT keys: can be retrieved from
QuicExt::zero_rtt_keys()
- Handshake: these are returned from
QuicExt::write_hs()
afterClientHello
andServerHello
messages have been exchanged - 1-RTT keys: these are returned from
QuicExt::write_hs()
after the handshake is done
Once the 1-RTT keys have been exchanged, either side may initiate a key update. Progressive
update keys can be obtained from the Secrets
returned in KeyChange::OneRtt
. Note that
only packet keys are updated by key updates; header protection keys remain the same.
Variants
Handshake
Fields
keys: Keys
Header and packet keys for the handshake space
Keys for the handshake space
OneRtt
Fields
keys: Keys
Header and packet keys for 1-RTT data
next: Secrets
Secrets to derive updated keys from
Keys for 1-RTT data
Auto Trait Implementations
impl RefUnwindSafe for KeyChange
impl Send for KeyChange
impl Sync for KeyChange
impl Unpin for KeyChange
impl UnwindSafe for KeyChange
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more