Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/42loco42/exmls
Elixir implementation of the MLS protocol
https://github.com/42loco42/exmls
e2ee elixir elixir-library end-to-end-encryption message-layer-security mls
Last synced: about 2 months ago
JSON representation
Elixir implementation of the MLS protocol
- Host: GitHub
- URL: https://github.com/42loco42/exmls
- Owner: 42LoCo42
- License: agpl-3.0
- Archived: true
- Created: 2023-10-11T11:12:27.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-15T15:46:07.000Z (10 months ago)
- Last Synced: 2024-09-26T14:01:17.044Z (about 2 months ago)
- Topics: e2ee, elixir, elixir-library, end-to-end-encryption, message-layer-security, mls
- Language: Elixir
- Homepage: https://www.rfc-editor.org/rfc/rfc9420
- Size: 183 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- License: LICENSE
Awesome Lists containing this project
README
* NOTE - Abandoned
I don't like Elixir after all, at least not for this kind of project.My new MLS implementation is [[https://github.com/42LoCo42/cmls][CMLS]] (written, like the name suggests, in C).
* ExMLS - MLS in Elixir
This is (or rather, is going to be) an implementation of the
Messaging Layer Security (MLS) Protocol, as defined by the [[https://www.rfc-editor.org/rfc/rfc9420][RFC 9420]].** Why Elixir?
Because I always wanted an excuse to learn the language.
Also, there is currently no MLS implementation for Elixir (2023-10-11).** Current Status
- all types (structs, enums, opaques) of the RFC
- functions for array-based binary trees from [[https://www.rfc-editor.org/rfc/rfc9420#appendix-C][Appendix C]]
- a [[https://github.com/oktaysm/hpke][HPKE library]] connected via [[file:nif/nif.c][NIFs]]** How to use this project
This project is designed to be used with [[https://nixos.org][Nix]] and optionally [[https://github.com/direnv/direnv][direnv]]
(Use [[https://github.com/nix-community/nix-direnv][nix-direnv]] for a faster, persistent devshell).
Enter a development shell automatically with ~direnv allow~ or manually with ~nix develop~.
Run ~just~ to show all tasks:
- ~build~: hermetically builds the final self-contained binary using Nix
- ~check_use~: an internal check, don't use this directly
- ~clean~: remove unused dependencies
- ~docs~: generate HTML and EPUB project documentation
- ~help~: list all tasks
- ~run~: run the project in the development environment
- ~shell~: enter an interactive shell that runs the project
- ~test~: run the full testsuite (some code sanity checks, static analysis, regular & doctests).
Note that the first start of the static analyser will take a long time.
To run a task, run ~just taskname~, e.g. ~just build~.** Ultimate goals
- a complete implementation of MLS, conforming to the RFC
- an example chat client & server using the implementation