Metadata-Version: 2.4
Name: openmls-dave
Version: 0.1.0
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: pytest>=7.0 ; extra == 'dev'
Requires-Dist: pytest-cov>=4.0 ; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21 ; extra == 'dev'
Requires-Dist: maturin-import-hook>=0.3.0 ; extra == 'dev'
Provides-Extra: dev
License-File: LICENSE
Summary: OpenMLS bindings for Discord DAVE protocol implementation
Keywords: discord,encryption,mls,e2ee,sframe,voice,crypto,dave,openmls
License: MIT
Requires-Python: >=3.11
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM

# openmls_dave
My own implementation of [Discord Audio & Video End-to-End Encryption (DAVE) Protocol](https://daveprotocol.com/)
, using [OpenMLS](https://openmls.tech/), Python and Rust.

I don't intentionally try to use this mainstream, this project mostly will serve as a learning
experience with Rust, and OpenMLS.

This uses [uv](https://github.com/astral-sh/uv) extensively, and uses [ty](https://github.com/astral-sh/ty) to typecheck. 
This also uses maturin to compile Rust bindings, alongside PyO3 to interface with the py/pyi code.

~~(Admittedly, because of how my computer was setup I had to redo git credentials and I somehow nuked commit times
for the first three commits after initial, but I digress)~~

This also uses black and isort for coding style.

There's no official documentation yet; this is a WIP (whenever I have time available)
(I still need to look into DAVE's voice opcodes, etc.), and this README.md will be redone
(eventually)

However, installation of this library is:

```bash
pip install openmls_dave
```

## Features

- MLS (RFC 9420) group key agreement
- SFrame media encryption
- Forward secrecy on membership changes
- Full type hints (via .pyi)

