ConversationGuard, obtained via TransactionContext::conversation.
Creating conversations
new_conversation
Unique group identifier bytes. Wire typically uses a UUID encoded as bytes.
Reference to the credential the creator uses for this group. See Credentials.
Group configuration. See
MlsConversationConfiguration below.MlsConversationConfiguration
The MLS ciphersuite for the group. Defaults to
MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519.Delivery service public signature keys used for external proposals. Provide via
set_raw_external_senders to accept both JWK and raw key formats.Additional Wire-specific configuration. See
MlsCustomConfiguration.MlsCustomConfiguration
Planned: automatic key rotation interval. Not yet implemented.
Controls whether handshake messages are encrypted.
Plaintext (default) or Ciphertext.How many application messages within an epoch can arrive out of order before they are rejected. Default:
2.Maximum number of application messages that may be skipped (dropped by the DS) within an epoch. Default:
1000.Querying conversations
conversation_exists
true if a fully-merged conversation with the given ID exists locally.
get_client_ids
ClientId of every current group member, derived from their MLS credential identity.
mark_as_child_of
The ID of the parent conversation.
Membership management
add_members
MlsTransport::send_commit_bundle and merged locally on success.
Deserialised
KeyPackageIn objects for each new member.Any new CRL distribution points found in the incoming X.509 credentials. Your application should fetch these CRLs and register them with
e2ei_register_crl.remove_members
The client IDs to remove.
update_key_material
commit_pending_proposals
Proposals
Proposals are pre-staged changes that a member can create without yet committing them. Another member (or the same one) then commits them.new_add_proposal
new_remove_proposal
new_update_proposal
Messaging
encrypt_message
MlsCiphertext.
The raw plaintext bytes to encrypt.
TLS-serialised
MlsCiphertext ready to be forwarded to the Delivery Service.decrypt_message
TLS-serialised
MlsMessage bytes received from the Delivery Service.See
MlsConversationDecryptMessage below.MlsConversationDecryptMessage
The decrypted application message payload.
None for commit and proposal messages.Renewed proposals that could not be included in a received commit. Your application should re-fan these out to other members.
false when the current client was removed from the group by the commit just processed. The conversation is wiped locally in that case.Suggested delay in seconds before the client should commit pending proposals. Provided to pace commit storms.
The
ClientId of the sender. Present only for application messages.true if processing this message caused an epoch change. Deprecated — prefer implementing the EpochObserver interface instead, which provides richer epoch-change notifications.Identity claims from the sender’s credential. See
WireIdentity.Messages that were received before their epoch’s commit and buffered. Replayed automatically once the commit arrives. Present only on commit decryption.
New CRL distribution points introduced by credentials in this message. Fetch and register them with
e2ei_register_crl.External commits
join_by_external_commit
MlsTransport::send_commit_bundle, and merges locally on acceptance.
If the Delivery Service rejects the commit, clear the pending state and retry by calling this method again with a fresh VerifiableGroupInfo.
A
VerifiableGroupInfo (TLS-deserialised from the DS). Must include the ratchet tree extension.Credential to use when joining the group.
Contains the new
ConversationId and any CRL distribution points from the group.Secret export and sub-conversations
export_secret_key
key_length bytes from the current group epoch using the MLS exporter. Used to bootstrap sub-protocols.
Desired output length in bytes. Must not exceed
u16::MAX or context_hash * 255.The derived key bytes.
get_external_sender
wipe (wipe_conversation)
MlsCommitBundle
Returned internally when a commit is produced. Passed to MlsTransport::send_commit_bundle.
Welcome message for newly added members.
None if no members were added.The commit message to be fanned out to existing group members.
Updated
GroupInfo for clients that want to join via external commit after this epoch.An optional encrypted message to fan out to the new epoch. Reserved for history sharing.