Skip to content

An implementation of Messaging Layer Security (RFC 9420)

License

Notifications You must be signed in to change notification settings

towns-protocol/mls-rs

This branch is 28 commits behind awslabs/mls-rs:main.

Folders and files

NameName
Last commit message
Last commit date
Oct 23, 2024
Mar 21, 2024
Sep 19, 2024
Oct 23, 2024
Oct 18, 2024
Aug 2, 2024
Aug 2, 2024
Aug 2, 2024
Oct 23, 2024
Aug 2, 2024
Oct 23, 2024
Oct 23, 2024
Oct 23, 2024
Oct 24, 2024
Oct 23, 2024
Oct 23, 2024
Apr 23, 2024
Nov 6, 2023
Nov 6, 2023
Apr 23, 2024
Oct 12, 2023
Oct 12, 2023
Nov 8, 2023
Mar 5, 2024

Repository files navigation

mls-rs   Build Status Latest Version API Documentation codecov

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
CryptoKit 1,2,3,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.

About

An implementation of Messaging Layer Security (RFC 9420)

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 97.6%
  • Swift 2.1%
  • Other 0.3%