Available on crate feature
extensions-draft and crate feature virtual-clients-draft and (32-bit or 64-bit) only.Expand description
Virtual-clients-draft derivation chain: types and helpers for the per-commit material the application supplies on the sender side and the receiver re-derives.
Structs§
- Emulation
Epoch State - Per-emulation-epoch state persisted by
MlsGroup::register_vc_emulation_epochalongside the per-epoch operation secret tree, keyed byEpochId. Bundles everything the library needs to emit a VC commit for this epoch and to XOR application message nonces with deterministic reuse guards. - EpochId
- Identifier of an emulation epoch’s registered virtual-clients state.
Derived deterministically from the emulation group’s
safe_export_secret(VC_COMPONENT_ID)byMlsGroup::register_vc_emulation_epoch. - Generation
Id - A per-message generation ID a virtual client attaches to a fanned-out PrivateMessage so a strongly-consistent DS can detect generation collisions between siblings, per higher-level group, per higher-level group epoch, and per ratchet type (mls-virtual-clients draft).
- KeyPackage
Info - Wire struct a virtual client hands to a sibling so the sibling can fetch and process the matching KeyPackage (mls-virtual-clients draft):
- KeyPackage
Seed Secret - Per-KeyPackage seed secret from which a single KeyPackage’s init and
leaf-encryption keys are derived. Produced by
OperationSecret::derive_key_package_seed_secretfor one index within akey_packageoperation’s batch. Persisted inRetainedKeyPackageMaterialso the Welcome path can rederive the keys without re-walking the operation tree. - KeyPackage
Upload - Wire struct a virtual client uploads to a sibling so the sibling learns about the KeyPackages the virtual client published for an emulation epoch (mls-virtual-clients draft):
- Operation
Secret - Per-operation secret from which the material for a single virtual-clients
operation (commit path, key package, application message) is derived.
Produced by the per-epoch Virtual Client Operation Secret Tree
(
OperationSecretTree). Sender and receiver derive the same value from the same per-epoch state. - Retained
KeyPackage Material - Per-
KeyPackageRefmaterial a sibling retains when it processes aKeyPackageUpload. It captures what the Welcome path needs to later rederive the KeyPackage’s init and leaf-encryption keys without touching the operation tree: the per-KeyPackage seed secret, plus the emulation epoch, leaf index, generation, and batch index used to validate the leaf found in the ratchet tree. - VcEmulation
Bindings - Per-higher-level-group record of which emulation-group epoch produced the virtual-client LeafNode that was active at each recent epoch of that group.
Enums§
- Ratchet
Type - Which ratchet a
PrivateMessageContextrefers to (mls-virtual-clients draftRatchetType): - Virtual
Client Operation Type - What virtual-clients operation a per-operation secret is being derived
for (mls-virtual-clients draft
VirtualClientOperationType). Mixed into theOperationContextof every operation-secret derivation so that secrets derived for different operations cannot collide even if the other fields happen to match. - Virtual
Clients Error - Errors that can occur while processing virtual-clients derivation info.
Constants§
- VC_
COMPONENT_ ID - Component ID under which the virtual-clients derivation info is carried in
the leaf node’s
app_data_dictionaryextension.
Functions§
- assemble_
vc_ key_ package_ upload - Build a
KeyPackageUploadforepoch_idfrom a batch’sgenerationand itsKeyPackageInfoentries, fillingleaf_indexfrom theEmulationEpochStatestored for that epoch. - process_
vc_ key_ package_ upload - Process a
KeyPackageUploadreceived from a sibling virtual client.