Expand description
The key package payload, which is how a peer says who it is and what it can parse.
This is the body of a prefixes::KEY_PACKAGE frame, and it is the only
channel in this protocol by which capabilities are advertised. A device
with no key package to mint has no way to say it understands anything, so
every frame sent to it falls to the protocol floor forever. That is the
reason a leaf node runs MLS rather than something smaller: not the
sealing, the advertising.
Both ends must agree on this shape, and they build it with different MLS implementations, so it lives here rather than in the engine.
Structs§
- KeyPackage
Payload - Payload for key package exchange.
Constants§
- ACK_
COALESCED_ V1 - Acknowledgement version advertised in
KeyPackagePayload::ack_versions: the sender reads theack_moremetadata on a delivery ACK, so one ACK frame may answer several of its frames. Over a mesh link an ACK per frame was a third of the frames a phone sent, on a link already carrying less than it was offered. - ACK_
UNDECRYPTABLE_ V1 - Acknowledgement version advertised in
KeyPackagePayload::ack_versions: the sender readsack_status = "undecryptable"on a delivery ACK as “the recipient can never decrypt this frame” rather than as a delivery. - CTRL_
SIGN_ V2 - Control-frame signing version advertised in
KeyPackagePayload::ctrl_versions: the sender verifies signatures overcontrol_signing_payload_v2, which binds the frame’s timestamp and so can be refused for being stale. - MLS_
ENVELOPE_ COMPACT_ V1 - Compact MLS envelope version advertised in
KeyPackagePayload::env_versions: theprefixes::ENCRYPTEDpayload is base64 ofEncryptedMessage::to_bytesinstead of the legacy JSON form (whoseciphertextfield renders as a roughly 3.6x integer array). Receivers distinguish the two by the byte after the prefix:{opens the JSON envelope and never occurs in base64. - SVC_
SEALED_ V1 - Sealed service frame version advertised in
KeyPackagePayload::svc_versions: the sender routes a__SVC_REQ__or__SVC_RESP__it finds inside a decrypted 1:1 MLS plaintext into its service layer, with the MLS-authenticated sender as the requester.