Docs.rs
  • mls-spec-1.0.2
    • mls-spec 1.0.2
    • Docs.rs crate page
    • MIT OR Apache-2.0
    • Links
    • Repository
    • crates.io
    • Source
    • Owners
    • OtaK
    • Dependencies
      • async-trait ^0.1 normal
      • color-eyre ^0.6 normal optional
      • hex ^0.4 normal optional
      • mediatype ^0.19 normal optional
      • miette ^7 normal
      • mls-rs-codec ^0.6 normal optional
      • postcard ^1 normal optional
      • pretty_assertions ^1.4 normal optional
      • serde ^1 normal optional
      • serde_repr ^0.1 normal optional
      • static_assertions ^1.1 normal
      • strum ^0.27 normal
      • subtle ^2.6 normal
      • thiserror ^2 normal
      • tls_codec ^0.4 normal
      • zeroize ^1.8 normal
      • color-eyre ^0.6 dev
      • convert_case ^0.8 dev
      • faster-hex ^0.10 dev
      • libtest-mimic ^0.8 dev
      • pretty_assertions ^1.4 dev
      • serde ^1.0 dev
      • serde_json ^1.0 dev
      • tokio ^1 dev
      • tracing-error ^0.2 dev
      • tracing-subscriber ^0.3 dev
      • js-sys ^0.3 normal
    • Versions
    • 4.84% of the crate is documented
  • Go to latest version
  • Platform
    • i686-pc-windows-msvc
    • i686-unknown-linux-gnu
    • x86_64-apple-darwin
    • x86_64-pc-windows-msvc
    • x86_64-unknown-linux-gnu
  • Feature flags
  • docs.rs
    • About docs.rs
    • Privacy policy
  • Rust
    • Rust website
    • The Book
    • Standard Library API Reference
    • Rust by Example
    • The Cargo Guide
    • Clippy Documentation

Crate mls_spec

mls_spec1.0.2

  • All Items

Sections

  • MLS Spec
    • Description
    • Documentation
    • Details
    • License

Crate Items

  • Modules
  • Structs
  • Enums
  • Traits
  • Type Aliases

Crates

  • mls_spec

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:

  • draft-ietf-mls-extensions @ draft-06
    • mls-extensions has content-advertisement parsing, this pulls an additional dependency (mediatype) with this feature flag: draft-ietf-mls-extensions-content-advertisement-parse. If you do the MIME parsing yourself, you can ignore this flag.
  • draft-mahy-mls-ratchet-tree-options @ draft-01
  • draft-mahy-mls-sd-cwt-credential @ draft-00
  • draft-mularczyk-mls-splitcommit @ draft-00
  • draft-kiefer-mls-light @ draft-02

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)
    • draft-kohbrok-mls-associated-parties @ draft-00++
    • draft-ietf-mls-combiner @ draft-00++
  • 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
    • draft-mahy-mls-semiprivatemessage @ draft-04++
    • draft-pham-mls-additional-wire-formats @ draft-00++

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:

  • Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)

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

Results

Settings
Help
    trait
    mls_spec::AuthenticationServiceDelegate
    Delegate trait for implementors to implement …
    trait method
    mls_spec::AuthenticationServiceDelegate::validate_credential
    &AuthenticationServiceDelegate, &Credential -> Pin<Box<Future>>
No results :(
Try on DuckDuckGo?

Or try looking in one of these:
  • The Rust Reference for technical details about the language.
  • Rust By Example for expository code examples.
  • The Rust Book for introductions to language features and the language itself.
  • Docs.rs for documentation of crates released on crates.io.