About this project

This repository provides a Dart package that wraps the OpenMLS Rust library, delivering the Messaging Layer Security (MLS) protocol (RFC 9420) for scalable, end‑to‑end encrypted group messaging. It leverages TreeKEM for efficient group key agreement, forward secrecy, and post‑compromise security. The library supports both classic and experimental post‑quantum ciphersuites, including hybrid and pure lattice‑based options. All MLS state is encrypted at rest using SQLCipher on native platforms and Web Crypto AES‑256‑GCM on WebAssembly, with the encryption key stored in platform‑secure storage. It is optimized for Flutter apps and works on Android, iOS, macOS, Linux, Windows, and the web (via dart2js). The package includes a full group lifecycle API (create, join, add/remove members, proposals, commits), credential handling (basic and X.509), and easy integration via a simple `MlsEngine` interface. Developers can generate key packages, manage groups, encrypt/decrypt application messages, and export secrets while keeping the underlying Rust implementation hidden. The build system automatically downloads pre‑compiled native libraries, so no local Rust toolchain is required for end users. Known limitations include lack of support for the dart2wasm target on the web and occasional build‑hook skips during Flutter runs, which can be mitigated by running a full `flutter build web` or cleaning the build stamp. This library is ideal for building secure, cross‑platform messaging solutions that need robust group encryption and post‑quantum readiness.