Metadata-Version: 2.1
Name: rust_x3dh
Version: 0.0.4
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
License-File: LICENSE
Summary: Embeded the xxxdh, which iplementation of the Extended Triple Diffie-Hellman key exchange protocol written in Rust, on Python. xxxdh is written by Olexander Yermakov.
Keywords: crypto,cryptography,x3dh
Author: Klaus Wong <wch.klaus@gmail.com>
Author-email: Klaus Wong <wch.klaus@gmail.com>
License: MIT
Requires-Python: >=3.8
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://github.com/hkk97/rust_x3dh

# Rust-X3DH

Embeded the [xxxdh](https://github.com/alexyer/xxxdh/tree/master), which iplementation of the Extended Triple Diffie-Hellman key exchange protocol written in Rust, on Python. [xxxdh](https://github.com/alexyer/xxxdh/tree/master) is written by [Olexander Yermakov](https://github.com/alexyer).

Implementation is close to the [Signal Spec](https://signal.org/docs/specifications/x3dh/), but Ristretto point Curve25519 used as a *curve* for the default implementation. Though underlying algorithms could be changed fairly easily.

## Usage

```python
//! Basic example.

from rust_x3dh import x3dh_ser

u1_shared_secret_key, u2_shared_secret_key = x3dh_ser.gen_3xdh_secrets_key_pairs()

print(f"[u1_shared_secret_key]:{u1_shared_secret_key}")
print(f"[u2_shared_secret_key]:{u2_shared_secret_key}")
```

