Cargo Features

mls-rs = { version = "0.39.2", default-features = false, features = ["std", "rayon", "external_client", "grease", "fast_serialize", "secret_tree_access", "state_update", "private_message", "custom_proposal", "tree_index", "out_of_order", "prior_epoch", "by_ref_proposal", "psk", "x509", "rfc_compliant", "ffi", "serde", "arbitrary", "sqlite", "sqlite-bundled", "sqlcipher", "sqlcipher-bundled", "benchmark_util", "fuzz_util", "test_util"] }
default benchmark_util? fuzz_util? = fast_serialize, rayon, rfc_compliant, std, tree_index

These default features are set whenever mls-rs is added without default-features = false somewhere in the dependency tree.

std default arbitrary? external_client? grease? rayon sqlite?

Enables debug_tree, thiserror, use_std of itertools ^0.12.0, std of zeroize, std of futures and hex and std of mls-rs-codec, mls-rs-core, optional mls-rs-identity-x509, optional safer-ffi-gen, and optional serde


Provide impls for common standard library types like Vec<T> and HashMap<K, V>.
Requires a dependency on the Rust standard library.

rayon default = std

Enables rayon


external_client = std

Affects mls-rs::external_client

grease = std
fast_serialize default

Enables fast_serialize of mls-rs-core



state_update rfc_compliant

Affects message_processor::StateUpdate

private_message out_of_order? rfc_compliant

Affects framing::PrivateContentAAD, framing::PrivateMessage, mls_rules::EncryptionOptions.encrypt_control_messages, mls_rules::EncryptionOptions.padding_mode,

custom_proposal rfc_compliant

Affects proposal::CustomProposal, proposal::MlsCustomProposal

tree_index default

Affects tree_index::Identifier, tree_index::TreeIndex

out_of_order rfc_compliant = private_message
prior_epoch rfc_compliant
by_ref_proposal rfc_compliant

Affects built_in::ExternalSendersExt, commit::CommitOutput.unused_proposals, message_processor::ProposalMessageDescription, message_processor::CachedProposal, proposal::UpdateProposal, proposal_cache::CachedProposal

psk rfc_compliant

Affects proposal::PreSharedKeyProposal

x509 rfc_compliant

Enables mls-rs-identity-x509, x509 of mls-rs-core

Affects identity::x509

rfc_compliant default = by_ref_proposal, custom_proposal, out_of_order, prior_epoch, private_message, psk, state_update, x509

Enables rfc_compliant of mls-rs-core


Enables safer-ffi and safer-ffi-gen, ffi of mls-rs-core


Enables hex, serde, serde of mls-rs-core, serde of zeroize

arbitrary = std

Enables arbitrary, arbitrary of mls-rs-core

sqlite sqlcipher? sqlcipher-bundled? sqlite-bundled? = std

SQLite support

Enables sqlite of mls-rs-provider-sqlite

Optional dependencies

Affects client_builder::BaseSqlConfig, storage_provider::sqlite

sqlite-bundled = sqlite

Enables sqlite-bundled of mls-rs-provider-sqlite

sqlcipher = sqlite

Enables sqlcipher of mls-rs-provider-sqlite

sqlcipher-bundled = sqlite

Enables sqlcipher-bundled of mls-rs-provider-sqlite

benchmark_util = default, test_util

Enables mls-rs-crypto-openssl

Affects test_utils::benchmarks

fuzz_util = default, test_util

Enables mls-rs-crypto-openssl and once_cell

Affects test_utils::fuzz_tests

test_util benchmark_util? fuzz_util?

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

mls-rs-provider-sqlite sqlcipher? sqlcipher-bundled? sqlite? sqlite-bundled?