pub struct ResumptionRecord {
pub id: ResumptionId,
pub shared_secret: [u8; 32],
pub peer: PeerInfo,
pub expires_at: Option<MatterTime>,
}Expand description
State persisted by the caller after a successful CASE handshake,
allowing a future session to skip the full 3-message handshake via
Sigma2_Resume. Resumption flow lands in M4.2.
§Secret hygiene
Carries the resumption shared_secret. Implements
zeroize::ZeroizeOnDrop (only the secret is wiped — the non-secret
metadata fields id, peer, and expires_at are #[zeroize(skip)]),
redacts the secret in its Debug impl, and does not derive variable-time
equality.
Fields§
§id: ResumptionIdIdentifier the peer sends back in Sigma1 to attempt resumption.
Skipped from zeroization: a public, non-secret session identifier (it is
sent on the wire in Sigma1). Only shared_secret is sensitive.
The full 32-byte ECDH SharedSecret of the original session (Matter
Core §4.14.8). Both chip’s SessionResumptionStorage and matter.js
store the raw ECDH output; it is the HKDF IKM for the resumption MICs
and the resumed session keys. Caller treats this as opaque.
peer: PeerInfoPeer’s identity at the time the record was created.
Skipped from zeroization: non-secret identity/cert metadata, and
PeerInfo is not Zeroize.
expires_at: Option<MatterTime>Optional expiry timestamp. Callers should reject resumption attempts after this point.
Skipped from zeroization: non-secret timestamp metadata.
Trait Implementations§
Source§impl Clone for ResumptionRecord
impl Clone for ResumptionRecord
Source§fn clone(&self) -> ResumptionRecord
fn clone(&self) -> ResumptionRecord
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more