mls-spec

Crates.iomls-spec
lib.rsmls-spec
version1.0.5
created_at2025-04-10 22:32:53.063029+00
updated_at2025-09-25 15:07:22.020388+00
descriptionThis crate is a repository of MLS / RFC9420-related data structures.
homepage
repositoryhttps://github.com/OtaK/mls-spec
max_upload_size
id1628999
size237,352
Mathieu Amiot (OtaK)

documentation

https://docs.rs/mls-spec

README

MLS Spec

Crates.io docs.rs

Description

This crate is a repository of MLS / RFC9420-related data structures.

It is designed to be used as a base for implementations, and contains all the wire-format related structures to be able to build a RFC9420-compliant implementation.

Documentation

Here: https://docs.rs/mls-spec

Details

All sensitive pieces of data are wrapped in a SensitiveBytes newtype, which takes care of being zeroization-on-drop and has constant-time equality checks using subtle to make a best-effort attempt at protecting against side-channel attacks.

There's also some definitions for the follwing drafted extensions, enabled by the matching feature:

The following drafts were modified by extrapolating the current status of mls-extensions and the current status of the respective drafts:

  • The following are assumed that they will move from Safe Extensions to a Safe Applications Component and associated cryptographic operations (DeriveExtensionSecret => DeriveApplicationSecret etc)
  • The following assumes that with the disappearance of Safe WireFormats & the introduction of WireFormat negociation through [supported|required]_wire_formats, those drafts will fall back to de facto WireFormats and have been modified in accordance

Please note that all the drafts are semver-excluded.

Additionally, this crate makes use of RustCrypto's tls_codec crate, and has a mls-rs compatibility layer (gated under the mls-rs-compat feature) that allows to transcode mls-spec to mls-rs types and vice-versa.

License

Licensed under either of these:

Commit count: 13

cargo fmt