OpenMLS is a Rust implementation of the Messaging Layer Security (MLS) protocol, as specified in RFC 9420.
It is a software library that can serve as a building block in applications that require end-to-end encryption of messages. It has a safe and easy-to-use interface that hides the complexity of the underlying cryptographic operations.
- MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519 (MTI)
- MLS_128_DHKEMP256_AES128GCM_SHA256_P256
- MLS_128_DHKEMX25519_CHACHA20POLY1305_SHA256_Ed25519
OpenMLS is built and tested on the Github CI for the following rust targets.
- x86_64-unknown-linux-gnu
- i686-unknown-linux-gnu
- x86_64-pc-windows-msvc
- i686-pc-windows-msvc
- x86_64-apple-darwin
The Github CI also builds (but doesn't test) the following rust targets.
- aarch64-apple-darwin
- aarch64-unknown-linux-gnu
- aarch64-linux-android
- aarch64-apple-ios
- aarch64-apple-ios-sim
- wasm32-unknown-unknown
- armv7-linux-androideabi
- x86_64-linux-android
- i686-linux-android
OpenMLS supports 32 bit platforms and above.
OpenMLS does not implement its own cryptographic primitives. Instead, it relies on existing implementations of the cryptographic primitives used by MLS. There are two different cryptography providers implemented right now. But consumers can bring their own implementation. See traits for more details.
OpenMLS provides the following features
- extensions-draft-08: enable features defined in MLS extensions draft-08
- fork-resolution: helper functionality for resolving forks.
- js: enable compilation to wasm
Developer features
- libcrux-provider: enable the libcrux crypto provider dependency
- libcrux-provider-js: enable the libcrux crypto provider with support for compiling to wasm
- openmls_rust_crypto: enable the rust crypto provider
- sqlite-provider: enable the sqlite provider
- backtrace: enable backtraces
- content-debug: allow printing sensitive content of messages for debugging
- crypto-debug: allow printing cryptographic key material for debugging
- test-util: test utilities
For more details when working on OpenMLS itself please see the Developer.md.
OpenMLS is maintained and developed by Phoenix R&D and Cryspen.
Zulip graciously provides the OpenMLS community with a "Zulip Cloud Standard" tier Zulip instance.