Crate mls_spec

Source
Expand description

§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:

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:

Modules§

credential
crypto
defs
drafts
group
key_package
key_schedule
messages
mls_rs_compatmls-rs-compat
reexports
tlspltlspl-utils
tree

Structs§

SensitiveBytes
Container that ser/deserializes to TLS Variable-Length bytes and implements zeroizing & constant-time equality checks

Enums§

MlsSpecError

Traits§

AuthenticationServiceDelegate
Delegate trait for implementors to implement spec-compliant validation of credentials with their Authentication Service (MLS AS)
Parsable
Trait that exposes TLS deserialization
Serializable
Trait that exposes TLS serialization
ToPrefixedLabel
This trait allows implementers to automatically get a MLS-specific representation that takes in account protocol versions and the label format.

Type Aliases§

MlsSpecResult