File: README.md

package info (click to toggle)
thunderbird 1%3A140.4.0esr-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,609,432 kB
  • sloc: cpp: 7,672,442; javascript: 5,901,613; ansic: 3,898,954; python: 1,413,343; xml: 653,997; asm: 462,286; java: 180,927; sh: 113,489; makefile: 20,460; perl: 14,288; objc: 13,059; yacc: 4,583; pascal: 3,352; lex: 1,720; ruby: 1,222; exp: 762; sql: 715; awk: 580; php: 436; lisp: 430; sed: 70; csh: 10
file content (73 lines) | stat: -rw-r--r-- 3,450 bytes parent folder | download | duplicates (17)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# mls-rs   [![Build Status]][actions] [![Latest Version]][crates.io] [![API Documentation]][docs.rs] [![codecov](https://codecov.io/gh/awslabs/mls-rs/graph/badge.svg?token=6655ESMTZT)](https://codecov.io/gh/awslabs/mls-rs)

[build status]: https://img.shields.io/github/checks-status/awslabs/mls-rs/main
[actions]: https://github.com/awslabs/mls-rs/actions?query=branch%3Amain++
[latest version]: https://img.shields.io/crates/v/mls-rs.svg
[crates.io]: https://crates.io/crates/mls-rs
[api documentation]: https://docs.rs/mls-rs/badge.svg
[docs.rs]: https://docs.rs/mls-rs

<!-- cargo-sync-readme start -->

An implementation of the [IETF Messaging Layer Security](https://messaginglayersecurity.rocks)
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](https://www.rfc-editor.org/rfc/rfc9420.html#name-cryptographic-state-and-evo)
  via a propose-then-commit mechanism.
- Asynchronous by design with pre-computed [key packages](https://www.rfc-editor.org/rfc/rfc9420.html#name-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](https://www.rfc-editor.org/rfc/rfc9420.html#name-extensions)
  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](https://www.rfc-editor.org/rfc/rfc9420.html#name-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](https://www.rfc-editor.org/rfc/rfc9420.html#name-mls-cipher-suites)

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

<!-- cargo-sync-readme end -->

## License

This library is licensed under the Apache-2.0 or the MIT License.