A Python implementation of the Extended Triple Diffie-Hellman key agreement protocol.
Install the latest release using pip (pip install X3DH
) or manually from source by running pip install .
in the cloned repository.
In the X3DH specification, the identity key is a Curve25519/Curve448 key and XEdDSA is used to create signatures with it. This library does not support Curve448, however, it supports Ed25519 in addition to Curve25519. You can choose whether the public part of the identity key in the bundle is transferred as Curve25519 or Ed25519. Refer to the documentation for details.
python-x3dh uses pytest as its testing framework, mypy for static type checks and both pylint and Flake8 for linting. All tests/checks can be run locally with the following commands:
$ pip install --upgrade pytest pytest-asyncio pytest-cov mypy pylint flake8 setuptools
$ mypy --strict x3dh/ setup.py tests/
$ pylint x3dh/ setup.py tests/
$ flake8 x3dh/ setup.py tests/
$ pytest --cov=x3dh --cov-report term-missing:skip-covered
View the documentation on readthedocs.io or build it locally, which requires the Python packages listed in docs/requirements.txt
. With all dependencies installed, run make html
in the docs/
directory. You can find the generated documentation in docs/_build/html/
.