Name Description Size Coverage
client.rs 46146 -
client_builder.rs Definitions to build a [`Client`]. See [`ClientBuilder`]. 31062 -
client_config.rs 2405 -
crypto.rs 1362 -
extension -
extension.rs 1643 -
external_client -
external_client.rs 5593 -
grease.rs 7449 -
group -
hash_reference.rs 5051 -
identity -
identity.rs 6206 -
iter.rs 2223 -
key_package -
lib.rs An implementation of the [IETF Messaging Layer Security](https://messaginglayersecurity.rocks) end-to-end encryption (E2EE) protocol. ## What is MLS? MLS is a new IETF end-to-end encryption standard that is designed to provide transport agnostic, asynchronous, and highly performant communication between a group of clients. ## MLS Protocol Features - Multi-party E2EE [group evolution](https://www.rfc-editor.org/rfc/rfc9420.html#name-cryptographic-state-and-evo) via a propose-then-commit mechanism. - Asynchronous by design with pre-computed [key packages](https://www.rfc-editor.org/rfc/rfc9420.html#name-key-packages), allowing members to be added to a group while offline. - Customizable credential system with built in support for X.509 certificates. - [Extension system](https://www.rfc-editor.org/rfc/rfc9420.html#name-extensions) allowing for application specific data to be negotiated via the protocol. - Strong forward secrecy and post compromise security. - Crypto agility via support for multiple [cipher suites](https://www.rfc-editor.org/rfc/rfc9420.html#name-cipher-suites). - Pre-shared key support. - Subgroup branching. - Group reinitialization for breaking changes such as protocol upgrades. ## Features - Easy to use client interface that can manage multiple MLS identities and groups. - 100% RFC 9420 conformance with support for all default credential, proposal, and extension types. - Support for WASM builds. - Configurable storage for key packages, secrets and group state via traits along with provided "in memory" and SQLite implementations. - Support for custom user proposal and extension types. - Ability to create user defined credentials with custom validation routines that can bridge to existing credential schemes. - OpenSSL and Rust Crypto based cipher suite implementations. - Crypto agility with support for user defined cipher suite. - Extensive test suite including security and interop focused tests against pre-computed test vectors. ## Crypto Providers For cipher suite descriptions see the RFC documentation [here](https://www.rfc-editor.org/rfc/rfc9420.html#name-mls-cipher-suites) | Name | Cipher Suites | X509 Support | |------|---------------|--------------| | OpenSSL | 1-7 | Stable | | AWS-LC | 1,2,3,5,7 | Stable | | Rust Crypto | 1,2,3 | ⚠️ Experimental | ## Security Notice This library has been validated for conformance to the RFC 9420 specification but has not yet received a full security audit by a 3rd party. 7244 -
map.rs 3211 -
message.rs 0 -
psk -
psk.rs 6265 -
signer.rs 10995 -
storage_provider -
storage_provider.rs 424 -
test_utils -
tree_kem -