Snap for 12199973 from 3637628b4bc91b1b5fa8e9badc869eed02c8ecec to 24Q4-release
Change-Id: I19d128fe7aadc2f8865b14d0f00a4f0ff6386796
tree: 37171c22be7a479ee14ae088cff731e91eac1052
- .cargo/
- benches/
- examples/
- src/
- test_utils/
- tests/
- LICENSE ⇨ LICENSE-apache
- .cargo_vcs_info.json
- Android.bp
- Cargo.lock
- Cargo.toml
- cargo_embargo.json
- LICENSE-apache
- LICENSE-mit
- METADATA
- MODULE_LICENSE_APACHE2
- OWNERS
- README.md
- webdriver.json
README.md
mls-rs

An implementation of the IETF Messaging Layer Security 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 via a propose-then-commit mechanism.
- Asynchronous by design with pre-computed 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 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.
- 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
Name | Cipher Suites | X509 Support |
---|
OpenSSL | 1-7 | Stable |
AWS-LC | 1,2,3,5,7 | Stable |
Rust Crypto | 1,2,3 | ⚠️ Experimental |
Web Crypto | ⚠️ Experimental 2,5,7 | Unsupported |
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.
License
This library is licensed under the Apache-2.0 or the MIT License.